應用機器學習(七) 隨機森林

2021-08-01 19:16:58 字數 2497 閱讀 7935

隨機森林( 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整合的基礎上,進一步在決策樹的訓練...

機器學習 隨機森林

以決策樹為基礎 隨機森林 決策樹的乙個主要缺點在於經常對訓練的資料過擬合。隨機森林是解決這個問題的一種方法。隨機森林的本質上是很多決策樹的集合,其中那個每棵樹都和其他樹略有不同。隨機森林背後砈思想史是,每棵樹的 都可能相對較好,但可能對部分書聚過擬合,如果我們構建很多樹,並且每棵樹都可以 的很好,但...