GBDT (Gradient Boosting Decision Tree) 梯度提升迭代決策樹。GBDT 也是 Boosting 算法的一種,但是和 AdaBoost 算法不同(AdaBoost 算法上一篇文章已經(jīng)介紹);區(qū)別如下:AdaBoost 算法是利用前一輪的弱學(xué)習(xí)器的誤差來更新樣本權(quán)重值,然后一輪一輪的迭代;GBDT 也是迭代,但是 GBDT 要求弱學(xué)習(xí)器必須是 CART 模型,而且 GBDT 在模型訓(xùn)練的時(shí)候,是要求模型預(yù)測(cè)的樣本損失盡可能的小。
GBDT 直觀理解:每一輪預(yù)測(cè)和實(shí)際值有殘差,下一輪根據(jù)殘差再進(jìn)行預(yù)測(cè),最后將所有預(yù)測(cè)相加,就是結(jié)果。

GBDT 模型可以表示為決策樹的加法模型:

其中,T(x;θm)表示決策樹;θm 為決策樹的參數(shù); M為樹的個(gè)數(shù)。
采用前向分布算法, 首先確定初始提升樹 fo(x) = 0, 第 m 步的模型是:

通過經(jīng)驗(yàn)風(fēng)險(xiǎn)極小化確定下一棵樹的參數(shù):(其實(shí)就是讓殘差盡可能的小找到最優(yōu)劃分點(diǎn))

這里的 L() 是損失函數(shù),回歸算法選擇的損失函數(shù)一般是均方差(最小二乘)或者絕對(duì)值誤差;而在分類算法中一般的損失函數(shù)選擇對(duì)數(shù)函數(shù)來表示
GBDT 既可以做回歸也可以做分類,下面先描述一下做回歸的算法流程:
已知一個(gè)訓(xùn)練數(shù)據(jù)集 T = {(x1,y1),(x2,y2),...,(xn,yn)}, 如果將訓(xùn)練集分為不同的區(qū)域 R1,R2,...,Rn,然后可以確定每個(gè)區(qū)域輸出的常識(shí) c,c 的計(jì)算是將每個(gè)區(qū)域的 y 值相加再除以 y 的個(gè)數(shù),其實(shí)就是求一個(gè)平均值。樹可以表示為:

然后通過下圖方式來確定具體分割點(diǎn):

我將李航的統(tǒng)計(jì)學(xué)方法里面的例子粘出來,就知道提升樹是如何計(jì)算的了:


以上就是 GBDT 選擇分割點(diǎn)的過程, 如果特征有多個(gè)的話也是一樣的道理,選擇特征和特征值使得誤差最小的點(diǎn),作為分割點(diǎn)。所以其實(shí) GBDT 也可以用作特征選擇,通過GBDT 可以將重要的特征選擇出來,當(dāng)特征非常多的時(shí)候可以用來做降維。然后再融合類似邏輯回歸這樣的模型再進(jìn)行訓(xùn)練。
歡迎大家關(guān)注,vx公眾號(hào)同名