r語言之randomforest隨機森林_第1頁
r語言之randomforest隨機森林_第2頁
r語言之randomforest隨機森林_第3頁
r語言之randomforest隨機森林_第4頁
r語言之randomforest隨機森林_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、R 語言之 Random Forest 隨機森林什么是隨機森林? 隨機森林就是通過集成學習的思想將多棵樹集成的一種算 法,它的基本單元是決策樹,而它的本質(zhì)屬于機器學習的一 大分支集成學習( Ensemble Learning )方法。隨機森林 的名稱中有兩個關(guān)鍵詞, 一個是“隨機”,一個就是 “森林” “森林”我們很好理解,一棵叫做樹,那么成百上千棵就可 以叫做森林了,這樣的比喻還是很貼切的,其實這也是隨機 森林的主要思想 -集成思想的體現(xiàn)。隨機森林算法的實質(zhì)是基于決策樹的分類器集成算法,其中 每一棵樹都依賴于一個隨機向量,隨機森林的所有向量都是 獨立同分布的。隨機森林就是對數(shù)據(jù)集的列變量和行

2、觀測進 行隨機化,生成多個分類數(shù),最終將分類樹結(jié)果進行匯總。 隨機森林相比于神經(jīng)網(wǎng)絡(luò),降低了運算量的同時也提高了預 測精度,而且該算法對多元共線性不敏感以及對缺失數(shù)據(jù)和 非平衡數(shù)據(jù)比較穩(wěn)健,可以很好地適應多達幾千個解釋變量 數(shù)據(jù)集。隨機森林的組成 隨機森林是由多個 CART 分類決策樹構(gòu)成, 在構(gòu)建決策樹過 程中,不進行任何剪枝動作,通過隨機挑選觀測(行)和變 量(列)形成每一棵樹。對于分類模型,隨機森林將根據(jù)投 票法為待分類樣本進行分類;對于預測模型,隨機森林將使 用單棵樹的簡單平均值來預測樣本的 Y 值。隨機森林的估計過程1)指定 m 值,即隨機產(chǎn)生 m 個變量用于節(jié)點上的二叉樹, 二叉樹

3、變量的選擇仍然滿足節(jié)點不純度最小原則;2)應用 Bootstrap 自助法在原數(shù)據(jù)集中有放回地隨機抽取k個樣本集,組成 k 棵決策樹,而對于未被抽取的樣本用于單 棵決策樹的預測;3)根據(jù) k 個決策樹組成的隨機森林對待分類樣本進行分類 或預測,分類的原則是投票法,預測的原則是簡單平均。隨機森林的兩個重要參數(shù): 1.樹節(jié)點預選的變量個數(shù): 單棵 決策樹決策樹的情況。 2.隨機森林中樹的個數(shù): 隨機森林的 總體規(guī)模。隨機森林模型評價因素1)每棵樹生長越茂盛,組成森林的分類性能越好;2)每棵樹之間的相關(guān)性越差,或樹之間是獨立的,則森林的分類性能越好。減小特征選擇個數(shù) m,樹的相關(guān)性和分類能力也會相應

4、的降 低;增大m,兩者也會隨之增大。所以關(guān)鍵問題是如何選擇 最優(yōu)的m (或者是范圍),這也是隨機森林唯一的一個參數(shù)。對于分類問題(將某個樣本劃分到某一類) ,也就是離 散變量問題, CART 使用 Gini 值作為評判標準。定義為 Gini=1-刀(P(i)*P(i),P(i)為當前節(jié)點上數(shù)據(jù)集中第i類樣本的比例。例如:分為 2 類,當前節(jié)點上有 100 個樣本,屬于第 一類的樣本有 70 個,屬于第二類的樣本有 30 個,則Gini=1 -0.7 X 07-0.3 X 03=0.42,可以看出,類別分布越平均,Gini 值越大,類分布越不均勻, Gini 值越小。 在尋找最佳的分類特征和閾值

5、時,評判標準為: argmax (Gini-GiniLeft-GiniRight ),即尋找最佳的特征 f 和閾值 th, 使得當前節(jié)點的 Gini 值減去左子節(jié)點的 Gini 和右子節(jié)點的 Gini 值最大。主要函數(shù)R 語言中的 randomForest 包可以實現(xiàn)隨機森林算法的應用, 該包中主要涉及 5 個重要函數(shù),關(guān)于這 5 個函數(shù)的語法和參 數(shù)請見下方:1) randomForest()函數(shù)用于構(gòu)建隨機森林模型 randomForest(formula, data=NULL, ., subset, na.action=na.fail)randomForest(x, y=NULL, xt

6、est=NULL, ytest=NULL, ntree=500,mtry=if (!is.null(y) && !is.factor(y) max(floor(ncol(x)/3), 1) else floor(sqrt(ncol(x), replace=TRUE, classwt=NULL, cutoff, strata, sampsize = if (replace) nrow(x) else ceiling(.632*nrow(x), nodesize = if (!is.null(y) && !is.factor(y) 5 else 1, maxnode

7、s = NULL, importance=FALSE, localImp=FALSE, nPerm=1, proximity, x=proximity, norm.votes=TRUE, do.trace=FALSE, keep.forest=!is.null(y) && is.null(xtest), corr.bias=FALSE, keep.inbag=FALSE, .)formula 指定模型的公式形式,類似于 yx1+x2+x3.; data 指定分析的數(shù)據(jù)集;subset以向量的形式確定樣本數(shù)據(jù)集;na.action 指定數(shù)據(jù)集中缺失值的處理方法,默認

8、為 na.fail , 即不允許出現(xiàn)缺失值, 也可以指定為na.omit,即刪除缺失樣 本;x 指定模型的解釋變量,可以是矩陣,也可以是數(shù)據(jù)框;y指定模型的因變量,可以是離散的因子,也可以是連續(xù)的數(shù)值,分別對應于隨機森林的分類模型和預測模型。這里需要 說明的是,如果不指定 y 值,則隨機森林將是一個無監(jiān)督的 模型;xtest 和 ytest 用于預測的測試集;ntree 指定隨機森林所包含的決策樹數(shù)目,默認為 500; mtry 指定節(jié)點中用于二叉樹的變量個數(shù), 默認情況下數(shù)據(jù)集 變量個數(shù)的二次方根(分類模型)或三分之一(預測模型) 一般是需要進行人為的逐次挑選,確定最佳的m 值;replac

9、e 指定 Bootstrap 隨機抽樣的方式,默認為有放回的抽 樣;classwt 指定分類水平的權(quán)重,對于回歸模型,該參數(shù)無效;strata為因子向量,用于分層抽樣;sampsize 用于指定樣本容量,一般與參數(shù)strata 聯(lián)合使用,指定分層抽樣中層的樣本量;nodesize 指定決策樹節(jié)點的最小個數(shù),默認情況下,判別模 型為 1,回歸模型為 5;maxnodes 指定決策樹節(jié)點的最大個數(shù);importance 邏輯參數(shù), 是否計算各個變量在模型中的重要性, 默認不計算,該參數(shù)主要結(jié)合importance() 函數(shù)使用;proximity 邏輯參數(shù),是否計算模型的臨近矩陣,主要結(jié)合 MDS

10、plot() 函數(shù)使用;x 是否基于 OOB 數(shù)據(jù)計算臨近矩陣;norm.votes 顯示投票格式,默認以百分比的形式展示投票結(jié) 果,也可以采用絕對數(shù)的形式;do.trace 是否輸出更詳細的隨機森林模型運行過程,默認不輸出;keep.forest 是否保留模型的輸出對象,對于給定xtest 值后,默認將不保留算法的運算結(jié)果。2) importance。函數(shù)用于計算模型變量的重要性importance(x, type=NULL, class=NULL, scale=TRUE, .)x 為 randomForest 對象;type 可以是 1,也可以是 2,用于判別計算變量重要性的

11、方 法, 1 表示使用精度平均較少值作為度量標準;2 表示采用節(jié)點不純度的平均減少值最為度量標準。值越大說明變量的 重要性越強;scale默認對變量的重要性值進行標準化。3) MDSplot() 函數(shù)用于實現(xiàn)隨機森林的可視化MDSplot(rf, fac, k=2, palette=NULL, pch=20, .)rf 為 randomForest 對象,需要說明的是,在構(gòu)建隨機森林模 型時必須指定計算臨近矩陣, 即設(shè)置 proximity 參數(shù)為 TRUE ; fac 指定隨機森林模型中所使用到的因子向量(因變量) ; palette 指定所繪圖形中各個類別的顏色;pch 指定所繪圖形中各個

12、類別形狀;還可以通過 R 自帶的 plot 函數(shù)繪制隨機森林決策樹的數(shù)目與 模型誤差的折線圖4) rfImpute() 函數(shù)可為存在缺失值的數(shù)據(jù)集進行插補(隨機 森林法),得到最優(yōu)的樣本擬合值 rfImpute(x, y, iter=5, ntree=300, .) rfImpute(x, data, ., subset) x 為存在缺失值的數(shù)據(jù)集; y 為因變量,不可以存在缺失情況; iter 指定插值過程中迭代次數(shù); ntree 指定每次迭代生成的隨機森林中決策樹數(shù)量; subset 以向量的形式指定樣本集。5) treesize()函數(shù)用于計算隨機森林中每棵樹的節(jié)點個數(shù) treesize

13、(x, terminal=TRUE)x 為 randomForest 對象;terminal 指定計算節(jié)點數(shù)目的方式,默認只計算每棵樹的根 節(jié)點,設(shè)置為 FALSE 時將計算所有節(jié)點(根節(jié)點 +葉節(jié)點) 一般treesize()函數(shù)生成的結(jié)果用于繪制直方圖,方面查看隨 機森林中樹的節(jié)點分布情況。bagging 簡介在 bagging 方法里,從數(shù)據(jù)里抽取出自舉樣本(有放回的隨 機樣本),根據(jù)每一個樣本,可以建立一個決策樹模型,最 終的模型是所有單個決策樹結(jié)果的平均。 bagging 決策樹算 法通過降低方差得到穩(wěn)定的最終模型,這種方法提高了精 度,也不太可能過擬合。應用在隨機森林算法的函數(shù) r

14、andomForest() 中有兩個非常重要的 參數(shù),而這兩個參數(shù)又將影響模型的準確性,它們分別是mtry和ntree。一般對 mtry的選擇是逐一嘗試,直到找到比 較理想的值, ntree 的選擇可通過圖形大致判斷模型內(nèi)誤差穩(wěn) 定時的值。#將數(shù)據(jù)集分為訓練集和測試集,并查看數(shù)據(jù)集基本屬性。數(shù)據(jù)為 R 自帶 IRIS 數(shù)據(jù)#選取randomforest - mtry節(jié)點值,對應誤差最小為2,一般可默認。通常也是 2 記得。 mtry 指定節(jié)點中用于二叉樹的 變量個數(shù),默認情況下數(shù)據(jù)集變量個數(shù)的二次方根(分類模 型)或三分之一(預測模型) 。#之后選擇ntree值,ntree指定隨機森林所包含的

15、決策樹數(shù)目, 默認為 500; .在 400 左右時,模型內(nèi)誤差基本穩(wěn)定,故取 ntree=400。> set.seed(100)>ntree_fit<-randomForest(Species.,data=train,mtry=2,ntree=1 000)> plot(ntree_fit)#看結(jié)果由上圖的結(jié)果可知, OOB 誤差為 2.8%,同時在隨機森林中, 第二類和第三類仍然有誤差,會被誤判,也可以通過輸入 plot(rf) 繪制每一棵樹的誤判率的圖。#看重要性> set.seed(100)> varImpPlot(rf)#最后驗證并預測> pr

16、ed1<-predict(rf,data=train)> Freq1<-table(pred1,train$Species) #驗證矩陣中跡占整體情況,精度 =0.97。#margin 參數(shù)無 main, 為了展示而寫,不報錯 plot(margin(rf,test$Species),main= 觀測值被判斷正確的概率 圖) 總結(jié)bagging 通過減少方差來穩(wěn)定決策樹并提高精度。bagging 降低泛化誤差。隨機森林通過去除 bagging 集合中的個體樹之間的相關(guān)性來 進一步提高決策樹的性能。隨機森林的變量重要性度量可以幫助確定哪些變量對模型 的貢獻度最大。由于隨機森林的集合中的樹是未剪枝的并且往往非常深,還 有過擬合的危險,因此,一定要確保在保留數(shù)據(jù)上使用簡單 交叉驗證來評估模型,從而更好地評價模型的性能。隨機森林是一種集成學習

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論