日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

XGBoost與GBDT和LGBM區(qū)別

作者:木鐸一心 更新時間: 2022-10-11 編程語言

XGBoost的優(yōu)缺點: 與GBDT相比: 1)GBDT以傳統(tǒng)CART作為基分類器,而XGBoost支持線性分類器,相當于引入L1和L2正則化項的邏輯回歸(分類問題)和線性回歸(回歸問題);

2)GBDT在優(yōu)化時只用到一階導數,XGBoost對代價函數做了二階泰勒展開,引入了一階導數和二階導數,一方面增加了精度,另一方面支持自定義的損失函數,只要是能滿足二階連續(xù)可導的函數均可以作為損失函數;

3)XGBoost在損失函數中引入正則化項,用于控制模型的復雜度。正則化項包含全部葉子節(jié)點的個數gammaT,以及每個葉子節(jié)點輸出的結果score(wj)的L2模的平方和1/2lambda||w||^2。從Bias-variance tradeoff角度考慮,正則項降低了模型的方差,防止模型過擬合,這也是xgboost優(yōu)于傳統(tǒng)GBDT的一個特性。其中gamma與lambda需要進行調參。

4)當樣本存在缺失值時,xgBoosting能自動學習分裂方向,即XGBoost對樣本缺失值不敏感,該處理源于稀疏感知算法,在初次計算Gain時剔除缺失值,然后將缺失值先后加入不同方向節(jié)點,最終取Gain值最優(yōu)的結果。

5)XGBoost借鑒RF的做法,支持列抽樣,這樣不僅能防止過擬合,還能降低計算,這也是xgboost異于傳統(tǒng)gbdt的一個特性。

6)XGBoost在每次迭代之后,會將葉子節(jié)點的權重乘上一個學習率(相當于XGBoost中的eta,論文中的Shrinkage),主要是為了削弱每棵樹的影響,讓后面有更大的學習空間。實際應用中,一般把eta設置得小一點,然后迭代次數設置得大一點;

7)XGBoost工具支持并行,但并行不是tree粒度的并行,XGBoost也是一次迭代完才能進行下一次迭代的(第t次迭代的代價函數里包含了前面t-1次迭代的預測值),XGBoost的并行是在特征粒度上的。XGBoost在訓練之前,預先對數據進行了排序,然后保存為(block)結構,后面的迭代中重復地使用這個結構,大大減小計算量。這個塊結構也使得并行成為了可能,在進行節(jié)點的分裂時,需要計算每個特征的增益,最終選增益最大的那個特征去做分裂,那么各個特征的增益計算就可以開多線程進行;

8)可并行的近似直方圖算法,樹結點在進行分裂時,需要計算每個節(jié)點的增益,若數據量較大,對所有節(jié)點的特征進行排序,遍歷的得到最優(yōu)分割點,這種貪心法異常耗時,這時引進近似直方圖算法,用于生成高效的分割點,首先根據特征分布的百分位數提出候選分割點,基于候選分割點,將連續(xù)特征映射到各個桶里,最后根據聚合后的分割點效果找出最優(yōu)的分割點,為了限制樹的增長,引入閾值,當增益大于閾值時,進行分裂;

9)XGBoost的原生語言為C/C++,這是也是它訓練速度快的一個原因。

與LightGBM相比: 1)XGBoost采用預排序,在迭代之前,對結點的特征做預排序(其中預排續(xù)的結果會存儲到內存中,保存排序的數據及其對應的節(jié)點,因此當數據量增大時,其內存占用量大),遍歷選擇最優(yōu)分割點,數據量大時,貪心法耗時;LightGBM方法采用histogram算法,占用的內存低,數據分割的復雜度更低,但是不能找到最精確的數據分割點;

2)XGBoost采用level-wise生成決策樹策略,同時分裂同一層的葉子,從而進行多線程優(yōu)化,不容易過擬合,但很多葉子節(jié)點的分裂增益較低,沒必要進行更進一步的分裂,這就帶來了不必要的開銷;LightGBM采用leaf-wise生長策略,每次從當前葉子中選擇增益最大的葉子進行分裂,如此循環(huán),但會生長出更深的決策樹,產生過擬合,因此 LightGBM 在leaf-wise之上增加了一個最大深度的限制,在保證高效率的同時防止過擬合)。另一個比較巧妙的優(yōu)化是 histogram 做差加速。一個容易觀察到的現象:一個葉子的直方圖可以由它的父親節(jié)點的直方圖與它兄弟的直方圖做差得到。

參考文獻:

(88條消息) XGBoost的基本原理_Y學習使我快樂V的博客-CSDN博客_xgboost的原理

(88條消息) 集成學習之Xgboost_Aliert的博客-CSDN博客

(88條消息) GBDT算法的升級--XGBoost與LightGBM算法_CquptDJ的博客-CSDN博客_efb算法

原文鏈接:https://blog.csdn.net/Kd_Mpl/article/details/127249495

欄目分類
最近更新