XGboost算法詳解(原理+公式推導(dǎo))
XGBoost是華盛頓大學(xué)博士陳天奇創(chuàng)造的一個(gè)梯度提升(Gradient Boosting)的開源框架。至今可以算是各種數(shù)據(jù)比賽中的大殺器,被大家廣泛地運(yùn)用。接下來,就詳細(xì)介紹一下XGBoost的原理和公式推導(dǎo)。
XGBoost其實(shí)是一個(gè)樹集成模型,他將K(樹的個(gè)數(shù))個(gè)樹的結(jié)果進(jìn)行求和,作為最終的預(yù)測(cè)值。好比接下來有兩顆決策樹:tree1和tree2。
小男孩的回歸預(yù)測(cè)分?jǐn)?shù)是tree1葉子結(jié)點(diǎn)的權(quán)重和tree2葉子結(jié)點(diǎn)的權(quán)重相加:2 + 0.9 = 2.9。爺爺?shù)念A(yù)測(cè)分?jǐn)?shù)同理:-1 + (-0.9)= -1.9。
所以我們可以得出Xgboost的預(yù)測(cè)函數(shù):
由此得出我們的目標(biāo)函數(shù)(實(shí)際值-預(yù)測(cè)值):
而接下來的優(yōu)化就是使得我們的目標(biāo)函數(shù)最小,即預(yù)測(cè)值無限接近真實(shí)值。
那么XGBoost就可以抽象成如下方程式,即第t輪的模型預(yù)測(cè)等于前面t-1輪的模型預(yù)測(cè)再加上一個(gè)新的函數(shù),這個(gè)新的函數(shù)就是當(dāng)前的決策樹。每加一個(gè)函數(shù)預(yù)測(cè)效果都要比之前更好一些。
我們之前講決策樹的時(shí)候,講到?jīng)Q策樹自身會(huì)有一些懲罰項(xiàng),比如葉子結(jié)點(diǎn)過多,決策樹過擬合的風(fēng)險(xiǎn)就會(huì)變大。所以說我們?cè)O(shè)置一個(gè)損失函數(shù)來表述懲罰項(xiàng),比如葉子的個(gè)數(shù),還有對(duì)權(quán)重的l2懲罰項(xiàng)。
所以我們的目標(biāo)函數(shù)就變成了如下的方程式所示:
接下來我們使用泰勒來展開我們的目標(biāo)函數(shù):
接下來我們進(jìn)一步化簡(jiǎn)目標(biāo)函數(shù),把ft換成權(quán)重與葉子結(jié)點(diǎn)的函數(shù),把樣本遍歷換成葉子結(jié)點(diǎn)上的遍歷,減少遍歷次數(shù)。
繼續(xù)化簡(jiǎn),展開懲罰項(xiàng),一并進(jìn)行化簡(jiǎn),可化簡(jiǎn)如下所示公式:
為了使得目標(biāo)函數(shù)最小,我們需要對(duì)其對(duì)權(quán)重w進(jìn)行求導(dǎo)后使其偏導(dǎo)數(shù)為0,然后再帶入目標(biāo)函數(shù)中,如下:
目標(biāo)函數(shù)代表了當(dāng)我們指定一個(gè)樹的結(jié)構(gòu)的時(shí)候,我們?cè)谀繕?biāo)上面最多減少多少,我們可以把它叫做結(jié)構(gòu)分?jǐn)?shù),你可以認(rèn)為這個(gè)就是類似基尼系數(shù)一樣更加一般的對(duì)于樹結(jié)構(gòu)進(jìn)行打分的函數(shù),下面是一個(gè)具體的例子:
如上就是比賽戰(zhàn)斗機(jī)Xgboost集成算法的原理和推導(dǎo)公式,他的優(yōu)缺點(diǎn)如下所示:
XGBoost的主要優(yōu)點(diǎn):
1. 簡(jiǎn)單易用。相對(duì)其他機(jī)器學(xué)習(xí)庫,用戶可以輕松使用XGBoost并獲得相當(dāng)不錯(cuò)的效果。
2. 高效可擴(kuò)展。在處理大規(guī)模數(shù)據(jù)集時(shí)速度快效果好,對(duì)內(nèi)存等硬件資源要求不高。
3. 魯棒性強(qiáng)。相對(duì)于深度學(xué)習(xí)模型不需要精細(xì)調(diào)參便能取得接近的效果。
4. XGBoost內(nèi)部實(shí)現(xiàn)提升樹模型,可以自動(dòng)處理缺失值。
XGBoost主要缺點(diǎn)
1. 相對(duì)于深度學(xué)習(xí)模型無法對(duì)時(shí)空位置建模,不能很好地捕獲圖像、語音、文本等高維數(shù)據(jù)。
2. 在擁有海量訓(xùn)練數(shù)據(jù),并能找到合適的深度學(xué)習(xí)模型時(shí),深度學(xué)習(xí)的精度可以遙遙領(lǐng)先XGBoost。
本文轉(zhuǎn)載自??人工智能訓(xùn)練營(yíng)??,作者:人工智能訓(xùn)練營(yíng)
