? 因為用樹模型太習以為常了,以至于看到這個標題很容易覺得這很顯然。但越簡單的東西越容易出現(xiàn)知識盲區(qū),仔細想一下好像確實有點疑問:GBDT 用的是回歸樹,是如何做的分類呢? - 作者:1直在路上1 -https://www.cnblogs.com/always-fight/p/9400346.html 編輯:阿澤的學習筆記 ?
一 簡介
GBDT 在傳統(tǒng)機器學習算法里面是對真實分布擬合的最好的幾種算法之一,在前幾年深度學習還沒有大行其道之前,GBDT 在各種競賽是大放異彩。原因大概有幾個
效果確實挺不錯;
既可以用于分類也可以用于回歸;
可以篩選特征。
這三點實在是太吸引人了,導致在面試的時候大家也非常喜歡問這個算法。
GBDT 是通過采用加法模型(即基函數(shù)的線性組合),以及不斷減小訓練過程產(chǎn)生的殘差來達到將數(shù)據(jù)分類或者回歸的算法。
GBDT 通過多輪迭代,每輪迭代產(chǎn)生一個弱分類器,每個分類器在上一輪分類器的殘差基礎(chǔ)上進行訓練。對弱分類器的要求一般是足夠簡單,并且是低方差和高偏差的。因為訓練的過程是通過降低偏差來不斷提高最終分類器的精度。
二 GBDT如何用于分類的
第一步:「訓練的時候,是針對樣本 X 每個可能的類都訓練一個分類回歸樹」。如目前的訓練集共有三類,即 K = 3,樣本 x 屬于第二類,那么針對樣本x的分類結(jié)果,我們可以用一個三維向量 [0,1,0] 來表示,0 表示不屬于該類,1 表示屬于該類,由于樣本已經(jīng)屬于第二類了,所以第二類對應的向量維度為 1,其他位置為 0。
針對樣本有三類的情況,我們實質(zhì)上是在每輪的訓練的時候是同時訓練三顆樹。第一顆樹針對樣本 x 的第一類,輸入是 ,第二顆樹針對樣本x的第二類,輸入是 ,第三顆樹針對樣本x的第三類,輸入是 。
在對樣本 x 訓練后產(chǎn)生三顆樹,對 x 類別的預測值分別是 ,那么在此類訓練中,樣本 x 屬于第一類,第二類,第三類的概率分別是:
然后可以求出針對第一類,第二類,第三類的殘差分別是:
然后開始第二輪訓練,針對第一類輸入為 ,針對第二類輸入為 ,針對第三類輸入為 ,繼續(xù)訓練出三顆樹。一直迭代M輪,每輪構(gòu)建三棵樹當訓練完畢以后,新來一個樣本 ,我們需要預測該樣本的類別的時候,便產(chǎn)生三個值 ,則樣本屬于某個類別 c 的概率為:
三 GBDT多分類舉例說明
下面以 Iris 數(shù)據(jù)集的六個數(shù)據(jù)為例來展示 GBDT 多分類的過程
具體應用到 gbdt 多分類算法。我們用一個三維向量來標志樣本的 label,[1,0,0] 表示樣本屬于山鳶尾,[0,1,0] 表示樣本屬于雜色鳶尾,[0,0,1] 表示屬于維吉尼亞鳶尾。
gbdt 的多分類是針對每個類都獨立訓練一個 CART Tree。所以這里,我們將針對山鳶尾類別訓練一個 CART Tree 1。雜色鳶尾訓練一個 CART Tree 2 。維吉尼亞鳶尾訓練一個CART Tree 3,這三個樹相互獨立。
我們以樣本 1 為例:
針對 CART Tree1 的訓練樣本是 [5.1,3.5,1.4,0.2],label 是 1,模型輸入為 [5.1, 3.5, 1.4, 0.2, 1]
針對 CART Tree2 的訓練樣本是 [5.1,3.5,1.4,0.2],label 是 0,模型輸入為 [5.1, 3.5, 1.4, 0.2, 0]
針對 CART Tree3 的訓練樣本是 [5.1,3.5,1.4,0.2],label 是 0,模型輸入為[5.1, 3.5, 1.4, 0.2, 0]
下面我們來看 CART Tree1 是如何生成的,其他樹 CART Tree2 , CART Tree 3 的生成方式是一樣的。CART Tree 的生成過程是從這四個特征中找一個特征做為 CART Tree1 的節(jié)點。
比如花萼長度做為節(jié)點。6 個樣本當中花萼長度大于等于 5.1 cm 的就是 A 類,小于 5.1 cm 的是 B 類。生成的過程其實非常簡單,問題
是哪個特征最合適?
是這個特征的什么特征值作為切分點?
即使我們已經(jīng)確定了花萼長度做為節(jié)點?;ㄝ嚅L度本身也有很多值。在這里我們的方式是遍歷所有的可能性,找到一個最好的特征和它對應的最優(yōu)特征值可以讓當前式子的值最?。?/p>
我們以第一個特征的第一個特征值為例。R1 為所有樣本中花萼長度小于 5.1cm 的樣本集合,R2 為所有樣本中花萼長度大于等于 5.1cm 的樣本集合,所以 。
為 R1 所有樣本label的均值:, 為 R2 所有樣本 label 的均值:
下面計算損失函數(shù)的值,采用平方誤差,分別計算 R1 和 R2 的誤差平方和,樣本 2 屬于 R1 的誤差:,樣本 1,3,4,5,6 屬于 R2 的誤差和:
接著我們計算第一個特征的第二個特征值,即 R1 為所有樣本中花萼長度小于 4.9 cm 的樣本集合,R2 為所有樣本當中花萼長度大于等于 4.9 cm 的樣本集合,, 為 R1 所有樣本 label 的均值:0, 為 R2 所有樣本 label 的均值:
計算所有樣本的損失值,樣本 1 和 2 屬于 R2,損失值為:,樣本 3,4,5,6 也屬于 R2,損失值為:,兩組損失值和為 2.222,大于特征一的第一個特征值的損失值,所以我們不取這個特征的特征值。
「繼續(xù),這里有四個特征,每個特征有六個特征值,所有需要 6*4=24 個損失值的計算,我們選取值最小的分量的分界點作為最佳劃分點,這里我們就不一一計算了,直接給出最小的特征花萼長度,特征值為 5.1 cm。這個時候損失函數(shù)最小為 0.8。于是我們的預測函數(shù)此時也可以得到:」
「此例子中,訓練完以后的最終式子為:」
由這個式子,我們得到對樣本屬于類別 1 的預測值:,同理我們可以得到對樣本屬于類別 2,3 的預測值 ,樣本屬于類別 1 的概率
責任編輯:xj
原文標題:GBDT 如何用于分類問題
文章出處:【微信公眾號:深度學習自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
算法
+關(guān)注
關(guān)注
23文章
4608瀏覽量
92844 -
機器學習
+關(guān)注
關(guān)注
66文章
8408瀏覽量
132572 -
GBDT
+關(guān)注
關(guān)注
0文章
13瀏覽量
3893
原文標題:GBDT 如何用于分類問題
文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論