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

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

XGBoost與GBDT和LGBM區(qū)別

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

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

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

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

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

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

6)XGBoost在每次迭代之后,會(huì)將葉子節(jié)點(diǎn)的權(quán)重乘上一個(gè)學(xué)習(xí)率(相當(dāng)于XGBoost中的eta,論文中的Shrinkage),主要是為了削弱每棵樹的影響,讓后面有更大的學(xué)習(xí)空間。實(shí)際應(yīng)用中,一般把eta設(shè)置得小一點(diǎn),然后迭代次數(shù)設(shè)置得大一點(diǎn);

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

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

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

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

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

參考文獻(xiàn):

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

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

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

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

欄目分類
最近更新