隨機森林( random forest ),是一種用於分類、回歸等任務的整合學習方法。對於分類任務,它在訓練時構建多棵決策樹,輸出這些樹的分類結果的眾數( mode ),即,將大多數樹的分類結果作為最終的結果。這樣,隨機森林修正了單棵決策樹過度擬合訓練集的傾向。
對於詳細的決策樹學習理論,請參考應用機器學習 | 第七講。
在構建的決策樹裡,長的比較」深」的樹,傾向過擬合訓練集,即,它有較低的偏差,但較高的方差。隨機森林平衡了多棵決策樹,目的是減小**方差,但付出的代價是,增加了偏差且損失了部分模型可解釋性。儘管如此,隨機森林仍然很大程度上改善了最終模型的**表現。
給定乙個訓練集 x=
(x1,
x2,…
,xn)
, 響應變數(類標籤) y=
(y1,
y2,…
,yn)
. 所謂裝袋( bagging ),指的是從訓練集中有放回地抽取乙個隨機樣本,在這個樣本上擬合樹。假設重複裝袋
b 次,整個訓練過程為:對 b
=1,2
,…,b
: 分別從 x,
y 有放回地抽取訓練例項 xb
,yb ;在 x
b,yb
上訓練一棵決策樹 fb
.經過 b
次訓練後,對於乙個未知類的新例項
x, 將各棵樹的**結果做平衡,得到最終的**:
(1). 平均數原則 f
^=1b
∑b=1
bfb(
x)(2). 大多數原則
取大多數決策樹的**結果作為最終的結果。
在這裡,樣本數
b 是乙個自由引數。通常,構建從幾百到幾千棵樹,也就是說,
b從幾百取到幾千,這依賴訓練集的大小和本質。
特徵裝袋( feature bagging ), 指的是在決策樹學習過程中,每次隨機選擇乙個特徵子集,在這個子集上構建決策樹。而普通的裝袋法,每棵決策樹是在全部特徵上拆分得到的。特徵裝袋的原因是,如果存在某個或多個特徵是響應變數(類變數)強**變數,那麼,這些變數就可能在 b 棵樹的多棵的構建過程中被選擇作為拆分變數,這導致樹的相關性。通常,對於乙個分類問題,假設有 p 個特徵,那麼,在每次拆分時,隨機選擇的子特徵數為 [p
√]. 該演算法的流程如圖1所示:
袋外誤差( out-of-bag (oob) error ),也稱袋外估計( out-of-bag estimate ),是測量隨機森林**誤差的一種方法。
假設有資料集 d=
, 對於每乙個訓練例項 zi
, 將它置於」袋外」,即,由不包括 zi
的 bootstrap 樣本構建決策樹,** zi
的響應變數值(類標籤)。oob 是對每個 zi
的平均**誤差。
在回歸、分類問題裡,隨機森林可以排秩變數的重要程度。
使用資料集
d 擬合乙個隨機森林。每乙個例項的 oob 被記錄且平均在森林上。為了測量第
j 個特徵訓練後的重要性,在訓練集置換該特徵的值,然後計算置換的資料集的 oob. 定義第
j個特徵的重要分數為,置換前後的 oob 差關於所有樹的平均值。重要分數越大,說明該特徵越重要。
下面是隨機森林和裝袋整合演算法的一段 r 執行**,需要安裝 r 包 party 和 th.data.
set.seed(290875)
### honest (i.e., out-of-bag) cross-classification of
### true vs. predicted classes
data("mammoexp", package = "th.data")
table(mammoexp$me, predict(cforest(me ~ ., data = mammoexp,
control = cforest_unbiased(ntree = 50)),
oob = true))
### fit forest to ******ed response
if (require("th.data") && require("survival"))
### proximity, see ?randomforest
iris.cf
control = cforest_unbiased(mtry = 2))
iris.mds
op pairs(cbind(iris[,1:4], iris.mds$points), cex = 0.6, gap = 0,
col = c("red", "green", "blue")[as.numeric(iris$species)],
main = "iris data: predictors and mds of proximity based on cforest")
par(op)
機器學習 隨機森林
opencv包含隨機森林 random forest 類,隨機森林可以通過收集很多樹的子節點對各個類別的投票,然後選擇獲得最多投票的類別作為判斷結果。通過計算 森林 的所有子節點上的值的平均值來解決回歸問題。隨機森林包含隨機選擇的一些決策樹。隨機森林建立時的基本子系統也是決策樹,在建立決策樹時會一直...
機器學習 隨機森林
以下內容均為個人理解,如有錯誤,歡迎指出 如何生成隨機森林基學習器的訓練資料集 隨機 的含義 bagging整合學習的評測方法 隨機森林的引數 以下內容摘自周志華老師的 機器學習 隨機森林是bagging的乙個擴充套件變體,它在以決策樹為基學習器構建的bagging整合的基礎上,進一步在決策樹的訓練...
機器學習 隨機森林
以決策樹為基礎 隨機森林 決策樹的乙個主要缺點在於經常對訓練的資料過擬合。隨機森林是解決這個問題的一種方法。隨機森林的本質上是很多決策樹的集合,其中那個每棵樹都和其他樹略有不同。隨機森林背後砈思想史是,每棵樹的 都可能相對較好,但可能對部分書聚過擬合,如果我們構建很多樹,並且每棵樹都可以 的很好,但...