(參考:https://www.cnblogs.com/ScorpioLu/p/8296994.html)
(參考:https://www.cnblogs.com/ModifyRong/p/7744987.html)
(參考:https://blog.csdn.net/google19890102/article/details/51746402)
一琳水、集成學(xué)習(xí)方法
(1)Bagging
對(duì)訓(xùn)練樣本重采樣來(lái)得到不同的訓(xùn)練樣本集,在這些訓(xùn)練樣本集上分別訓(xùn)練學(xué)習(xí)器,最終合并。Bagging方法中菇怀,最重要的算法是隨機(jī)森林算法快鱼。
(2)Boosting
學(xué)習(xí)器之間存在先后順序,每個(gè)樣本有權(quán)重赌渣,初始化時(shí)世落,每個(gè)樣本的權(quán)重是相等的淮腾,訓(xùn)練過(guò)程中調(diào)整正確和錯(cuò)誤樣本的權(quán)重。同時(shí)屉佳,每個(gè)學(xué)習(xí)器的權(quán)重也是不一樣的谷朝。Boosting中,最重要的方法包括AdaBoost和GBDT忘古。
二徘禁、Gradient Boosting
(1)在函數(shù)空間優(yōu)化
損失函數(shù):
首先設(shè)置初始值:
以函數(shù)F為整體,對(duì)于每一個(gè)樣本Xi髓堪,對(duì)存在對(duì)應(yīng)的函數(shù)值F(Xi)。與梯度下降法更新過(guò)程一致娘荡,經(jīng)過(guò)M代干旁,得到的最優(yōu)函數(shù)為:
(2)Gradient Boosting
由上圖可知,Boosting的學(xué)習(xí)結(jié)果是b個(gè)學(xué)習(xí)器的和:
具體過(guò)程如下:
三炮沐、Gradient Boosting Decision Tree (1st博客)
在梯度提升決策樹(shù)中争群,基學(xué)習(xí)器是分類回歸樹(shù)CART,使用的是CART中的回歸樹(shù)大年。
(1)分類回歸樹(shù)CART
對(duì)于m個(gè)訓(xùn)練樣本的回歸問(wèn)題换薄,訓(xùn)練樣本為:
初始時(shí),CART樹(shù)中只包含根節(jié)點(diǎn):
然后計(jì)算該節(jié)點(diǎn)的方差的m倍:
此時(shí)翔试,從n維特征中選擇第j維特征作為劃分標(biāo)準(zhǔn)轻要,分為左子樹(shù)和右子樹(shù),其中樣本個(gè)數(shù)分別為m1和m2:
為了尋找最好的劃分垦缅,計(jì)算左右子樹(shù)的方差和:
并且選擇方差和最小的劃分為最終的劃分冲泥,依次這樣劃分下去:
注:關(guān)于劃分,計(jì)算過(guò)程可以進(jìn)一步優(yōu)化:
第一項(xiàng)相同,最好的劃分對(duì)應(yīng)于兩節(jié)點(diǎn)的值的和的最大值:
(2)GBDT——二分類
在梯度提升決策樹(shù)GBDT中凡恍,通過(guò)定義不同的損失函數(shù)志秃,可以完成不同的學(xué)習(xí)任務(wù),二分類是機(jī)器學(xué)習(xí)中一類比較重要的分類算法嚼酝,在二分類中浮还,其損失函數(shù)為:
套用上面的GB框架,得到下述二分類的GBDT算法:
在構(gòu)建每一棵CART回歸樹(shù)的過(guò)程中闽巩,每一個(gè)樣本的預(yù)測(cè)值應(yīng)該與y-(y bar)盡可能一致碑定,y-(y bar)計(jì)算過(guò)程如下:
在y-(y bar,通秤止伲可以稱為殘差延刘,更準(zhǔn)確應(yīng)叫為梯度下降方向)上建立CART回歸樹(shù)。最終將每一個(gè)訓(xùn)練樣本劃分到對(duì)應(yīng)的葉子結(jié)點(diǎn)中六敬,計(jì)算該葉子結(jié)點(diǎn)的預(yù)測(cè)值:
由Newton-Raphson迭代公式可得:
代碼參考:https://github.com/guestwalk/kaggle-2014-criteo
Python版本:https://github.com/liudragonfly/GBDT
三碘赖、Gradient Boosting Decision Tree (2nd博客)
(1)GBDT選擇特征
GBDT的特征選擇就是CART Tree生成的過(guò)程。GBDT的弱分類器默認(rèn)是CART Tree外构,也可以是其他的弱分類器普泡,前提是低方差和高偏差,框架服從Boosting框架即可审编。
CART的特征選擇過(guò)程就是李航第五章中對(duì)CART Tree的描述:
(2)GBDT構(gòu)建特征
GBDT能構(gòu)建特征并不準(zhǔn)確撼班,其本身是不能產(chǎn)生特征的,但是可以利用GBDT產(chǎn)生特征的組合垒酬。
(3)GBDT用于分類
GBDT無(wú)論用于分類還是回歸一直都是使用CART回歸樹(shù)勘究,核心是因?yàn)镚BDT每輪的訓(xùn)練是在上一輪的訓(xùn)練的殘差基礎(chǔ)上進(jìn)行訓(xùn)練的矮湘。殘差就是當(dāng)前模型的負(fù)梯度值。
第一步口糕,針對(duì)樣本X每個(gè)可能的類都訓(xùn)練一個(gè)CART缅阳。例如,目標(biāo)有三類景描,即K = 3十办,而樣本 x 屬于第二類,可以用向量[0, 1, 0]表示超棺。每輪訓(xùn)練的時(shí)候是同時(shí)訓(xùn)練三棵樹(shù)向族,第一棵樹(shù)輸入為(x, 0),第二棵樹(shù)輸入為(x, 1)说搅,第三棵樹(shù)輸入為(x, 0)炸枣。這里每棵樹(shù)的訓(xùn)練過(guò)程就是CART生成過(guò)程。仿照多分類的邏輯回歸,使用softmax來(lái)產(chǎn)生概率适肠,例如屬于類別1的概率為:
并且可以針對(duì)各類別求出殘差:
然后開(kāi)始第二輪訓(xùn)練霍衫,對(duì)每一類的輸入分別為(x, y11)、(x, y22)和(x, y33)侯养,繼續(xù)訓(xùn)練三棵樹(shù)敦跌。一直迭代M輪,有如下三個(gè)式子:
當(dāng)訓(xùn)練完畢后逛揩,新來(lái)一個(gè)樣本x1柠傍,我們需要預(yù)測(cè)該樣本的類別,便可以由以上三個(gè)式子產(chǎn)生三個(gè)值辩稽,然后利用softmax函數(shù)求概率惧笛。