天天看點

gbdt 算法比随機森林容易_Daily-DeepLearning

GBDT的原理很簡單,就是所有弱分類器的結果相加等于預測值,然後下一個弱分類器去拟合誤差函數對預測值的殘差(這個殘差就是預測值與真實值之間的誤差)。當然了,它裡面的弱分類器的表現形式就是各棵樹。

舉一個非常簡單的例子,比如我今年30歲了,但計算機或者模型GBDT并不知道我今年多少歲,那GBDT咋辦呢?

它會在第一個弱分類器(或第一棵樹中)随便用一個年齡比如20歲來拟合,然後發現誤差有10歲;

接下來在第二棵樹中,用6歲去拟合剩下的損失,發現差距還有4歲;

接着在第三棵樹中用3歲拟合剩下的差距,發現差距隻有1歲了;

最後在第四課樹中用1歲拟合剩下的殘差,完美。

最終,四棵樹的結論加起來,就是真實年齡30歲(實際工程中,gbdt是計算負梯度,用負梯度近似殘差)。

為何gbdt可以用用負梯度近似殘差呢?

回歸任務下,GBDT 在每一輪的疊代時對每個樣本都會有一個預測值,此時的損失函數為均方差損失函數,

gbdt 算法比随機森林容易_Daily-DeepLearning

那此時的負梯度是這樣計算的

gbdt 算法比随機森林容易_Daily-DeepLearning

是以,當損失函數選用均方損失函數是時,每一次拟合的值就是(真實值 - 目前模型預測的值),即殘差。此時的變量是$y^{i}$,即“目前預測模型的值”,也就是對它求負梯度。

訓練過程

簡單起見,假定訓練集隻有4個人:A,B,C,D,他們的年齡分别是14,16,24,26。其中A、B分别是高一和高三學生;C,D分别是應屆畢業生和工作兩年的員工。如果是用一棵傳統的回歸決策樹來訓練,會得到如下圖所示結果:

gbdt 算法比随機森林容易_Daily-DeepLearning

現在我們使用GBDT來做這件事,由于資料太少,我們限定葉子節點做多有兩個,即每棵樹都隻有一個分枝,并且限定隻學兩棵樹。我們會得到如下圖所示結果:

gbdt 算法比随機森林容易_Daily-DeepLearning

在第一棵樹分枝和圖1一樣,由于A,B年齡較為相近,C,D年齡較為相近,他們被分為左右兩撥,每撥用平均年齡作為預測值。

此時計算殘差(殘差的意思就是:A的實際值 - A的預測值 = A的殘差),是以A的殘差就是實際值14 - 預測值15 = 殘內插補點-1。

注意,A的預測值是指前面所有樹累加的和,這裡前面隻有一棵樹是以直接是15,如果還有樹則需要都累加起來作為A的預測值。

然後拿它們的殘差-1、1、-1、1代替A B C D的原值,到第二棵樹去學習,第二棵樹隻有兩個值1和-1,直接分成兩個節點,即A和C分在左邊,B和D分在右邊,經過計算(比如A,實際值-1 - 預測值-1 = 殘差0,比如C,實際值-1 - 預測值-1 = 0),此時所有人的殘差都是0。殘內插補點都為0,相當于第二棵樹的預測值和它們的實際值相等,則隻需把第二棵樹的結論累加到第一棵樹上就能得到真實年齡了,即每個人都得到了真實的預測值。

換句話說,現在A,B,C,D的預測值都和真實年齡一緻了。Perfect!

A: 14歲高一學生,購物較少,經常問學長問題,預測年齡A = 15 – 1 = 14

B: 16歲高三學生,購物較少,經常被學弟問問題,預測年齡B = 15 + 1 = 16

C: 24歲應屆畢業生,購物較多,經常問師兄問題,預測年齡C = 25 – 1 = 24

D: 26歲工作兩年員工,購物較多,經常被師弟問問題,預測年齡D = 25 + 1 = 26

是以,GBDT需要将多棵樹的得分累加得到最終的預測得分,且每一次疊代,都在現有樹的基礎上,增加一棵樹去拟合前面樹的預測結果與真實值之間的殘差。

2. 梯度提升和梯度下降的差別和聯系是什麼?

下表是梯度提升算法和梯度下降算法的對比情況。可以發現,兩者都是在每 一輪疊代中,利用損失函數相對于模型的負梯度方向的資訊來對目前模型進行更 新,隻不過在梯度下降中,模型是以參數化形式表示,進而模型的更新等價于參 數的更新。而在梯度提升中,模型并不需要進行參數化表示,而是直接定義在函 數空間中,進而大大擴充了可以使用的模型種類。

gbdt 算法比随機森林容易_Daily-DeepLearning

3. GBDT的優點和局限性有哪些?

3.1 優點

預測階段的計算速度快,樹與樹之間可并行化計算。

在分布稠密的資料集上,泛化能力和表達能力都很好,這使得GBDT在Kaggle的衆多競賽中,經常名列榜首。

采用決策樹作為弱分類器使得GBDT模型具有較好的解釋性和魯棒性,能夠自動發現特征間的高階關系。

3.2 局限性

GBDT在高維稀疏的資料集上,表現不如支援向量機或者神經網絡。

GBDT在處理文本分類特征問題上,相對其他模型的優勢不如它在處理數值特征時明顯。

訓練過程需要串行訓練,隻能在決策樹内部采用一些局部并行的手段提高訓練速度。

4. RF(随機森林)與GBDT之間的差別與聯系

相同點:

都是由多棵樹組成,最終的結果都是由多棵樹一起決定。

RF和GBDT在使用CART樹時,可以是分類樹或者回歸樹。

不同點:

組成随機森林的樹可以并行生成,而GBDT是串行生成

随機森林的結果是多數表決表決的,而GBDT則是多棵樹累加之和

随機森林對異常值不敏感,而GBDT對異常值比較敏感

随機森林是減少模型的方差,而GBDT是減少模型的偏差

随機森林不需要進行特征歸一化。而GBDT則需要進行特征歸一化