機器學習筆記10-梯度提升樹(GBDT)
機器學習筆記10-梯度提升樹(GBDT)
在上一節中講到了整合學習的Boosting方法,並詳細解釋了其中的代表性演算法AdaBoost演算法。除了AdaBoost演算法外,Boosting中還有另一個非常常用的演算法:提升樹和梯度提升樹(GBDT)。
-
提升樹
提升樹是以分類樹或迴歸樹為基本分類器的提升方法,可以表示為加法模型: ,其中 表示決策樹, 表示決策樹的引數,M為決策樹的個數。提升樹演算法採用前向分步演算法。首先確定 ,第m步的模型是
其中, 為當前模型,通過極小化損失函式確定下一棵決策樹的引數
針對不同問題的提升樹學習演算法,其主要區別在於使用的損失函式不同。包括用平方誤差損失函式的迴歸問題,用指數損失函式的分類問題,以及用一般損失函式的一般決策問題。對於二類分類問題,提升樹演算法只需要將上一節中的AdaBoost演算法中的基分類器限制為二類分類樹。以下敘述迴歸問題的提升樹:
此時損失函式為:
這裡 ,是當前模型擬合數據的殘差。具體地,其演算法可表述為:
(1)初始化 ;
(2)對 ,
(i)計算殘差 ;
(ii)擬合殘差 學習一個迴歸樹,得到 ,這一步可參考決策樹那一節;
(iii)更新
(3)得到迴歸樹模型 。 -
梯度提升樹(GBDT)
提升樹當損失函式是平方損失或指數損失函式時,每一步優化都很簡單。但對於一般損失函式是,每一步優化都不容易。利用梯度提升樹可以解決這個問題。它利用了最速下降法的近似方法,其關鍵是利用損失函式的負梯度在當前模型的值