1. 程式人生 > >樹模型比較(二)

樹模型比較(二)

主要是看看隨機森林,GBDT,XGBoost這些基於樹的整合方法之間的異同。

隨機森林(RF)

  • Bagging思想
  • 利用Boostrap取樣,從樣本中選取不同的集合構造決策樹,整個過程可以並行;
  • Boostrap取樣方式帶來了一個優勢,能留下32%的資料從未被用過,可以用來進行包外估計
  • 兩種擾動方式,樣本擾動和屬性擾動,增加了模型的多樣性以及最終的泛化能力
  • 最終結果的得出:分類問題用投票,迴歸問題用平均
  • 隨機森林由於行取樣增加擾動,所以每次都是完全建樹,分到不能分為止,而且最後不用剪枝
  • 偏差方差分解角度,Bagging降低方差

GBDT

  • Boosting方法,與Bagging相區別,序列化建樹過程,基學習器之間具有強依賴性
  • AdaBoost也是Boosting方法,區別在於AdaBoost每次是通過改變樣本的權重進行學習,而GBDT中是樣本是沒有權重的
  • GBDT可以認為是函式空間的梯度下降,每次尋找使損失函式下降最快的方向,這也是梯度的由來。但是其本質是擬合前面得到的模型的殘差
  • GBDT的並行不可以從樹的層面做,但是在特徵選擇層面是可以的
  • GBDT中每一棵樹都是迴歸樹(CART)
  • 降低偏差。在訓練的時候,設定樹的深度很小的時候,也可以達到很好的效果。
  • shrikage,小步逼近,防止過擬合

XGBoost

  • 基於GBDT的框架,Boosting思想
  • 基學習器可以選擇樹(gbtree),也可以使用線形分類器(gblinear)
  • 自帶正則的目標函式,L1+L2,L1是對葉結點數量的限制,L2是對葉結點輸出值的限制,防止過擬合
  • 通過利用泰勒的二階展開,對目標函式進行近似,從而提出了一種應用更為廣泛的分裂評價指標,凡是目標函式可以進行二階泰勒展開的都可以用,level-wise
  • 支援shrinkage,列取樣,行取樣,都可以防止過擬合,通常列取樣效果好於行取樣
  • 可以處理缺失值,通過學習尋找最優的劃分方向
  • 並行加速是通過對特徵值進行排序/直方圖,事先計算好存為block,以後用的時候直接查表即可