今日面試題分享:請問 GBDT 和 XGBoost的區別是什麼

題目:請問(決策樹、Random Forest、Booting、Adaboot)GBDT和XGBoost的區別是什麼?


參考答案:

解析:

集成學習的集成對象是學習器. Bagging和Boosting屬於集成學習的兩類方法. Bagging方法有放回地採樣同數量樣本訓練每個學習器, 然後再一起集成(簡單投票); Boosting方法使用全部樣本(可調權重)依次訓練每個學習器, 迭代集成(平滑加權).

決策樹屬於最常用的學習器, 其學習過程是從根建立樹, 也就是如何決策葉子節點分裂. ID3/C4.5決策樹用信息熵計算最優分裂, CART決策樹用基尼指數計算最優分裂, xgboost決策樹使用二階泰勒展開係數計算最優分裂.

下面所提到的學習器都是決策樹:

Bagging方法:

學習器間不存在強依賴關係, 學習器可並行訓練生成, 集成方式一般為投票;

Random Forest屬於Bagging的代表, 放回抽樣, 每個學習器隨機選擇部分特徵去優化;

Boosting方法:

學習器之間存在強依賴關係、必須串行生成, 集成方式為加權和; Adaboost屬於Boosting, 採用指數損失函數替代原本分類任務的0/1損失函數;

GBDT屬於Boosting的優秀代表, 對函數殘差近似值進行梯度下降, 用CART迴歸樹做學習器, 集成為迴歸模型;

xgboost屬於Boosting的集大成者, 對函數殘差近似值進行梯度下降, 迭代時利用了二階梯度信息, 集成模型可分類也可迴歸. 由於它可在特徵粒度上並行計算, 結構風險和工程實現都做了很多優化, 泛化, 性能和擴展性都比GBDT要好。

關於決策樹,這裡有篇《決策樹算法》(鏈接:http://blog.csdn.net/v_july_v/article/details/7577684)。

而隨機森林Random Forest是一個包含多個決策樹的分類器。至於AdaBoost,則是英文"Adaptive Boosting"(自適應增強)的縮寫,關於AdaBoost可以看下這篇文章《Adaboost 算法的原理與推導》。GBDT(Gradient Boosting Decision Tree),即梯度上升決策樹算法,相當於融合決策樹和梯度上升boosting算法。

引用自:@AntZ

xgboost類似於gbdt的優化版,不論是精度還是效率上都有了提升。與gbdt相比,具體的優點有:

1.損失函數是用泰勒展式二項逼近,而不是像gbdt裡的就是一階導數 2.對樹的結構進行了正則化約束,防止模型過度複雜,降低了過擬合的可能性

3.節點分裂的方式不同,gbdt是用的gini係數,xgboost是經過優化推導後的

引用自:@Xijun LI

題目來源:七月在線官網(www.julyedu.com)——面試題庫——面試大題——機器學習


關注公眾號:七月在線實驗室,回覆:100,免費領取機器學習面試題PDF版


分享到:


相關文章: