Bagging、随機森林、Boosting
- 1.Bagging(裝袋算法)
- 2.随機森林
- 3.Boosting
- 參考
1.Bagging(裝袋算法)
bootstrap抽樣:反複地從原始資料集中有放回地抽取觀測資料,得到多個資料集。
- 優點:适用于樣本數量較小,可從原始資料中産生多個訓練集。
- 缺點:會引入相同樣本,改變了原始資料的分布,導緻偏差;模型的可了解性差。
在決策樹中(或其他高方差模型中),由于其高方差低偏差地特性(即對訓練集樣本很敏感),樣本發生個别變化時,生成的決策樹可能會完全不同。為了減小高方差,引入Bagging方法。
假設有n個資料集, Z 1 , Z 2 , . . . Z n Z_1,Z_2,...Z_n Z1,Z2,...Zn,每個資料集的方差為 σ 2 \sigma^2 σ2,則其樣本平均值 Z ˉ \bar{Z} Zˉ的方差為 σ 2 n \frac{\sigma^2}{n} nσ2。
可以發現,對一系列觀測值取平均可以顯著降低方差。是以,類比可知,依賴原訓練集生成許多新的訓練集,再分别對新的訓練集訓練模型 f ^ 1 ( x ) , f ^ 2 ( x ) , . . . f ^ B ( x ) \hat{f}^1(x),\hat{f}^2(x),...\hat{f}^B(x) f^1(x),f^2(x),...f^B(x),最終取得各模型預測結果的平均。(分類問題即可以少數服從多數)
f ^ a v g ( x ) = 1 B ∑ b = 1 B f ^ b ( x ) \hat{f}_{avg}(x)=\frac{1}{B}\sum_{b=1}^B\hat{f}^b(x) f^avg(x)=B1b=1∑Bf^b(x)
Bagging(Boostrap aggregation):給定一個訓練集,采用boostrap抽樣生成b個訓練集,再分别這b個訓練集去訓練模型,生成b個模型,再通過取平均值或取多數票等方法得到模型預測或分類結果。
-
Out-of-Bag Error(袋外錯誤)
運用Boostrap抽樣方式不可避免地存在一個問題,即當從樣本數為n的訓練集D中,運用Bootstrap抽樣時,第j個觀測值在bootstrap抽樣集中的機率為:
P = ( 1 − ( 1 − 1 n ) n ) lim n → ∞ P = 1 − 1 e ≈ 2 3 P= (1-(1-\frac{1}{n})^n)\\ \lim_{n\rightarrow\infty }P=1- \frac{1}{e}\approx \frac{2}{3} P=(1−(1−n1)n)n→∞limP=1−e1≈32
可以得知,每個抽樣集平均利用了原資料集的三分之二去訓練子模型,而剩下的三分之一資料沒有被利用去拟合該子模型,稱這部分資料為Out-of-Bag(OOB)觀測值(即子模型拟合未用到的訓練集)。
OOB誤分率:對所有樣本,計算它作為OOB樣本時的預測或分類情況;通過平均或多數投票的方式得到該樣本的分類樣本;最後用誤分個數占樣本總數的比率作為OOB誤分率。(因為OOB樣本的預測利用的模型并不是用其拟合的模型,相當于測試集,是以可以近似将OBB錯誤作為test error)
2.随機森林
随機森林是在Bagging方法上的改進,子模型為決策樹,在Bagging中抽樣時進行模型拟合時,利用了觀測值的所有特征p個,而在随機森林模型中,各子模型僅利用觀測值所有特征中 m = p m=\sqrt{p} m=p
個進行拟合。
- m越大,單棵樹的效果會提升,但樹之間相關性也會增強
- B越大,模型效果會有提升,但計算量會變大
優勢:降維;當強特征存在時,bagging生成的各樹模型可能高度相似,是以平均或多數投票不能夠顯著降低方差,而随機森林平均上 ( p − m ) / p (p-m)/p (p−m)/p的split不會考慮強特征。
劣勢:對小量資料集和低維資料集的分類不一定可以得到很好的效果。
bagging與随機森林均不會因為B值的增大而産生過拟合,是以一般采用較大的B去減小誤差。
一方面:在樣本的抽樣中,會産生重複的樣本,這樣每一個子模型在拟合時都不會采用全部的樣本,就不會産生過拟合現象。
另一方面:在特征值的采樣中,選擇有限的特征,這樣每一個子模型可能不會生成完整的決策樹(效果上類似于剪枝),是以不會産生過拟合現象。
3.Boosting
提升方法(Boosting)在該文進行了詳細闡述。
提升樹中,子模型的split為1時(即模型為樹樁)通常效果較好,因為每次疊代産生的子模型都依賴于上一個子模型的結果(即與每次疊代的殘差有關),是以每個模型之間的相關度越低,提升的效果越好。此時每一個子模型隻包括一個特征,相當于加法模型。split越多,子模型考慮的特征數就越多,interaction depth就越大。
Boosting與前兩者的差別:
- Boosting根據錯誤率調整樣本權重,錯誤率越大的樣本權重越大;
- Bagging使用的是均勻取樣,每個樣本權重相等。
- Boosting各個預測函數必須按順序疊代生成;
- Bagging各個預測函數可以并行生成。
- Boosting中誤差越小的預測函數其權重越大;
- Bagging所有的預測函數的權重相等。
參考
[1]《An introduction to statistical learning; with Application in R》