bagging boosting 隨機森林 GBDT對比

1.bagging

產生n個樣本的方法可以採用Bootstraping法,這是一種有放回的抽樣方法,產生n個樣本。在統計學中,Bootstraping 是依靠替換隨機採樣的任意試驗或度量.普通的決策樹會受到高方差的困擾。這意味着如果我們把訓練數據隨機分成兩部分,並且給二者都訓練一個決策樹,我們得到的結果可能就會相當不同。Bootstrap 聚集,或者叫做Bagging(袋裝),是減少統計學習方法的方差的通用過程。
而最終結果採用Bagging的策略來獲得,即多數投票機制。
bagging算法的流程大致如下:
1.從原始樣本集中抽取訓練集。每輪從原始樣本集中使用Bootstraping的方法抽取n個訓練樣本(在訓練集中,有些樣本可能被多次抽取到,而有些樣本可能一次都沒有被抽中)。共進行k輪抽取,得到k個訓練集。(k個訓練集之間是相互獨立的)
2.每次使用一個訓練集得到一個模型,k個訓練集共得到k個模型。(注:這裏並沒有具體的分類算法或迴歸方法,我們可以根據具體問題採用不同的分類或迴歸方法,如決策樹、感知器等)
3.如果最終是分類問題,則將上步得到的k個模型採用投票的方式得到分類結果;如果是迴歸問題,計算上述模型的平均值作爲最後的結果。在此過程中,所有模型的權重都相等。

2.boosting

前面提到,bagging的核心思想是針對樣本進行有放回的抽樣,那麼boosting的核心思想則是將弱分類器組裝成一個強分類器。在PAC(概率近似正確)學習框架下,則一定可以將弱分類器組裝成一個強分類器。
boosting類型的算法主要面臨有兩個核心問題:
1.在每一輪如何改變訓練數據的權值或概率分佈?
boosting一般的做法是通過提高那些在前一輪被弱分類器分錯樣例的權值,減小前一輪分對樣例的權值,來使得分類器對誤分的數據有較好的效果。
2.通過什麼方式來組合弱分類器?
通過加法模型將弱分類器進行線性組合,比如AdaBoost通過加權多數表決的方式,即增大錯誤率小的分類器的權值,同時減小錯誤率較大的分類器的權值。而提升樹(GBDT)通過擬合殘差的方式逐步減小殘差,將每一步生成的模型疊加得到最終模型。

3.bagging VS boosting

簡單總結一下Bagging與Boosting的對比:
在樣本的選擇上:
bagging:訓練集是在原始集中有放回選取的,從原始集中選出的各輪訓練集之間是獨立的。
boosting:每一輪的訓練集不變,只是訓練集中每個樣例在分類器中的權重發生變化。而權值是根據上一輪的分類結果進行調整。

樣本權重上:
bagging:使用均勻取樣,每個樣例的權重相等。
boosting:根據錯誤率不斷調整樣例的權值,錯誤率越大則權重越大。

弱分類器的權重:
bagging:所有弱分類器的權重相等。
boosting:每個弱分類器都有相應的權重,對於分類誤差小的分類器會有更大的權重。

並行化:
bagging:因爲每棵樹都是獨立的,所以並行運算很容易。
boosting:每棵樹只能順序生成,因爲後一個模型參數需要前一輪模型的結果。

4.隨機森林

鑑於決策樹容易過擬合的缺點,隨機森林採用多個決策樹的投票機制來改善決策樹,我們假設隨機森林使用了m棵決策樹,那麼就需要產生m個一定數量的樣本集來訓練每一棵樹,如果用全樣本去訓練m棵決策樹顯然是不可取的,全樣本訓練忽視了局部樣本的規律,對於模型的泛化能力是有害的。

隨機森林的生成流程大致如下:
1.從樣本集中通過重採樣的方式產生n個樣本
2.假設樣本特徵數目爲a,對n個樣本選擇a中的k個特徵,用建立決策樹的方式獲得最佳分割點
3.重複m次,產生m棵決策樹
4.多數投票機制來進行預測

隨機森林的隨機性主要體現在兩個方面:
1.數據集的隨機選取:從原始的數據集中採取有放回的抽樣(bagging),構造子數據集,子數據集的數據量是和原始數據集相同的。不同子數據集的元素可以重複,同一個子數據集中的元素也可以重複。
2.待選特徵的隨機選取:與數據集的隨機選取類似,隨機森林中的子樹的每一個分裂過程並未用到所有的待選特徵,而是從所有的待選特徵中隨機選取一定的特徵,之後再在隨機選取的特徵中選取最優的特徵。

隨機森林的優點:
1.實現簡單,訓練速度快,泛化能力強,可以並行實現,因爲訓練時樹與樹之間是相互獨立的,可以並行這點對於數據量大的場景就很重要。
2.能處理高維數據(即特徵很多),並且不用做特徵選擇,因爲特徵子集是隨機選取的。這一點對於大數據量也很重要,因爲大數據集上通常會面臨維度災難(Dimensional disaster)。
3.相比其他算法,不是很怕特徵缺失,因爲待選特徵也是隨機選取;
4.相比單一決策樹,能學習到特徵之間的相互影響,且不容易過擬合;
5.對於不平衡的數據集,可以平衡誤差;
6.訓練完成後可以給出哪些特徵比較重要,這一點對於提高模型的可解釋性也很重要。

隨機森林的不足之處在於:
1.在噪聲過大的分類和迴歸問題還是容易過擬合;
2.相比於單一決策樹,它的隨機性讓我們難以對模型進行解釋。

5.GBDT

GBDT是以決策樹爲基學習器的迭代算法,注意GBDT裏的決策樹都是迴歸樹而不是分類樹。GBDT的核心就在於:每一棵樹學的是之前所有樹結論和的殘差,這個殘差就是一個加預測值後能得真實值的累加量。比如A的真實年齡是18歲,但第一棵樹的預測年齡是12歲,差了6歲,即殘差爲6歲。那麼在第二棵樹裏我們把A的年齡設爲6歲去學習,如果第二棵樹真的能把A分到6歲的葉子節點,那累加兩棵樹的結論就是A的真實年齡;如果第二棵樹的結論是5歲,則A仍然存在1歲的殘差,第三棵樹裏A的年齡就變成1歲,繼續學習。

GBDT的優點:
1.GBDT適用面廣,離散或連續的數據都可以處理。
2.GBDT幾乎可用於所有迴歸問題(線性/非線性),也可以用於二分類問題。
缺點:
由於弱分類器的依賴關係,GBDT的並行訓練比較難。

6.RF VS GBDT

1.RF是基於bagging思想,而GBDT是基於boosting思想。Bagging採用有放回的均勻取樣,而Boosting根據錯誤率來取樣(Boosting初始化時對每一個訓練樣例賦相等的權重1/n,然後用該算法對訓練集訓練t輪,每次訓練後,對訓練失敗的樣例賦以較大的權重),因此boosting的分類精度要優於bagging。
2.隨機森林的樹可以並行生成,但GBDT只能串行生成。
3.組成隨機森林的樹可以是分類樹,也可以是迴歸樹;而GBDT只能由迴歸樹組成。
4.隨機森林對異常值不太敏感,而GBDT對異常值比較敏感。
5.隨機森林是採用投票取多數的方式獲取最終結果,而GBDT是將所有結果累加或進行加權累加。
6.隨機森林因爲是對所有樣本進行抽樣,所以方差(variance)比較小,但是偏差(bias)比較大,所以隨機森林樹的深度一般會比較深以減小偏差。GBDT因爲對錯誤分類樣本有加權,所以偏差(bias)比較小,而方差(variance)比較打大,所以GBDT樹的深度一般比較小,通過減小模型複雜度的方式來減小方差。

參考文獻:
1.https://zhuanlan.zhihu.com/p/25496196 N問GBDT(1-12答案)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章