決策樹可以分為二叉分類樹或者二叉回歸樹,剛剛我們講了分類樹,現在介紹一下回歸樹。回歸問題是用來處理連續值。
提公升樹採用了前向分布演算法,模型如下:
公式分析:
演算法目標:圖中的x,y圖表示的就是,曲線上的點就是這個回歸樹所**到的殘差的**值,我們最後要的就是**值接近真實的殘差就是去擬合這個殘差(fitted residual),讓損失函式(loss)最小。
例子
初始化的10個點:
開始找第一課回歸樹,首先尋找中值(1.5, 2.5 ,3.5…)
假設以1.5為閾值,那麼右邊的2-10的均值就是7.5.
然後我們來(5.56-5.56) ^2 + (5.7-7.5) ^2 + (5.91-7.5) ^2+…
然後記為ms,然後分別找到 2.5, 3.5, 4.5,…的ms照到最小的ms。
用公式表示就是:
那麼在這題中ms=6.5時最小。左右均值c1=6.24, c2=9.91
然後需要製作殘差表,與adaboost改變權重不同。下圖的豎虛線就是我們的殘差。我們就是要做乙個拉近,慢慢擬合我們需要的點。我們下面這一步就是需要把曲線在在殘差的方向上做乙個拉近。殘差就是使我們直接在需要拉近的方向上做乙個縮小,是我們的曲線可以更好的擬合點。
殘差表如下:
如序號1(5.56-6.24)= -0.68
和之前一樣的方式找到閾值3.5。就相當於我們在原有6.5的分類的基礎上,進行了更細緻的劃分
然後記錄下這一輪的平方損失誤差:
使用新的閾值開始下輪。
最後當我們的平方損失誤差達到我們的停止條件,或者達到了設計的迭代次數,那我們我們停止推算。這題中我們得到如下結果:
由於我們的損失函式是平方差損失函式所以我們可以使用殘差。那麼對於一般的損失函式,我們沒法很好的計算殘差,所以我們就需要gbdt。來幫助我們解決更普遍的問題。
l(y,f(xi))就是我們的一般損失函式
從步驟上來看,首先和提公升樹一樣找到最好的閾值,得到初始化的模型。
給出乙個例子:例子
感覺步驟是首先
初始化弱學習器。這個例子是平方損失,所以可以直接求均值得到c
設定迭代次數m
計算殘差
改變殘差為真實值
尋找合適閾值
繼續在子樹尋找合適的閾值繼續分割
給每個葉子來設定引數準備擬合
梯度提公升樹GBDT
上一節我們講了adaboost,而提公升樹也是提公升方法的一種,它的基分類器為分類樹或者回歸樹。ps 首先我們講一下殘差的概念 殘差是指實際值和估計值之間的差,就是相減。一般提公升樹的模型的損失函式是平方損失和對數損失,所以優化很簡單。但是對一般損失函式而言就有困難,所以又有了梯度提公升演算法,然後...
gbdt梯度提公升樹
這採用boosting的思想,把表現一般的學習器通過一定的方法結合成效果相對比較好的學習器 gbdt是提公升樹的一種,是多棵樹的加權結果。採用的是分類回歸樹 cart 樹的劃分採用基尼係數。採用前向分布演算法 1 gbdt為什麼是用負梯度代替殘差?首先這是邏輯上顛倒的錯誤。實質沒有明白gbdt是怎麼...
梯度提公升樹GBDT
gbdt全稱gradient boosting decision tree,即用gradient boosting策略訓練出來的決策樹模型。模型的結果是一組cart樹 回歸分類樹 的組合 t 1,t k 其中 t j 學習的是之前 j 1 棵樹 結果的殘差。這種思想就像準備考試前的複習,先做一遍習題...