XGB算法梳理

算法原理

XGB(extreme gradient boosting)是GBDT的一種工業(yè)實現(xiàn),也是通過不斷增加新樹,擬合偽殘差去降低損失函數(shù)。其擬合過程是使用的損失函數(shù)的二階泰勒展開,這是和GBDT的一個區(qū)別。

損失函數(shù)

L(\theta)=\sum_{i}\left(y_{i}-\hat{y}_{i}\right)^{2}

分裂結(jié)點算法

  • 精確的貪心法
    枚舉,時間開銷大
  • 近似的貪心

正則化

\Omega(f)=\gamma T+\frac{1}{2} \lambda \sum_{j=1}^{T} w_{j}^{2}
葉子節(jié)點數(shù)和葉節(jié)點權(quán)重

對缺失值處理

XGB中允許缺失值存在。在找分裂點時,不遍歷迭代缺失樣本,減少計算,分配樣本時,缺失的樣本同時分到左右子樹,計算哪邊的增益大就自動分到哪邊去。但在測試時如果遇到缺失值,會分到右子樹。

優(yōu)缺點

優(yōu)點(快速高效可容錯)

  • 支持線性分類器(相當于引入L1 L2正則懲罰項的LR和線性回歸,目標函數(shù)公式=誤差平方和+正則項,似LR)
  • 代價函數(shù)用了二階Talor展開,引入一階導(dǎo)和二階導(dǎo),提高模型擬和的速度(損失函數(shù):一個樣本的誤差;代價函數(shù):整個訓(xùn)練集上所有樣本誤差的平均;目標函數(shù):代價函數(shù) + 正則化項)
  • 可以給缺失值自動劃分方向;
  • 同RF,支持樣本(行)隨機抽取,也支持特征(列)隨機抽取,降低運算,防過擬合;
  • 代價函數(shù)引入正則化項,控制模型(樹)復(fù)雜度,
    正則化項包含全部葉子節(jié)點個數(shù),每個葉子節(jié)點得分的L2模的平方和(代表葉子節(jié)點權(quán)重的影響)
    從貝葉斯(先驗累積思想)方差角度考慮,正則降低了模型的方差,防過擬和;
  • 每次迭代后為葉子分配結(jié)合學習速率,減低每棵樹權(quán)重,減少每棵樹影響,靈活調(diào)整后面的學習空間;
  • 支持并行,不是樹并行,是把特征值先預(yù)排序,存起來,可以重復(fù)并行使用計算分裂點;
  • 分裂依據(jù)分開后與未分前的差值增益,不用每個節(jié)點排序算增益,減少計算量,可以并行計算;
  • 可以引入閾值限制樹分裂,控制樹的規(guī)模。

缺點:

  • 容易過擬合;
  • 調(diào)參困難。

應(yīng)用場景

分類,回歸

sklearn參數(shù)

  • learning_rate:學習率
  • n_estimators:多少棵樹
  • max_depth=5:樹最大深度
  • min_child_weight:最小權(quán)重系數(shù)
  • gamma=0:懲罰系數(shù)(力度)
  • lambda:正則化
  • alpha:正則化
  • subsample:隨機選樣本的比例
  • colsample_bytree:隨機選特征
  • objective = 'binary:logistic':損失函數(shù)loss function,求這個函數(shù)的一階二階導(dǎo)
  • scale_pos_weight:要不要指定一個均衡的樹
  • seed=7 #隨機種子,每次復(fù)現(xiàn)都是一樣的
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容