梯度提公升決策樹(gbdt:gradientboostingdecisiontree)演算法是整合學習中boosting的一種。總體思路是利用每個弱學習器計算當前輸出與真實值的殘差,然後講每個學習器輸出的殘差進行累加,以求接近真實值。訓練過程可以用下面的公式來表示:
f m(
x)=f
m−1(
x)+t
m(x,
δm
)} \nolimits_ } \right) } =f\mathop } \nolimits_ } \right) } +t\mathop } \nolimits_ } } \nolimits_ } } \right) } }
fm(x)
=fm−
1(x
)+tm
(x,
δm)
其中,fm為前m個學習器的輸出結果,tm為當前m輪訓練的學習器(這裡的學習器為決策樹)。△為當前的殘差。
當迭代到一定程度,就可以訓練出完整的模型了,模型可表示為:
f (x
)=∑m
=1mt
m(x)
\right) } = \limits_ } ^ } } \nolimits_ } \right) } } } }
f(x)=m
=1∑m
tm
(x)那麼,如何訓練迭代到第m輪的學習器tm呢?
首先,定義損失函式為l。舉個最簡單的例子,如果用均方誤差(mse)作為損失函式,那麼對於每個樣本xi,損失li為:
l (x
i)=(
yi−f
m−1(
xi)−
tm(x
i))2
} \nolimits_ } } \right) } = } \nolimits_ } -f\mathop } \nolimits_ } } \nolimits_ } } \right) } -t\mathop } \nolimits_ } } \nolimits_ } } \right) } } \right) } \mathop } \nolimits^ } }
l(xi)
=(yi
−fm
−1(
xi)
−tm
(xi
))2yi是訓練集的真實值,fm-1我們已經在之前的訓練中得到。所以我們可以計算當前的殘差:
δ mi
=yi=
fm−1
(xi)
} \nolimits_ } =y\mathop } \nolimits_ } =f\mathop } \nolimits_ } } \nolimits_ } } \right) } }
δmi=y
i=f
m−1
(xi
)所以現在損失函式可以寫成:
l (x
i)=(
δmi−
tm(x
i))2
} \nolimits_ } } \right) } = } \nolimits_ } -t\mathop } \nolimits_ } } \nolimits_ } } \right) } } \right) } \mathop } \nolimits^ } }
l(xi)
=(δm
i−t
m(x
i))
2我們的目標當然是最小化損失函式,很顯然,△等於t(x)時損失函式取得最小值0。所以我們訓練當前學習器tm的期望輸出就可以是△。所以接下來用決策樹的訓練方法訓練輸入為x,輸出為△的資料集即可。
當然,大多數損失函式不會具有均方誤差(mse)這個特性,殘差△也不是很簡單的能求解出的,如果再加入正則項那就更為複雜。所以需要用到一些近似處理。
梯度提公升決策樹(GBDT)演算法
gbdt gradient boosting decision tree,梯度提公升決策樹 由名字可以看出涉及到三點 1 boosting 簡單講,就是每次訓練單個弱學習器時,都將上一次分錯的資料權重提高一點再進行當前單個弱學習器的學習。這樣越往後執行,訓練出的單個弱學習器就會越在意那些容易分錯 權...
GBDT 梯度提公升決策樹
gbdt gradient boosting decision tree 又叫 mart multiple additive regression tree 是一種迭代的決策樹演算法,該演算法由多棵決策樹組成,所有樹的結論累加起來做最終答案。它在被提出之初就和svm一起被認為是泛化能力較強的演算法。...
梯度提公升決策樹 GBDT
整合學習經典一類演算法,屬於個體學習器間存在較強依賴關係的一類,需以序列的序列化生成方法構建。原理 所有弱分類器結果相加等於 值,下乙個弱分類器去擬合誤差函式對 值的殘差 值與真實值的誤差 這裡的弱分類器是決策樹。舉例 用gbdt的方法 年齡 step1 在第乙個弱分類器中隨機選擇乙個數字擬合,發現...