XGboost算法詳解(原理+公式推導(dǎo))
XGBoost是華盛頓大學(xué)博士陳天奇創(chuàng)造的一個梯度提升(Gradient Boosting)的開源框架。至今可以算是各種數(shù)據(jù)比賽中的大殺器,被大家廣泛地運(yùn)用。接下來,就詳細(xì)介紹一下XGBoost的原理和公式推導(dǎo)。
XGBoost其實(shí)是一個樹集成模型,他將K(樹的個數(shù))個樹的結(jié)果進(jìn)行求和,作為最終的預(yù)測值。好比接下來有兩顆決策樹:tree1和tree2。

小男孩的回歸預(yù)測分?jǐn)?shù)是tree1葉子結(jié)點(diǎn)的權(quán)重和tree2葉子結(jié)點(diǎn)的權(quán)重相加:2 + 0.9 = 2.9。爺爺?shù)念A(yù)測分?jǐn)?shù)同理:-1 + (-0.9)= -1.9。
所以我們可以得出Xgboost的預(yù)測函數(shù):

由此得出我們的目標(biāo)函數(shù)(實(shí)際值-預(yù)測值):

而接下來的優(yōu)化就是使得我們的目標(biāo)函數(shù)最小,即預(yù)測值無限接近真實(shí)值。
那么XGBoost就可以抽象成如下方程式,即第t輪的模型預(yù)測等于前面t-1輪的模型預(yù)測再加上一個新的函數(shù),這個新的函數(shù)就是當(dāng)前的決策樹。每加一個函數(shù)預(yù)測效果都要比之前更好一些。

我們之前講決策樹的時候,講到?jīng)Q策樹自身會有一些懲罰項(xiàng),比如葉子結(jié)點(diǎn)過多,決策樹過擬合的風(fēng)險(xiǎn)就會變大。所以說我們設(shè)置一個損失函數(shù)來表述懲罰項(xiàng),比如葉子的個數(shù),還有對權(quán)重的l2懲罰項(xiàng)。

所以我們的目標(biāo)函數(shù)就變成了如下的方程式所示:

接下來我們使用泰勒來展開我們的目標(biāo)函數(shù):

接下來我們進(jìn)一步化簡目標(biāo)函數(shù),把ft換成權(quán)重與葉子結(jié)點(diǎn)的函數(shù),把樣本遍歷換成葉子結(jié)點(diǎn)上的遍歷,減少遍歷次數(shù)。

繼續(xù)化簡,展開懲罰項(xiàng),一并進(jìn)行化簡,可化簡如下所示公式:

為了使得目標(biāo)函數(shù)最小,我們需要對其對權(quán)重w進(jìn)行求導(dǎo)后使其偏導(dǎo)數(shù)為0,然后再帶入目標(biāo)函數(shù)中,如下:

目標(biāo)函數(shù)代表了當(dāng)我們指定一個樹的結(jié)構(gòu)的時候,我們在目標(biāo)上面最多減少多少,我們可以把它叫做結(jié)構(gòu)分?jǐn)?shù),你可以認(rèn)為這個就是類似基尼系數(shù)一樣更加一般的對于樹結(jié)構(gòu)進(jìn)行打分的函數(shù),下面是一個具體的例子:

如上就是比賽戰(zhàn)斗機(jī)Xgboost集成算法的原理和推導(dǎo)公式,他的優(yōu)缺點(diǎn)如下所示:
XGBoost的主要優(yōu)點(diǎn):
1. 簡單易用。相對其他機(jī)器學(xué)習(xí)庫,用戶可以輕松使用XGBoost并獲得相當(dāng)不錯的效果。
2. 高效可擴(kuò)展。在處理大規(guī)模數(shù)據(jù)集時速度快效果好,對內(nèi)存等硬件資源要求不高。
3. 魯棒性強(qiáng)。相對于深度學(xué)習(xí)模型不需要精細(xì)調(diào)參便能取得接近的效果。
4. XGBoost內(nèi)部實(shí)現(xiàn)提升樹模型,可以自動處理缺失值。
XGBoost主要缺點(diǎn)
1. 相對于深度學(xué)習(xí)模型無法對時空位置建模,不能很好地捕獲圖像、語音、文本等高維數(shù)據(jù)。
2. 在擁有海量訓(xùn)練數(shù)據(jù),并能找到合適的深度學(xué)習(xí)模型時,深度學(xué)習(xí)的精度可以遙遙領(lǐng)先XGBoost。
本文轉(zhuǎn)載自??人工智能訓(xùn)練營??,作者:人工智能訓(xùn)練營

















