梯度提公升樹 GBDT 原理

2022-07-12 14:30:55 字數 1419 閱讀 8348

gbdt有很多簡稱,有gbt(gradient boosting tree), gtb(gradient tree boosting ), gbrt(gradient boosting regression tree), mart(multiple additive regression tree),其實都是指的同一種演算法。

gbdt是整合學習boosting中一員,與傳統adaboost不同。adaboost利用弱學習器的誤差率更新訓練集的權重,這樣迭代下去。gbdt使用前向分布演算法迭代,弱學習器只能使用cart回歸樹,迭代思路與adaboost也不同。

在gbdt的迭代中,假設前一輪迭代得到的強學習器是 ft-1(x) ,損失函式是 l(y, ft-1(x)),那麼本輪迭代的目標是找到乙個cart回歸樹模型的弱學習器 ht(x),讓本輪的損失函式 l(y, ft(x) + ht(x))最小。即本輪迭代找到乙個決策樹,讓損失函式變小。

gbdt的思想可以用乙個通俗的例子解釋,假如有個人30歲,我們首先用20歲去擬合,發現損失有10歲,這時我們用6歲去擬合剩下的損失,發現差距還有4歲,第三輪我們用3歲擬合剩下的差距,差距就只有一歲了。如果我們的迭代輪數還沒有完,可以繼續迭代,每一輪迭代,擬合的歲數誤差都會減小。

但是這個損失的擬合不好度量,損失函式各種各樣,怎麼找到一種通用的擬合方法?

freidman提出用損失函式的負梯度擬合本輪損失的近似值,進而擬合乙個cart回歸樹。

第 t 輪第 i 個樣本的損失函式的負梯度表示為:

利用(xi, rti) (i = 1,2,...m),擬合乙個cart回歸樹,得到第 t 個回歸樹,對應葉節點區域 rtj,j = 1,2,...j。其中 j 為葉節點的個數。

針對每乙個葉子節點裡的樣本,求出使損失函式最小,也就是擬合葉子節點最好的輸出值  ctj 如下:

這樣得到本輪決策樹擬合函式:

從而得到本輪強學習器表示式:

無論分類還是回歸,通過損失函式的負梯度擬合,就可以用gbdt來解決。區別在於損失函式不同導致負梯度不同。

輸入:訓練集樣本 t = ,最大迭代次數 t,損失函式 l

輸出:強學習器 f(x)

(1) 初始化弱學習器

(2) 對迭代輪數 t = 1,2,...t,有:

a. 對樣本 i=1,2,...m,計算負梯度

b. 利用(xi, rti) (i=1,2,...m),擬合乙個cart回歸樹,得到第 t 個回歸樹,其對應的葉子節點區域為 rtj ,j = 1,2,3...j。其中 j 為葉子節點的個數。

c. 對葉子區域 j = 1,2,3...j,計算最佳擬合值

d. 更新強學習器

(3). 得到強學習器 f(x) 的表示式

分類演算法的輸出是離散的類別值,需要處理才能使用負梯度。

兩個方法:一是用指數損失函式,此時gbdt退化為adaboost演算法。二是用類似邏輯回歸的對數似然損失函式方法。

來自:劉建平

梯度提公升樹GBDT原理

原文 提公升方法實際採用加法模型 即基函式的線性組合 與前向分布演算法。以決策樹為基函式的提公升方法稱為提公升樹 boosting tree 對分類問題決策樹是二叉分類樹,對回歸問題決策樹是二叉決策樹。提公升樹模型可以表示為決策樹的加法模型 其中,回歸問題提公升樹使用以下前向分布演算法 在前向分布演...

梯度提公升樹GBDT

上一節我們講了adaboost,而提公升樹也是提公升方法的一種,它的基分類器為分類樹或者回歸樹。ps 首先我們講一下殘差的概念 殘差是指實際值和估計值之間的差,就是相減。一般提公升樹的模型的損失函式是平方損失和對數損失,所以優化很簡單。但是對一般損失函式而言就有困難,所以又有了梯度提公升演算法,然後...

gbdt梯度提公升樹

這採用boosting的思想,把表現一般的學習器通過一定的方法結合成效果相對比較好的學習器 gbdt是提公升樹的一種,是多棵樹的加權結果。採用的是分類回歸樹 cart 樹的劃分採用基尼係數。採用前向分布演算法 1 gbdt為什麼是用負梯度代替殘差?首先這是邏輯上顛倒的錯誤。實質沒有明白gbdt是怎麼...