隨機森林演算法涉及對樣本單元和變數進行抽樣,從而生成大量決策樹。
對於每個樣本單元,所有決策樹依次對其進行分類,所有決策樹**類別中的眾數類別即為隨機森林所**的這一樣本單元的類別。
假設訓練集中共有n個樣本單元,m個變數,則隨機森林演算法如下:
(1)從訓練集中隨機有放回地抽取n個樣本單元,生成大量決策樹;
(2)在每乙個節點隨機抽取m < m個變數,將其作為分割該節點的候選變數。每乙個節點處的變數數應一致;
(3)完整生成所有決策樹,無需剪枝(最小節點為1);
(4)終端節點的所屬類別由節點對應的眾數類別決定;
(5)對於新的觀測點,用所有的樹對其分類,其類別由多數原則生成。
下面直接上**,資料還是威斯康癌資料集= =。。。
library(randomforest)
set.seed(666)
ez.forest
na.action = na.roughfix, #變數缺失值替換成對應列的中位數
importance = true) #生成森林
ez.forest
# 結果為
call:
randomforest(formula = class ~ ., data = df.train, importance = true, na.action = na.roughfix)
type of random forest: classification
number of trees: 500
no. of variables tried at each split: 3 (每次拆分時嘗試的變數數量:3,總變數數為9)
oob estimate of error rate: 2.25%
confusion matrix:
benign malignant class.error
benign 310 9 0.02821317
malignant 2 168 0.01176471
randomforest包中的randomforest()函式可用於生成隨機森林,預設生成500棵決策樹,並且預設在每個節點處抽取sqrt(m)個變數,最小節點為1
importance(ez.forest,type=2) #變數重要性
#結果為
meandecreasegini
clumpthickness 11.628535
sizeuniformity 61.818745
shapeuniformity 49.774635
maginaladhesion 5.088972
singleeptheliacellsize 24.022331
barenuclei 28.984569
blandchromatin 19.140633
normalnucleoli 19.388180
mitosis 1.574714
type=2引數得到的某個變數的相對重要性就是分割該變數時節點不純度的下降總量(所有決策樹)取平均(/決策樹的數量)。
從結果可看出,sizeuniformity是相對最重要的變數,mitosis是相對最不重要的變數。
最後再用隨機森林對驗證集進行分類,看看其準確率:
importance(ez.forest,type=2) #變數重要性
forest.pred
forest.perf
dnn = c('actual','predicted'))
forest.perf
#結果為:
predicted
actual benign malignant
benign 132 4
malignant 3 67
本例的隨機森林是用randomforest包的randomforest()函式基於傳統決策樹生成的,也可以用party包中的cforest()函式來基於條件推斷樹生成隨機森林。
缺點:分類方法(即隨機森林中的所有決策樹)較難理解和表達。
優點:分類準確率更高。(與單棵決策樹相比更明顯)
R語言 隨機森林演算法
在隨機森林方法中,建立大量的決策樹。每個觀察被饋入每個決策樹。每個觀察的最常見的結果被用作最終輸出。新的觀察結果被饋入所有的樹並且對每個分類模型取多數投票。對構建樹時未使用的情況進行錯誤估計。這稱為oob 袋外 誤差估計,其被提及為百分比。r語言包 randomforest 用於建立隨機森林。安裝r...
隨機森林(R)
random forest install.packages randomforest library randomforest data iris attach iris table iris species class as.factor iris species 描述 biplot princ...
R語言 隨機森林mtry,ntree優化
隨機森林引數 1 mtry節點值,可確定每次迭代的變數抽樣數值,用於二叉樹的變數個數 1 一般可預設為2。2 改為資料集變數個數的二次方根 分類模型 或三分之一 回歸模型 3 實際可以for迴圈找到最佳 2 ntree指定隨機森林所包含的決策樹數目,預設為500 最好在確定mtry之後,帶入嘗試,取...