![機(jī)器學(xué)習(xí)算法一覽_第1頁](http://file4.renrendoc.com/view/2b1f389462f8d61fa0acec4587254aa0/2b1f389462f8d61fa0acec4587254aa01.gif)
![機(jī)器學(xué)習(xí)算法一覽_第2頁](http://file4.renrendoc.com/view/2b1f389462f8d61fa0acec4587254aa0/2b1f389462f8d61fa0acec4587254aa02.gif)
![機(jī)器學(xué)習(xí)算法一覽_第3頁](http://file4.renrendoc.com/view/2b1f389462f8d61fa0acec4587254aa0/2b1f389462f8d61fa0acec4587254aa03.gif)
![機(jī)器學(xué)習(xí)算法一覽_第4頁](http://file4.renrendoc.com/view/2b1f389462f8d61fa0acec4587254aa0/2b1f389462f8d61fa0acec4587254aa04.gif)
![機(jī)器學(xué)習(xí)算法一覽_第5頁](http://file4.renrendoc.com/view/2b1f389462f8d61fa0acec4587254aa0/2b1f389462f8d61fa0acec4587254aa05.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
機(jī)器學(xué)習(xí)算法一覽(附python和R代碼)2016-04-19大數(shù)據(jù)文摘大數(shù)據(jù)文摘作品,轉(zhuǎn)載需授權(quán)
編譯:@酒酒
校正:寒小陽
&&
龍心塵摘自:
大數(shù)據(jù)文摘“機(jī)器學(xué)習(xí)”專欄成立啦!歡迎大家留言提出寶貴意見,歡迎投稿給我們。如何加入我們?文章末尾有說明:)
◆
◆
◆“谷歌的無人車和機(jī)器人得到了很多關(guān)注,但我們真正的未來卻在于能夠使電腦變得更聰明,更人性化的技術(shù),機(jī)器學(xué)習(xí)?!?/p>
——
埃里克施密特(谷歌首席執(zhí)行官)◆
◆
◆當(dāng)計(jì)算從大型計(jì)算機(jī)轉(zhuǎn)移至個(gè)人電腦再轉(zhuǎn)移到云的今天,我們可能正處于人類歷史上最關(guān)鍵的時(shí)期。之所以關(guān)鍵,并不是因?yàn)橐呀?jīng)取得的成就,而是未來幾年里我們即將要獲得的進(jìn)步和成就。對(duì)我來說,如今最令我激動(dòng)的就是計(jì)算技術(shù)和工具的普及,從而帶來了計(jì)算的春天。作為一名數(shù)據(jù)科學(xué)家,我可以建造一個(gè)數(shù)據(jù)處理系統(tǒng)來進(jìn)行復(fù)雜的算法運(yùn)算,這樣每小時(shí)能賺幾美金??墒菍W(xué)習(xí)這些算法卻花了我無數(shù)個(gè)日日夜夜。
那么誰能從這篇文章里收益最多呢?這篇文章有可能是我寫的所有文章里最有價(jià)值的一篇。
寫這篇文章的目的,就是希望它可以讓有志于從事數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)的諸位在學(xué)習(xí)算法的路上少走些路。我會(huì)在文章中舉例一些機(jī)器學(xué)習(xí)的問題,你們也可以在思考解決這些問題的過程中得到啟發(fā)。我也會(huì)寫下對(duì)于各種機(jī)器學(xué)習(xí)算法的一些個(gè)人理解,并且提供R和Python的執(zhí)行代碼。讀完這篇文章,讀者們至少可以行動(dòng)起來親手試試寫一個(gè)機(jī)器學(xué)習(xí)的程序。
不過,這篇文章并沒有闡述這些算法背后的統(tǒng)計(jì)學(xué)原理,有時(shí)候從實(shí)踐入手也是很好的學(xué)習(xí)路徑。如果你希望了解的是這些統(tǒng)計(jì)學(xué)原理,那么這篇文章的內(nèi)容可能并不適合你。
一般說來,機(jī)器學(xué)習(xí)有三種算法:1.監(jiān)督式學(xué)習(xí)監(jiān)督式學(xué)習(xí)算法包括一個(gè)目標(biāo)變量(因變量)和用來預(yù)測目標(biāo)變量的預(yù)測變量(自變量)。通過這些變量我們可以搭建一個(gè)模型,從而對(duì)于一個(gè)已知的預(yù)測變量值,我們可以得到對(duì)應(yīng)的目標(biāo)變量值。重復(fù)訓(xùn)練這個(gè)模型,直到它能在訓(xùn)練數(shù)據(jù)集上達(dá)到預(yù)定的準(zhǔn)確度。
屬于監(jiān)督式學(xué)習(xí)的算法有:回歸模型,決策樹,隨機(jī)森林,K鄰近算法,邏輯回歸等。
2.無監(jiān)督式學(xué)習(xí)與監(jiān)督式學(xué)習(xí)不同的是,無監(jiān)督學(xué)習(xí)中我們沒有需要預(yù)測或估計(jì)的目標(biāo)變量。無監(jiān)督式學(xué)習(xí)是用來對(duì)總體對(duì)象進(jìn)行分類的。它在根據(jù)某一指標(biāo)將客戶分類上有廣泛應(yīng)用。
屬于無監(jiān)督式學(xué)習(xí)的算法有:關(guān)聯(lián)規(guī)則,K-means聚類算法等。
3.強(qiáng)化學(xué)習(xí)這個(gè)算法可以訓(xùn)練程序做出某一決定。程序在某一情況下嘗試所有的可能行動(dòng),記錄不同行動(dòng)的結(jié)果并試著找出最好的一次嘗試來做決定。
屬于這一類算法的有馬爾可夫決策過程。
常見的機(jī)器學(xué)習(xí)算法以下是最常用的機(jī)器學(xué)習(xí)算法,大部分?jǐn)?shù)據(jù)問題都可以通過它們解決:1.線性回歸(LinearRegression)2.邏輯回歸(LogisticRegression)3.決策樹(DecisionTree)4.支持向量機(jī)(SVM)5.樸素貝葉斯(NaiveBayes)6.K鄰近算法(KNN)7.K-均值算法(K-means)8.隨機(jī)森林(RandomForest)9.降低維度算法(DimensionalityReductionAlgorithms)10.GradientBoost和Adaboost算法1.線性回歸(LinearRegression)線性回歸是利用連續(xù)性變量來估計(jì)實(shí)際數(shù)值(例如房價(jià),呼叫次數(shù)和總銷售額等)。我們通過線性回歸算法找出自變量和因變量間的最佳線性關(guān)系,圖形上可以確定一條最佳直線。這條最佳直線就是回歸線。這個(gè)回歸關(guān)系可以用Y=aX+b表示。
我們可以假想一個(gè)場景來理解線性回歸。比如你讓一個(gè)五年級(jí)的孩子在不問同學(xué)具體體重多少的情況下,把班上的同學(xué)按照體重從輕到重排隊(duì)。這個(gè)孩子會(huì)怎么做呢?他有可能會(huì)通過觀察大家的身高和體格來排隊(duì)。這就是線性回歸!這個(gè)孩子其實(shí)是認(rèn)為身高和體格與人的體重有某種相關(guān)。而這個(gè)關(guān)系就像是前一段的Y和X的關(guān)系。
在Y=aX+b這個(gè)公式里:Y-因變量a-斜率X-自變量b-截距
a和b可以通過最小化因變量誤差的平方和得到(最小二乘法)。
下圖中我們得到的線性回歸方程是y=0.2811X+13.9。通過這個(gè)方程,我們可以根據(jù)一個(gè)人的身高得到他的體重信息。
線性回歸主要有兩種:一元線性回歸和多元線性回歸。一元線性回歸只有一個(gè)自變量,而多元線性回歸有多個(gè)自變量。擬合多元線性回歸的時(shí)候,可以利用多項(xiàng)式回歸(PolynomialRegression)或曲線回歸(CurvilinearRegression)。Python代碼#ImportLibrary#Importothernecessarylibrarieslikepandas,numpy...fromsklearnimportlinear_model#LoadTrainandTestdatasets#Identifyfeatureandresponsevariable(s)andvaluesmustbenumericandnumpyarraysx_train=input_variables_values_training_datasetsy_train=target_variables_values_training_datasetsx_test=input_variables_values_test_datasets#Createlinearregressionobjectlinear=linear_model.LinearRegression()#Trainthemodelusingthetrainingsetsandcheckscorelinear.fit(x_train,y_train)linear.score(x_train,y_train)#EquationcoefficientandInterceptprint('Coefficient:\n',linear.coef_)print('Intercept:\n',ercept_)#PredictOutputpredicted=linear.predict(x_test)R代碼#LoadTrainandTestdatasets#Identifyfeatureandresponsevariable(s)andvaluesmustbenumericandnumpyarraysx_train<-input_variables_values_training_datasetsy_train<-target_variables_values_training_datasetsx_test<-input_variables_values_test_datasetsx<-cbind(x_train,y_train)#Trainthemodelusingthetrainingsetsandcheckscorelinear<-lm(y_train~.,data=x)summary(linear)#PredictOutputpredicted=predict(linear,x_test)
2.邏輯回歸別被它的名字迷惑了,邏輯回歸其實(shí)是一個(gè)分類算法而不是回歸算法。通常是利用已知的自變量來預(yù)測一個(gè)離散型因變量的值(像二進(jìn)制值0/1,是/否,真/假)。簡單來說,它就是通過擬合一個(gè)邏輯函數(shù)(logitfuction)來預(yù)測一個(gè)事件發(fā)生的概率。所以它預(yù)測的是一個(gè)概率值,自然,它的輸出值應(yīng)該在0到1之間。
同樣,我們可以用一個(gè)例子來理解這個(gè)算法。
假設(shè)你的一個(gè)朋友讓你回答一道題。可能的結(jié)果只有兩種:你答對(duì)了或沒有答對(duì)。為了研究你最擅長的題目領(lǐng)域,你做了各種領(lǐng)域的題目。那么這個(gè)研究的結(jié)果可能是這樣的:如果是一道十年級(jí)的三角函數(shù)題,你有70%的可能性能解出它。但如果是一道五年級(jí)的歷史題,你會(huì)的概率可能只有30%。邏輯回歸就是給你這樣的概率結(jié)果。
回到數(shù)學(xué)上,事件結(jié)果的勝算對(duì)數(shù)(logodds)可以用預(yù)測變量的線性組合來描述:odds=p/(1-p)=probabilityofeventoccurrence/probabilityofnoteventoccurrenceln(odds)=ln(p/(1-p))logit(p)=ln(p/(1-p))=b0+b1X1+b2X2+b3X3....+bkXk
在這里,p是我們感興趣的事件出現(xiàn)的概率。它通過篩選出特定參數(shù)值使得觀察到的樣本值出現(xiàn)的概率最大化,來估計(jì)參數(shù),而不是像普通回歸那樣最小化誤差的平方和。
你可能會(huì)問為什么需要做對(duì)數(shù)呢?簡單來說這是重復(fù)階梯函數(shù)的最佳方法。因本篇文章旨不在此,這方面就不做詳細(xì)介紹了。Python代碼#ImportLibraryfromsklearn.linear_modelimportLogisticRegression#Assumedyouhave,X(predictor)andY(target)fortrainingdatasetandx_test(predictor)oftest_dataset#Createlogisticregressionobjectmodel=LogisticRegression()#Trainthemodelusingthetrainingsetsandcheckscoremodel.fit(X,y)model.score(X,y)#EquationcoefficientandInterceptprint('Coefficient:\n',model.coef_)print('Intercept:\n',ercept_)#PredictOutputpredicted=model.predict(x_test)R代碼x<-cbind(x_train,y_train)#Trainthemodelusingthetrainingsetsandcheckscorelogistic<-glm(y_train~.,data=x,family='binomial')summary(logistic)#PredictOutputpredicted=predict(logistic,x_test)
延伸:
以下是一些可以嘗試的優(yōu)化模型的方法:加入交互項(xiàng)(interaction)減少特征變量正則化(regularization)使用非線性模型
3.決策樹這是我最喜歡也是能經(jīng)常使用到的算法。它屬于監(jiān)督式學(xué)習(xí),常用來解決分類問題。令人驚訝的是,它既可以運(yùn)用于類別變量(categoricalvariables)也可以作用于連續(xù)變量。這個(gè)算法可以讓我們把一個(gè)總體分為兩個(gè)或多個(gè)群組。分組根據(jù)能夠區(qū)分總體的最重要的特征變量/自變量進(jìn)行。更詳細(xì)的內(nèi)容可以閱讀這篇文章DecisionTreeSimplified。
從上圖中我們可以看出,總體人群最終在玩與否的事件上被分成了四個(gè)群組。而分組是依據(jù)一些特征變量實(shí)現(xiàn)的。用來分組的具體指標(biāo)有很多,比如Gini,informationGain,Chi-square,entropy。
理解決策樹原理的最好的辦法就是玩Jezzball游戲。這是微軟的一款經(jīng)典游戲(見下圖)。這個(gè)游戲的最終任務(wù)是在一個(gè)有移動(dòng)墻壁的房間里,通過建造墻壁來盡可能地將房間分成盡量大的,沒有小球的空間。
每一次你用建墻來分割房間,其實(shí)就是在將一個(gè)總體分成兩部分。決策樹也是用類似方法將總體分成盡量多的不同組別。延伸閱讀:SimplifiedVersionofDecisionTreeAlgorithms
Python代碼#ImportLibrary#Importothernecessarylibrarieslikepandas,numpy...fromsklearnimporttree#Assumedyouhave,X(predictor)andY(target)fortrainingdatasetandx_test(predictor)oftest_dataset#Createtreeobjectmodel=tree.DecisionTreeClassifier(criterion='gini')#forclassification,hereyoucanchangethealgorithmasginiorentropy(informationgain)bydefaultitisgini
#model=tree.DecisionTreeRegressor()forregression#Trainthemodelusingthetrainingsetsandcheckscoremodel.fit(X,y)model.score(X,y)#PredictOutputpredicted=model.predict(x_test)R代碼library(rpart)x<-cbind(x_train,y_train)#growtreefit<-rpart(y_train~.,data=x,method="class")summary(fit)#PredictOutputpredicted=predict(fit,x_test)
4.支持向量機(jī)(SVM)這是一個(gè)分類算法。在這個(gè)算法中我們將每一個(gè)數(shù)據(jù)作為一個(gè)點(diǎn)在一個(gè)n維空間上作圖(n是特征數(shù)),每一個(gè)特征值就代表對(duì)應(yīng)坐標(biāo)值的大小。比如說我們有兩個(gè)特征:一個(gè)人的身高和發(fā)長。我們可以將這兩個(gè)變量在一個(gè)二維空間上作圖,圖上的每個(gè)點(diǎn)都有兩個(gè)坐標(biāo)值(這些坐標(biāo)軸也叫做支持向量)。
現(xiàn)在我們要在圖中找到一條直線能最大程度將不同組的點(diǎn)分開。兩組數(shù)據(jù)中距離這條線最近的點(diǎn)到這條線的距離都應(yīng)該是最遠(yuǎn)的。
在上圖中,黑色的線就是最佳分割線。因?yàn)檫@條線到兩組中距它最近的點(diǎn),點(diǎn)A和B的距離都是最遠(yuǎn)的。任何其他線必然會(huì)使得到其中一個(gè)點(diǎn)的距離比這個(gè)距離近。這樣根據(jù)數(shù)據(jù)點(diǎn)分布在這條線的哪一邊,我們就可以將數(shù)據(jù)歸類。更多閱讀:SimplifiedVersionofSupportVectorMachine
我們可以把這個(gè)算法想成n維空間里的JezzBall游戲,不過有一些變動(dòng):你可以以任何角度畫分割線/分割面(經(jīng)典游戲中只有垂直和水平方向)?,F(xiàn)在這個(gè)游戲的目的是把不同顏色的小球分到不同空間里。小球是不動(dòng)的。Python代碼#ImportLibraryfromsklearnimportsvm#Assumedyouhave,X(predictor)andY(target)fortrainingdatasetandx_test(predictor)oftest_dataset#CreateSVMclassificationobjectmodel=svm.svc()#thereisvariousoptionassociatedwithit,thisissimpleforclassification.Youcanreferlink,formo#redetail.#Trainthemodelusingthetrainingsetsandcheckscoremodel.fit(X,y)model.score(X,y)#PredictOutputpredicted=model.predict(x_test)R代碼library(e1071)x<-cbind(x_train,y_train)#Fittingmodelfit<-svm(y_train~.,data=x)summary(fit)#PredictOutputpredicted=predict(fit,x_test)
5.樸素貝葉斯這個(gè)算法是建立在貝葉斯理論上的分類方法。它的假設(shè)條件是自變量之間相互獨(dú)立。簡言之,樸素貝葉斯假定某一特征的出現(xiàn)與其它特征無關(guān)。比如說,如果一個(gè)水果它是紅色的,圓狀的,直徑大概7cm左右,我們可能猜測它為蘋果。即使這些特征之間存在一定關(guān)系,在樸素貝葉斯算法中我們都認(rèn)為紅色,圓狀和直徑在判斷一個(gè)水果是蘋果的可能性上是相互獨(dú)立的。
樸素貝葉斯的模型易于建造,并且在分析大量數(shù)據(jù)問題時(shí)效率很高。雖然模型簡單,但很多情況下工作得比非常復(fù)雜的分類方法還要好。
貝葉斯理論告訴我們?nèi)绾螐南闰?yàn)概率P(c),P(x)和條件概率P(x|c)中計(jì)算后驗(yàn)概率P(c|x)。算法如下:
P(c|x)是已知特征x而分類為c的后驗(yàn)概率。P(c)是種類c的先驗(yàn)概率。P(x|c)是種類c具有特征x的可能性。P(x)是特征x的先驗(yàn)概率。
例子:
以下這組訓(xùn)練集包括了天氣變量和目標(biāo)變量“是否出去玩”。我們現(xiàn)在需要根據(jù)天氣情況將人們分為兩組:玩或不玩。整個(gè)過程按照如下步驟進(jìn)行:
步驟1:根據(jù)已知數(shù)據(jù)做頻率表步驟2:計(jì)算各個(gè)情況的概率制作概率表。比如陰天(Overcast)的概率為0.29,此時(shí)玩的概率為0.64.
步驟3:用樸素貝葉斯計(jì)算每種天氣情況下玩和不玩的后驗(yàn)概率。概率大的結(jié)果為預(yù)測值。
提問:
天氣晴朗的情況下(sunny),人們會(huì)玩。這句陳述是否正確?我們可以用上述方法回答這個(gè)問題。P(Yes|Sunny)=P(Sunny|Yes)*P(Yes)/P(Sunny)。
這里,P(Sunny|Yes)=3/9=0.33,P(Sunny)=5/14=0.36,P(Yes)=9/14=0.64。那么,P(Yes|Sunny)=0.33*0.64/0.36=0.60>0.5,說明這個(gè)概率值更大。
當(dāng)有多種類別和多種特征時(shí),預(yù)測的方法相似。樸素貝葉斯通常用于文本分類和多類別分類問題。Python代碼#ImportLibraryfromsklearn.naive_bayesimportGaussianNB#Assumedyouhave,X(predictor)andY(target)fortrainingdatasetandx_test(predictor)oftest_dataset#CreateSVMclassificationobjectmodel=GaussianNB()#thereisotherdistributionformultinomialclasseslikeBernoulliNaiveBayes,Referlink#Trainthemodelusingthetrainingsetsandcheckscoremodel.fit(X,y)#PredictOutputpredicted=model.predict(x_test)R代碼library(e1071)x<-cbind(x_train,y_train)#Fittingmodelfit<-naiveBayes(y_train~.,data=x)summary(fit)#PredictOutputpredicted=predict(fit,x_test)
6.KNN(K-鄰近算法)這個(gè)算法既可以解決分類問題,也可以用于回歸問題,但工業(yè)上用于分類的情況更多。KNN先記錄所有已知數(shù)據(jù),再利用一個(gè)距離函數(shù),找出已知數(shù)據(jù)中距離未知事件最近的K組數(shù)據(jù),最后按照這K組數(shù)據(jù)里最常見的類別預(yù)測該事件。
距離函數(shù)可以是歐式距離,曼哈頓距離,閔氏距離(MinkowskiDistance),和漢明距離(HammingDistance)。前三種用于連續(xù)變量,漢明距離用于分類變量。如果K=1,那問題就簡化為根據(jù)最近的數(shù)據(jù)分類。K值的選取時(shí)常是KNN建模里的關(guān)鍵。
KNN在生活中的運(yùn)用很多。比如,如果你想了解一個(gè)不認(rèn)識(shí)的人,你可能就會(huì)從這個(gè)人的好朋友和圈子中了解他的信息。
在用KNN前你需要考慮到:KNN的計(jì)算成本很高所有特征應(yīng)該標(biāo)準(zhǔn)化數(shù)量級(jí),否則數(shù)量級(jí)大的特征在計(jì)算距離上會(huì)有偏移。在進(jìn)行KNN前預(yù)處理數(shù)據(jù),例如去除異常值,噪音等。Python代碼#ImportLibraryfromsklearn.neighborsimportKNeighborsClassifier#Assumedyouhave,X(predictor)andY(target)fortrainingdatasetandx_test(predictor)oftest_dataset#CreateKNeighborsclassifierobjectmodelKNeighborsClassifier(n_neighbors=6)#defaultvalueforn_neighborsis5#Trainthemodelusingthetrainingsetsandcheckscoremodel.fit(X,y)#PredictOutputpredicted=model.predict(x_test)R代碼library(knn)x<-cbind(x_train,y_train)#Fittingmodelfit<-knn(y_train~.,data=x,k=5)summary(fit)#PredictOutputpredicted=predict(fit,x_test)
7.K均值算法(K-Means)這是一種解決聚類問題的非監(jiān)督式學(xué)習(xí)算法。這個(gè)方法簡單地利用了一定數(shù)量的集群(假設(shè)K個(gè)集群)對(duì)給定數(shù)據(jù)進(jìn)行分類。同一集群內(nèi)的數(shù)據(jù)點(diǎn)是同類的,不同集群的數(shù)據(jù)點(diǎn)不同類。
還記得你是怎樣從墨水漬中辨認(rèn)形狀的么?K均值算法的過程類似,你也要通過觀察集群形狀和分布來判斷集群數(shù)量!
K均值算法如何劃分集群:從每個(gè)集群中選取K個(gè)數(shù)據(jù)點(diǎn)作為質(zhì)心(centroids)。將每一個(gè)數(shù)據(jù)點(diǎn)與距離自己最近的質(zhì)心劃分在同一集群,即生成K個(gè)新集群。找出新集群的質(zhì)心,這樣就有了新的質(zhì)心。重復(fù)2和3,直到結(jié)果收斂,即不再有新的質(zhì)心出現(xiàn)。
怎樣確定K的值:如果我們?cè)诿總€(gè)集群中計(jì)算集群中所有點(diǎn)到質(zhì)心的距離平方和,再將不同集群的距離平方和相加,我們就得到了這個(gè)集群方案的總平方和。
我們知道,隨著集群數(shù)量的增加,總平方和會(huì)減少。但是如果用總平方和對(duì)K作圖,你會(huì)發(fā)現(xiàn)在某個(gè)K值之前總平方和急速減少,但在這個(gè)K值之后減少的幅度大大降低,這個(gè)值就是最佳的集群數(shù)。Python代碼#ImportLibraryfromsklearn.clusterimportKMeans#Assumedyouhave,X(attributes)fortrainingdatasetandx_test(attributes)oftest_dataset#CreateKNeighborsclassifierobjectmodelk_means=KMeans(n_clusters=3,random_state=0)#Trainthemodelusingthetrainingsetsandcheckscoremodel.fit(X)#PredictOutputpredicted=model.predict(x_test)R代碼library(cluster)fit<-kmeans(X,3)#5clustersolution
8.隨機(jī)森林隨機(jī)森林是對(duì)決策樹集合的特有名稱。隨機(jī)森林里我們有多個(gè)決策樹(所以叫“森林”)。為了給一個(gè)新的觀察值分類,根據(jù)它的特征,每一個(gè)決策樹都會(huì)給出一個(gè)分類。隨機(jī)森林算法選出投票最多的分類作為分類結(jié)果。
怎樣生成決策樹:如果訓(xùn)練集中有N種類別,則有重復(fù)地隨機(jī)選取N個(gè)樣本。這些樣本將組成培養(yǎng)決策樹的訓(xùn)練集。如果有M個(gè)特征變量,那么選取數(shù)m<<M,從而在每個(gè)節(jié)點(diǎn)上隨機(jī)選取m個(gè)特征變量來分割該節(jié)點(diǎn)。m在整個(gè)森林養(yǎng)成中保持不變。每個(gè)決策樹都最大程度上進(jìn)行分割,沒有剪枝。
比較決策樹和調(diào)節(jié)模型參數(shù)可以獲取更多該算法細(xì)節(jié)。我建議讀者閱讀這些文章:IntroductiontoRandomforest–SimplifiedComparingaCARTmodeltoRandomForest(Part1)ComparingaRandomForesttoaCARTmodel(Part2)TuningtheparametersofyourRandomForestmodelPython代碼#ImportLibraryfromsklearn.ensembleimportRandomForestClassifier#Assumedyouhave,X(predictor)andY(target)fortrainingdatasetandx_test(predictor)oftest_dataset#CreateRandomForestobjectmodel=RandomForestClassifier()#Trainthemodelusingthetrainingsetsandcheckscoremodel.fit(X,y)#PredictOutputpredicted=model.predict(x_test)R代碼library(randomForest)x<-cbind(x_train,y_train)#Fittingmodelfit<-randomForest(Species~.,x,ntree=500)summary(fit)#PredictOutputpredicted=predict(fit,x_test)
9.降維算法(DimensionalityReductionAlgorithms)在過去的4-5年里,可獲取的數(shù)據(jù)幾乎以指數(shù)形式增長。公司/政府機(jī)構(gòu)/研究組織不僅有了更多的數(shù)據(jù)來源,也獲得了更多維度的數(shù)據(jù)信息。
例如:電子商務(wù)公司有了顧客更多的細(xì)節(jié)信息,像個(gè)人信息,網(wǎng)絡(luò)瀏覽歷史,個(gè)人喜惡,購買記錄,反饋信息等,他們關(guān)注你的私人特征,比你天天去的超市里的店員更了解你。
作為一名數(shù)據(jù)科學(xué)家,我們手上的數(shù)據(jù)有非常多的特征。雖然這聽起來有利于建立更強(qiáng)大精準(zhǔn)的模型,但它們有時(shí)候反倒也是建模中的一大難題。怎樣才能從1000或2000個(gè)變量里找到最重要的變量呢?這種情況下降維算法及其他算法,如決策樹,隨機(jī)森林,PCA,因子分析,相關(guān)矩陣,和缺省值比例等,就能幫我們解決難題。
進(jìn)一步的了解可以閱讀BeginnersGuideToLearnDimensionReductionTechniques。
Python代碼更多信息在這里#ImportLibraryfromsklearnimportdecomposition#Assumedyouhavetrainingandtestdatasetastrainandtest#CreatePCAobejectpca=decomposition.PCA(n_components=k)#defaultvalueofk=min(n_sample,n_features)#ForFactoranalysis#fa=decomposition.FactorAnalysis()#ReducedthedimensionoftrainingdatasetusingPCAtrain_reduced=pca.fit_transform(train)#Reducedthedimensionoftestdatasettest_reduced=pca.transform(test)R代碼library(stat
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年雙方房產(chǎn)購置策劃協(xié)議書
- 2025年停車場安全管理合同模板
- 2025年企業(yè)員工食堂經(jīng)營合同
- 2025年上海餐飲股權(quán)轉(zhuǎn)讓合同范文
- 2025年度項(xiàng)目申請(qǐng)盡職調(diào)查服務(wù)協(xié)議樣本
- 2025年冷鏈貨物運(yùn)輸服務(wù)協(xié)議樣本
- 2025年共營項(xiàng)目合作協(xié)議
- 2025年企業(yè)宣傳冊(cè)印刷合同樣本
- 2025年智能鎖銷售合同協(xié)議
- 2025年安徽貨運(yùn)叢業(yè)資格證考試題及答案
- 1《挑戰(zhàn)第一次》第1課時(shí) 說課稿 -2023-2024學(xué)年道德與法治二年級(jí)下冊(cè)統(tǒng)編版
- 湖北省十堰市城區(qū)2024-2025學(xué)年九年級(jí)上學(xué)期期末質(zhì)量檢測歷史試題(含答案)
- 2025甘肅省事業(yè)單位聯(lián)考招聘(3141人)高頻重點(diǎn)提升(共500題)附帶答案詳解
- JJF 1176-2024(0~2 300) ℃鎢錸熱電偶校準(zhǔn)規(guī)范
- 地質(zhì)災(zāi)害防治工程施工技術(shù)要點(diǎn)課件
- 防涉黃課件教學(xué)課件
- 家政公司服務(wù)員考試題庫單選題100道及答案解析
- 人工智能:AIGC基礎(chǔ)與應(yīng)用 課件 實(shí)訓(xùn)項(xiàng)目九 使用度加創(chuàng)作工具和剪映進(jìn)行智能化短視頻創(chuàng)作
- 企業(yè)人才招聘與選拔方法論研究
- 《MATLAB編程及應(yīng)用》全套教學(xué)課件
- GB/T 11263-2024熱軋H型鋼和剖分T型鋼
評(píng)論
0/150
提交評(píng)論