05-機器學(xué)習(xí)-GBDT-梯度提升決策樹

視頻詳解:

1.GBDT算法
GBDT(Gradient Boosting Decision Tree),全名叫梯度提升決策樹,是一種迭代的決策樹算法,又叫 MART(Multiple Additive Regression Tree),它通過構(gòu)造一組弱的學(xué)習(xí)器(樹),并把多顆決策樹的結(jié)果累加起來作為最終的預(yù)測輸出。該算法將決策樹與集成思想進行了有效的結(jié)合。
GBDT中的樹是回歸樹(不是分類樹),GBDT用來做回歸預(yù)測,調(diào)整后也可以用于分類。

1.1 應(yīng)用場景
1、用于自動挖掘有效特征、特征組合
2、作為LR模型中的特征,提高CTR預(yù)估
3、GBDT應(yīng)用于淘寶的搜索及預(yù)測業(yè)務(wù)
1.2 Boosting核心思想
Boosting方法訓(xùn)練基分類器時采用串行的方式,各個基分類器之間有依賴。它的基本思路是將基分類器層層疊加,每一層在訓(xùn)練的時候,對前一層基分類器分錯的樣本,給予更高的權(quán)重。測試時,根據(jù)各層分類器的結(jié)果的加權(quán)得到最終結(jié)果。
Bagging 與 Boosting 的串行訓(xùn)練方式不同,Bagging 方法在訓(xùn)練過程中,各基分類器之間無強依賴,可以進行并行訓(xùn)練。

2、GBDT詳解
GBDT的原理
所有弱分類器的結(jié)果相加等于預(yù)測值。
每次都以當(dāng)前預(yù)測為基準(zhǔn),下一個弱分類器去擬合誤差函數(shù)對預(yù)測值的殘差(預(yù)測值與真實值之間的誤差)。
GBDT的弱分類器使用的是樹模型(cart)。

如圖是一個非常簡單的幫助理解的示例,我們用 GBDT 去預(yù)測年齡:
第一個弱分類器(第一棵樹)預(yù)測一個年齡(如20歲),計算發(fā)現(xiàn)誤差有10歲;
第二棵樹預(yù)測擬合殘差,預(yù)測值 6,計算發(fā)現(xiàn)差距還有 4 歲;
第三棵樹繼續(xù)預(yù)測擬合殘差,預(yù)測值 3,發(fā)現(xiàn)差距只有 1 歲了;
第四課樹用 1 歲擬合剩下的殘差,完成。
最終,四棵樹的結(jié)論加起來,得到30歲這個標(biāo)注答案(實際工程實現(xiàn)里,GBDT 是計算負(fù)梯度,用負(fù)梯度近似殘差)
GBDT計算流程

1、GBDT與負(fù)梯度近似殘差
回歸任務(wù)下,GBDT在每一輪的迭代時對每個樣本都會有一個預(yù)測值,此時的損失函數(shù)為均方差損失函數(shù):

損失函數(shù)的負(fù)梯度計算如下:


可以看出,當(dāng)損失函數(shù)選用「均方誤差損失」時,每一次擬合的值就是(真實值-預(yù)測值),即殘差。
2、GBDT訓(xùn)練過程
我們來借助1個簡單的例子理解一下 GBDT 的訓(xùn)練過程。假定訓(xùn)練集只有4個人(A、B、C、D),他們的年齡分別是(14,16,24,26)。其中,A、B分別是高一和高三學(xué)生;C、D分別是應(yīng)屆畢業(yè)生和工作兩年的員工。
我們先看看用回歸樹來訓(xùn)練,得到的結(jié)果如下圖所示:

接下來改用 GBDT 來訓(xùn)練。由于樣本數(shù)據(jù)少,我們限定葉子節(jié)點最多為2(即每棵樹都只有一個分枝),并且限定樹的棵樹為2。 最終訓(xùn)練得到的結(jié)果如下圖所示:

上圖中的樹很好理解:A、B年齡較為相近,C、D年齡較為相近,被分為左右兩支,每支用平均年齡作為預(yù)測值。
我們計算殘差(即「實際值」-「預(yù)測值」),所以 A 的殘差 14-15=-1 。
這里 A的「預(yù)測值」是指前面所有樹預(yù)測結(jié)果累加的和,在當(dāng)前情形下前序只有一棵樹,所以直接是15 ,其他多樹的復(fù)雜場景下需要累加計算作為 A 的預(yù)測值。

上圖中的樹就是殘差學(xué)習(xí)的過程了:
把 A、B、C、D 的值換作殘差 -1、1、-1、1,再構(gòu)建一棵樹學(xué)習(xí),這棵樹只有兩個值 1 和 -1,直接分成兩個節(jié)點:A、C 在左邊,B、D在右邊。
這棵樹學(xué)習(xí)殘差,在我們當(dāng)前這個簡單的場景下,已經(jīng)能保證預(yù)測值和實際值(上一輪殘差)相等了。
我們把這棵樹的預(yù)測值累加到第一棵樹上的預(yù)測結(jié)果上,就能得到真實年齡,這個簡單例子中每個人都完美匹配,得到了真實的預(yù)測值。

最終的預(yù)測過程是這樣的:
A:高一學(xué)生,購物較少,經(jīng)常問學(xué)長問題,真實年齡 14 歲,預(yù)測年齡A=15-1=14
B:高三學(xué)生,購物較少,經(jīng)常被學(xué)弟提問,真實年齡 16 歲,預(yù)測年齡B=15+1=16
C:應(yīng)屆畢業(yè)生,購物較多,經(jīng)常問學(xué)長問題,真實年齡 24 歲,預(yù)測年齡C=25-1=24
D:工作兩年員工,購物較多,經(jīng)常被學(xué)弟提問,真實年齡 26 歲,預(yù)測年齡D=25+1=26
綜上,GBDT 需要將多棵樹的得分累加得到最終的預(yù)測得分,且每輪迭代,都是在現(xiàn)有樹的基礎(chǔ)上,增加一棵新的樹去擬合前面樹的預(yù)測值與真實值之間的殘差。
3.梯度提升 vs 梯度下降
下面我們來對比一下「梯度提升」與「梯度下降」。這兩種迭代優(yōu)化算法,都是在每1輪迭代中,利用損失函數(shù)負(fù)梯度方向的信息,更新當(dāng)前模型,只不過:
梯度下降中,模型是以參數(shù)化形式表示,從而模型的更新等價于參數(shù)的更新。


梯度提升中,模型并不需要進行參數(shù)化表示,而是直接定義在函數(shù)空間中,從而大大擴展了可以使用的模型種類。



3.GBDT優(yōu)缺點
1)優(yōu)點
預(yù)測階段,因為每棵樹的結(jié)構(gòu)都已確定,計算速度快。
適用稠密數(shù)據(jù),泛化能力和表達能力都不錯,數(shù)據(jù)科學(xué)競賽榜首常見模型。
可解釋性不錯,魯棒性亦可,能夠自動發(fā)現(xiàn)特征間的高階關(guān)系。
2)缺點
GBDT 在高維稀疏的數(shù)據(jù)集上,效率較差,且效果表現(xiàn)不如 SVM 或神經(jīng)網(wǎng)絡(luò)。
適合數(shù)值型特征,在 NLP 或文本特征上表現(xiàn)弱。
訓(xùn)練過程無法并行,工程加速只能體現(xiàn)在單顆樹構(gòu)建過程中。
4.隨機森林 vs GBDT
1)相同點
都是集成模型,由多棵樹組構(gòu)成,最終的結(jié)果都是由多棵樹一起決定。
RF?和?GBDT?在使用?CART?樹時,可以是分類樹或者回歸樹。
2)不同點
訓(xùn)練過程中,隨機森林的樹可以并行生成,而?GBDT?只能串行生成。
隨機森林的結(jié)果是多數(shù)表決表決的,而?GBDT?則是多棵樹累加之。
隨機森林對異常值不敏感,而?GBDT?對異常值比較敏感。
隨機森林降低模型的方差,而?GBDT?是降低模型的偏差。
代碼演示-GBDT
數(shù)據(jù)集 隨機生成
sklearn
可視化決策樹插件 Download:https://graphviz.org/download/
決策樹插件安裝文檔:https://blog.csdn.net/u012744245/article/details/103360769
