Bagging與隨機森林演算法原理總結
在整合學習原理小結中,我們學習到了兩個流派,一個是Boosting,它的特點是各個弱學習器之間存在依賴和關係,另一個是Bagging,它的特點是各個弱學習器之間沒有依賴關係,可以並行擬合,本文就對整合學習中的Bagging和隨機森林做一個總結。
隨機森林是整合學習中可以和GBDT相較衡的演算法,尤其是它可以很方便地進行並行訓練,在現在的大資料大樣本下很有誘惑力。
1.Bagging的原理
在整合學習原理總結的Bagging原理這一塊,我們畫了這麼一張流程圖
從上圖可以看出,Bagging的弱學習器之間沒有像Boosting的弱學習器之間存在很強的聯絡,他的特點在“隨機取樣”,下面來介紹一下隨機取樣原理。
隨機取樣(bootsrap)就是從我們的訓練集裡面採集固定樣本個數的樣本,但是每一次採集過後,都會將採集到的樣本重新放回。也就說,這一次採集到的樣本,下一次人仍有可能會繼續被採集到。對於我們的Bagging系列演算法,一般會隨機採集和訓練樣本數m一樣個數的樣本。這樣得到的取樣集和訓練集樣本個數相同,但是樣本內容不同。如果我們對有m個樣本訓練集做T次的隨機取樣,則由於隨機性,T個取樣集各不相同。
注意到這和GBDT的子取樣是不同的,GBDT的子取樣是無放回取樣,而Bagging的子取樣是有有放回取樣。
對於這36.8%的沒有被採集到的資料,我們稱之為袋外資料(Out of bag,簡稱oog)。這些資料沒有參與訓練模型的擬合,因此可以檢驗模型泛化能力。
Bagging對弱學習器沒有限制,這和adaboost一樣,但是最常用的同樣也是決策樹和隨機森林。
Bagging的集合策略也比較簡單,對於分類問題,採用簡單投票法,得到票別數最多的那一類作為輸出樣本的預測類別。對於迴歸問題,採用簡單平均法,對T個弱學習器得到的迴歸結果進行算數平均得到最終模型輸出。
由於Bagging每次訓練都進行取樣來訓練模型,所以模型的泛化能力很強,對於降低模型的方差很有作用。當然對於訓練基地額擬合誤差就會大一點,也就輸模型偏倚會大一些。
2.Bagging演算法流程
上一節我們對bagging演算法的原理做了總結,這裡就對bagging演算法的流程做一個總結。相對於Boosting系列的Adaboost和GBDT,bagging演算法要簡單的多。
輸出為最終的強分類器f(X)
1)對於t = 1,2,3,...,T:
- 如果是分類演算法預測,則T個弱學習器投出最多票數的類別或者類別之一為最終類別。如果是迴歸演算法,T個弱學習器得到的迴歸結果進行算術平均得到的值為最終的模型輸出。
3.隨機森林演算法
理解了bagging,隨機森林(Random Forest 一下簡稱RF)就好理解了。它是Bagging演算法的進化版,也就是說,它的思想仍然是bagging,但是進行了獨有的改進。改進如下:
首先,RF使用了CART決策樹作為弱學習器,這讓我們想到了梯度提升樹GBDT。
第二,在梯度提升樹的基礎上,RF對決策樹的建立做了改進,我們會在節點上所有的n個樣本特徵中選擇一個最優的特徵來做決策樹的左右子樹劃分,但是RF通過隨機選擇節點上的而一部分樣本特徵,這個數字小於n,假設為α,然後在這些隨機選擇的α個樣本特徵中,選擇一個最優的特徵來做進行決策樹的左右子樹劃分,進一步提高了決策樹的泛化能力。
說明:如果α = n時,則此時的RF的CART決策樹和普通的CART決策樹沒有什麼區別。α值越小,則模型越壯碩,當然此時對於訓練集的擬合程度會變差。也就是說α越小,模型的方差會減小(即在測試集上的泛化誤差減少),但是偏倚(偏差)會增大。在實際案例中,一般會通過交叉驗證調參獲取一個合適的m的值。
除了以上兩點,RF與普通的bagging演算法沒有什麼差別,下面來總結RF的演算法流程:
2)如果時分類演算法預測,則T個學習器投出最多票數的類別或者時類別之一為最終類別。如果是迴歸演算法,T個弱學習器得到的迴歸結果進行算術平均得到的值為最終的模型輸出。
4.隨機森林小結
作為一個可以高度並行並優化的演算法,RF在大資料時代大有作為,這裡對RF的主要優缺點做一個小小的總結 。
RF的主要優點是:
1)訓練可以高度並行化,對於大資料大樣本時代訓練速度有優勢。
2)由於隨機選擇決策樹節點劃分特徵,這樣在樣本特徵緯度很高的情況下,仍然能夠高效率訓練模型。
3)在訓練後可以輸出各個特徵對於輸出的重要性。
4)由於採取了隨機取樣,模型的泛化能力強,方差小。
5)相比於Boosting系列的GBDT和Adaboost,RF實現比較簡單。
6)對於部分特徵確實並不敏感。(這個不太懂!)
RF的主要缺點是:
1)在某些噪音比較大的樣本,RF容易陷入過擬合。
2)取值劃分比較多的特徵容易對RF的決策產生更大的影響,從而影響擬合的模型的效果。
5.參考資料
劉建平老師部落格:
Bagging與隨機森林原理小結