bagging和boosting都屬于組合學習算法,都是將簡單的分類或者回歸算法組合在一起來提高模型的分類或者回歸效果,但是兩者還是有區別的,這篇文章主要梳理下兩者的區別和特點。
1、bagging
步驟:
(1)從原始樣本里抽取訓練集。每一輪從原始樣本中使用有放回的方法抽取n個訓練樣本,一共進行k次抽取,得到k個訓練集。
(2)每次使用一個訓練集得到一個模型,k個訓練集一共得到k個模型。
(3)對于分類問題,對k個模型投票得到結果,對于回歸問題,將均值作為最后的結果
注意:
(1)在訓練集中,有的樣本可能被多次抽到,有的可能一次都沒有被抽中。
(2)k個訓練集之間是獨立的。
(3)所有模型的重要性是相同的。
2、boosting
核心思想:將弱分類器組合成強分類器。
通過加法模型將弱分類器進行線性組合,比如說最經典的就是adaboost,以及后面學習的gbdt和xgboost,對于adaboot,這里注意有兩個權值:
(1)訓練數據的權值:提高前一輪被弱分類器分錯樣本的權值,減小分對的樣本的權值,使分類器重點關注誤分類的樣本。
(2)分類器的權重:采用加權多數表決,增大錯誤率小的權值,減小錯誤率大的分類器的權值。就是分的越準,說的越算。對于gbdt來說,是通過擬合殘差,一步步降低殘差的方法來得到最終的組合模型的。
3、兩者的區別
(1)樣本選擇
bagging:有放回抽樣
boosting:全量數據訓練
(2)樣本權重
bagging:每個樣本權重相等
boosting:不斷調整權重,分錯的重點關注,權重變大
(3)預測函數
bagging:所有預測函數(分類器/回歸器)權重相等
boosting:每個預測函數都有自己的權重,誤差小的權重高
(4)并行計算
bagging:每個預測函數之間相互獨立,可并行
boosting:按順序生成,相互依賴,不能并行。但是可以對分裂點的計算實行并行化。
4、擴展
(1)Bagging + 決策樹 = 隨機森林
(2)AdaBoost + 決策樹 = 提升樹
(3)Gradient Boosting + 決策樹 = GBDT
5、與偏差方差的對應關系
我們先回顧一下高偏差和高方差的原因:
高偏差:模型過于簡單,損失函數過大
高方差:模型過于復雜,記住了太多的細節噪音
bagging中的每一個預測函數的偏差都比較低(如果是決策樹,是需要完全分裂的),并且都有可能發生過擬合,所以將多個預測函數進行平均,起到了降低方差的作用。
boosting是對弱分類器的組合,弱分類器的偏差高,強分類器的偏差低,所以boosting起到了降低偏差的作用