gbdt可以看做是由多棵回歸樹組成的,所以要理解gbdt,就要先理解回歸樹。回歸樹也是為了做**,只是將特徵空間劃分成了若干個區域,在每個區域裡進行**,舉個簡單例子。
圖中的資料有兩個特徵:x1
、x2 ,根據這兩個特徵可以很容易地把資料分為左下角、左上角、右上角、右下角四個區域,這四個區域各有乙個中心點(5,5)、(5,10)、(10,10)、(10,5),在對新資料做**時,該資料落在哪個區域,就把該區域的中心點作為它的**值。那麼如何判斷新資料將落在哪個區域呢?這時候「樹」就派上用場了。樹的根節點以x1
做劃分,小於8的劃分到左子樹,大於8的劃分到右子樹,在劃分好的左右子樹上再以x2
做進一步的劃分,小於8的劃分為左葉子,大於8的劃分為右葉子,如下圖所示:
可以看到,回歸樹也相當於乙個對映,乙個函式,即根據輸入x1
、x2 來求得輸出
y ,表示式如下: y=
h(x)
=∑j=
1jbj
i(x∈
rj)其中,rj
就是乙個個的區域,如第一張圖中的「左下角」、「左上角」等,如果
x 屬於rj
,那麼它的**值就是bj
。i()
為指示函式,當括號內的式子成立時返回1,否則返回0。在很多情況下,一棵回歸樹的**是不太準確的,我們可以嘗試採用多棵回歸樹去**,第
m 棵回歸樹可以表示為如下數學形式: hm
(x)=
∑jjb
jmi(
x∈rj
m)假設共有
m 棵回歸樹,那麼最終的**結果為: y=
fm(x
)=∑m
=1mh
m(x)
表達成遞迴形式則為: y=
fm−1
(x)+
hm(x
) 最完美的gbdt(就訓練集而言,不考慮測試集)就是**值
y 與目標值
t相等,所以我們建立模型的目標就是令y=
t ,即: t=
fm−1
(x)+
hm(x
) gbdt也是從第一棵回歸樹開始的,不管效果怎麼樣,先建第一棵回歸樹,有了第一棵樹,就可以通過上面的遞迴表示式建立第二棵,直到第
m 棵樹,那麼我們先看一下第二棵樹怎麼建立。對上面的遞迴式做個變形,即: hm
(x)=
t−fm
−1(x
)注意到hm
(x) 就是我們要建立的第2 (m=
2 )棵樹,已有的是第一棵樹,第一棵樹一經建成就不變了,相當於乙個已知的函式,那麼(t
−fm−
1(x)
) 實際上就是我們在建第
m 棵樹時想要得到的**值。所以在建第二棵樹時,我們將目標值
t與第一棵樹的**值的差作為新的目標值,同樣,在建第三顆樹時,我們將目標值
t 與前兩棵樹的**值的差作為新的目標值,直到第
m棵樹。(t
−fm−
1(x)
) 就是所謂的殘差,這就是從殘差的角度來理解gbdt。
注意到,gbdt的建樹過程不是並行的,而是序列的,所以速度較慢,但所有的樹一旦建好,用它來**時是並行的,最終的**值就是所有樹的**值之和。
gbdt實際上是由兩部分組成:gb 和 dt,dt 意味著每個basic learner (weaker learner)是「樹」的形式,而gb則是建樹過程中依據的準則。dt 可以不變,而 gb 有多種形式,上述的殘差只是其中的一種形式。注意到損失函式可以表示為: ε=
12(t
−f(x
))2
該損失函式關於f(
x)的導數(梯度)為: dε
/df(
x)=−
(t−f
(x))
該損失函式在fm
−1(x
) 處的導數(梯度)為: dε
/df(
x)|f
m−1(
x)=−
(t−f
m−1(
x))
所以在建立第
m 棵樹時,新的目標值正好就是損失函式在 fm
−1(x
)處的負梯度。眾所周知,損失函式可以有多種形式,所以不同的損失函式就可以對應到不同的變種。
本例僅用於說明大意,實際結果肯能不同,比如資料有兩個feature:x1
、x2 ,對應的目標值為 t=
sin(
x1)+
sin(
x2) ,如下圖所示:
根據feature1可以建立乙個回歸樹,**結果如下:
這兩張圖的差值用於建立第二棵回歸樹,這次選擇了feature2,**結果如下:
上述兩棵樹的和就是正確的**值。
從決策樹到GBDT
首先,決策樹分為分類樹和回歸樹。gbdt中的樹是回歸樹 不是分類樹 gbdt用來做回歸 調整後也可以用於分類。以下羅列了比較好的學習資源,看完就可以掌握gbdt了 決策樹參考 分類樹回歸樹區別參考 分類樹 以c4.5分類樹為例,c4.5分類樹在每次分枝時,是窮舉每乙個feature的每乙個閾值,找到...
從決策樹到GBDT(一)
鑑於最近面試總是被問到這類問題,所以這次就是想寫乙個從決策樹到gbdt這一系列的博文。一方面加深記憶,另一方面也供以後方便回頭看。再者若是能夠為也正在機器學習這條路上摸爬滾打的朋友有一點助益就更圓滿了。本部落格是第一部分,主要介紹一下決策樹的基礎 特徵選擇。決策樹演算法主要有三部分 特徵選擇 決策樹...
初識GBDT回歸流程
自己對於gbdt的過程不是很了解,所以找了些資料學習了一下。這篇文章會以乙個小例子,簡單介紹一下用gbdt做回歸的大致流程。要是能幫助你理解gbdt回歸,那就再好不過了。這篇文章主要講述流程,數學推導後面再寫篇文章講述。演算法是需要資料訓練的,讓我們先造一些假資料吧 假設上面是5個男生高富帥這三個特...