以下關于GBM和GBDT的理解來自經典論文[greedy function approximation: a gradient boosting machine]本橙,by Jerome H.Friedman,(https://github.com/LouisScorpio/datamining/tree/master/papers)
論文的整體思路:
1.函數(shù)空間的數(shù)值優(yōu)化
對算法中損失函數(shù)的數(shù)值優(yōu)化不是在參數(shù)空間,而是在函數(shù)空間景馁,數(shù)值優(yōu)化方式為梯度下降肯适;
2.GBM
以加法模型為基礎震肮,使用上述優(yōu)化方法湿刽,構建一套通用梯度提升算法GBM兽泣;
3.不同損失類型的GBM
具體展現(xiàn)使用不同類型的損失時的GBM怀读;
4.GBDT
以CART回歸樹為加法模型的弱分類器诉位,構建算法模型即GBDT。
函數(shù)空間的數(shù)值優(yōu)化
首先菜枷,考慮加法模型苍糠,即最終分類器是由多個弱分類器線性相加的結果,表示為以下形式:
????? ?????(1)
其中啤誊,h(x;a)是弱分類器岳瞭,是關于輸入特征x的函數(shù),a是函數(shù)的參數(shù)(如果h(x;a)為回歸樹蚊锹,那么a就是回歸樹中用于分裂的特征瞳筏、特征的分裂點以及樹的葉子節(jié)點的分數(shù)),M是弱分類器的數(shù)量牡昆,為弱分類器的權重(在GBDT中相當于learning_rate姚炕,即起到shrinkage的作用)。
參數(shù)空間的數(shù)值優(yōu)化
假設預測的目標函數(shù)為F(x; P)丢烘,其中P為參數(shù)柱宦,損失為L,那么損失函數(shù)表示為:
????????
對應參數(shù)P的最優(yōu)解表示為:
??????????
考慮使用梯度下降的優(yōu)化方式播瞳,首先計算損失函數(shù)對參數(shù)P的梯度
:
?????????
然后掸刊,對參數(shù)P沿著負梯度方向即-方向更新,更新的步長為:
???????????
其中是在負梯度方向上更新參數(shù)的最優(yōu)步長赢乓,通過以下方式線性搜索得到:
???????
從初始值開始忧侧,經過多次這樣的更新迭代之后石窑,參數(shù)P的值最終為:
????????
以上為參數(shù)空間的數(shù)值優(yōu)化。
函數(shù)空間的數(shù)值優(yōu)化
在函數(shù)空間苍柏,假設預測的目標函數(shù)為F(x)尼斧,損失為L,那么損失函數(shù)表示為:
????????
注意试吁,這里損失函數(shù)的參數(shù)不再是P棺棵,而是函數(shù)。
按照梯度下降的優(yōu)化方式熄捍,這里要計算損失函數(shù)對函數(shù)F的梯度
:
?????
然后對函數(shù)沿著負梯度方向更新烛恤,更新的步長如下:
?????????
其中是在負梯度方向上更新參數(shù)的最優(yōu)步長,通過以下方式線性搜索得到:
???
經過多次迭代之后余耽,最終的函數(shù)結果為:
?????????
GBM
考慮(1)中的加法模型形式缚柏,可以得到
??????
假設損失為L,那么
?
根據函數(shù)空間的數(shù)值優(yōu)化碟贾,應該對應于負梯度:
????
在模型訓練時币喧,負梯度是基于樣本點進行的估計,為了提高泛化能力袱耽,一種可行的解決辦法是讓
去擬合負梯度
杀餐,由此得到:
????
擬合學習到的作為加法模型的弱學習器。加法模型的步長通過線性搜索的方式得到:
??
綜上朱巨,GBM整個算法流程如下:
- 初始化:
- For m = 1 to M do:
3.- endFor
end Algorithm