梯度提升決策樹(GBDT:GradientBoostingDecisionTree)算法是集成學習中boosting的一種。總體思路是利用每個弱學習器計算當前輸出與真實值的殘差,然後講每個學習器輸出的殘差進行累加,以求接近真實值。訓練過程可以用下面的公式來表示:
fm(x)=fm−1(x)+Tm(x,Δm)
其中,fm爲前m個學習器的輸出結果,Tm爲當前m輪訓練的學習器(這裏的學習器爲決策樹)。△爲當前的殘差。
當迭代到一定程度,就可以訓練出完整的模型了,模型可表示爲:
F(x)=m=1∑MTm(x)
那麼,如何訓練迭代到第m輪的學習器Tm呢?
首先,定義損失函數爲L。舉個最簡單的例子,如果用均方誤差(MSE)作爲損失函數,那麼對於每個樣本xi,損失Li爲:
L(xi)=(yi−fm−1(xi)−Tm(xi))2
yi是訓練集的真實值,fm-1我們已經在之前的訓練中得到。所以我們可以計算當前的殘差:
Δmi=yi=fm−1(xi)
所以現在損失函數可以寫成:
L(xi)=(Δmi−Tm(xi))2
我們的目標當然是最小化損失函數,很顯然,△等於T(x)時損失函數取得最小值0。所以我們訓練當前學習器Tm的期望輸出就可以是△。所以接下來用決策樹的訓練方法訓練輸入爲x,輸出爲△的數據集即可。
當然,大多數損失函數不會具有均方誤差(MSE)這個特性,殘差△也不是很簡單的能求解出的,如果再加入正則項那就更爲複雜。所以需要用到一些近似處理。
(此處省略大量公式推導的介紹,有興趣可以看論文:Greedy function approximation: a gradient boosting machine)