梯度提公升樹 負梯度和殘差

2022-07-06 15:24:16 字數 1681 閱讀 3522

提公升樹是以分類樹和回歸樹為基本分類器的提公升方法。提公升樹被認為是統計學習中效能最好的方法之一。

提公升方法實際採用加法模型(即基函式的線性組合)與前向分布演算法。以決策樹為基函式的提公升方法稱為提公升樹(boosting tree)。

提公升樹模型可以表示為決策樹的加法模型

\[f_m(x) = \sum_^t(x; \theta_m)

\]其中, \(t(x; \theta_m)\) 表示決策樹;\(\theta_m\) 為決策樹的引數;\(m\) 為樹的個數。

提公升樹演算法採用前向分布演算法

首先確定初始提公升樹 \(f_0(x) = 0\) ,第 \(m\) 步的模型是

\[f_m(x) = f_(x) + t(x; \theta_m)

\]其中,\(f_(x)\) 為當前模型,通過經驗風險極小化確定下一棵決策樹的引數 \(\theta_m\) ,

\[\hat_m = arg \min_ \sum_^l(y_i, f_(x_i) + t(x_i; \theta_m))

\]不同問題的梯度提公升樹學習演算法,其主要區別在於使用的損失函式不同。

用平方誤差損失函式的回歸問題;

用指數損失函式的分類問題;

用一般損失函式的一般決策問題。

梯度提公升模型的求解過程是梯度下降在函式空間的優化過程。

殘差是負梯度在損失函式為平方誤差時的特殊情況。

我們希望找到乙個 \(f(x)\) 使得 \(l(y, f(x))\) 最小,當前我們得到 \(f_(x)\),如果想得到更優的 \(f(x)\),根據梯度下降法進行迭代,\(f(x)\) 就得沿著使損失函式 \(l\) 減小的方向變化。

\[\begin

f_m(x) = f_(x) - \eta \frac(x))}}(x)}}

\end

\]其中,\(\eta\) 為學習率,\(\frac(x))}}(x)}}\) 為損失函式 \(l\) 對未知函式的偏導 \(\frac}}\) 在 \(f_(x)\) 處的值。

同時,最新學習器是由當前學習器 \(f_(x)\) 與本次要生成的回歸樹 \(t_m(x)\) 相加得到

\[\begin

f_m(x) = f_(x) + \eta t_m

\end

\]因此,為了讓損失函式減小,根據式(1)和(2)知,可以取

\[t_m(x) = - \frac(x))}}(x)}}

\]因此,我們可以使用損失函式對 \(f(x)\) 的負梯度 $$- \frac(x))}}(x)}}$$ 來擬合新的回歸樹 \(t_m(x)\).

當損失函式為平方損失時,即

\[l(y, f(x)) = \frac\big(y - f(x) \big)^2

\]損失函式的負梯度為

\[- \frac}}\big|_(x)} = - \frac(x))}}(x)}} = y - f_(x)

\]這裡, \(y - f_(x)\) 是當前模型擬合資料的殘差(residual)。所以,對回歸問題的提公升樹來說,只需要簡單的擬合當前模型的殘差。

最後,準確的說,不是負梯度代替殘差,而是損失函式是平方損失時,負梯度剛好是殘差,殘差只是特例。

《統計學習方法》 李航

《gbdt演算法原理與系統設計簡介》 wepon

為什麼常說GBDT用負梯度近似殘差

殘差 真值 值,明明可以直接計算。為什麼要引入麻煩的梯度?有什麼用嗎?實際上這是因果倒置,gbdt想要計算的是負梯度。參考 1 我們知道,函式中下降最快的方向是導數方向,同理 gbdt中,損失函式減小最快的方向也是本身的導數方向。2 如上圖所示 gbdt中,損失函式的導數l f x 是關於擬合函式f...

梯度提公升樹GBDT

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

gbdt梯度提公升樹

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