隨機森林算法原理小結
來自:https://www.cnblogs.com/pinard/p/6156009.html
集成學習有兩個流派,一個是boosting,特點是各個弱學習器之間有依賴關系;一個是bagging,特點是各個弱學習器之間沒依賴關系,可以並行擬合。
1. bagging的原理
在集成學習原理總結中,給出bagging的原理圖。
Bagging的弱學習器之間沒boosting那樣的聯系。它的特點在“隨機采樣”。
隨機采樣常見的是自助隨機采樣,即有放回的隨機采樣。Bagging算法,一般會隨機采集和訓練集樣本數m一樣的個數的樣本。這樣得到的采樣集和訓練集樣本個數相同,但樣本內容不同。我們對m個樣本訓練集做T次的隨機采樣,則由於隨機性,T個采樣集各不相同。
註意到這和GBDT的子采樣不同。GBDT的子采樣是無放回采樣,而Bagging的子采樣是放回采樣。
對於一個樣本,它在某一次含m個樣本的訓練集的隨機采樣中,每次被采集到的概率是1/m。
樣本在m次采樣中始終不被采到的概率是:
P(一次都未被采集) = (1-1/m)m
對m取極限得到:
也就是說bagging的每輪隨機采樣中,訓練集大約有36.8%的數據沒被采集。
對於大約36.8%沒被采樣的數據,稱為“袋外數據”。這些數據沒參與訓練集模型的擬合,但可以作為測試集用於測試模型的泛化能力,這樣的測試結果稱為“外包估計”。
bagging對於弱學習器沒有限制,這和Adaboost一樣。但是最常用的一般也是決策樹和神經網絡。
bagging的集合策略也比較簡單,對於分類問題,通常使用簡單投票法,得到最多票數的類別或者類別之一為最終的模型輸出。對於回歸問題,通常使用簡單平均法,對T個弱學習器得到的回歸結果進行算術平均得到最終的模型輸出。
由於Bagging算法每次都進行采樣來訓練模型,因此泛化能力很強,對於降低模型的方差很有作用。當然對於訓練集的擬合程度就會差一些,也就是模型的偏倚會大一些。
隨機森林算法原理小結