GBDT的原理很簡單,就是所有弱分類器的結果相加等于預測值,然後下一個弱分類器去拟合誤差函數對預測值的殘差(這個殘差就是預測值與真實值之間的誤差)。當然了,它裡面的弱分類器的表現形式就是各棵樹。
舉一個非常簡單的例子,比如我今年30歲了,但計算機或者模型GBDT并不知道我今年多少歲,那GBDT咋辦呢?
它會在第一個弱分類器(或第一棵樹中)随便用一個年齡比如20歲來拟合,然後發現誤差有10歲;
接下來在第二棵樹中,用6歲去拟合剩下的損失,發現差距還有4歲;
接着在第三棵樹中用3歲拟合剩下的差距,發現差距隻有1歲了;
最後在第四課樹中用1歲拟合剩下的殘差,完美。
最終,四棵樹的結論加起來,就是真實年齡30歲(實際工程中,gbdt是計算負梯度,用負梯度近似殘差)。
為何gbdt可以用用負梯度近似殘差呢?
回歸任務下,GBDT 在每一輪的疊代時對每個樣本都會有一個預測值,此時的損失函數為均方差損失函數,
那此時的負梯度是這樣計算的
是以,當損失函數選用均方損失函數是時,每一次拟合的值就是(真實值 - 目前模型預測的值),即殘差。此時的變量是$y^{i}$,即“目前預測模型的值”,也就是對它求負梯度。
訓練過程
簡單起見,假定訓練集隻有4個人:A,B,C,D,他們的年齡分别是14,16,24,26。其中A、B分别是高一和高三學生;C,D分别是應屆畢業生和工作兩年的員工。如果是用一棵傳統的回歸決策樹來訓練,會得到如下圖所示結果:
現在我們使用GBDT來做這件事,由于資料太少,我們限定葉子節點做多有兩個,即每棵樹都隻有一個分枝,并且限定隻學兩棵樹。我們會得到如下圖所示結果:
在第一棵樹分枝和圖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. 梯度提升和梯度下降的差別和聯系是什麼?
下表是梯度提升算法和梯度下降算法的對比情況。可以發現,兩者都是在每 一輪疊代中,利用損失函數相對于模型的負梯度方向的資訊來對目前模型進行更 新,隻不過在梯度下降中,模型是以參數化形式表示,進而模型的更新等價于參 數的更新。而在梯度提升中,模型并不需要進行參數化表示,而是直接定義在函 數空間中,進而大大擴充了可以使用的模型種類。
3. GBDT的優點和局限性有哪些?
3.1 優點
預測階段的計算速度快,樹與樹之間可并行化計算。
在分布稠密的資料集上,泛化能力和表達能力都很好,這使得GBDT在Kaggle的衆多競賽中,經常名列榜首。
采用決策樹作為弱分類器使得GBDT模型具有較好的解釋性和魯棒性,能夠自動發現特征間的高階關系。
3.2 局限性
GBDT在高維稀疏的資料集上,表現不如支援向量機或者神經網絡。
GBDT在處理文本分類特征問題上,相對其他模型的優勢不如它在處理數值特征時明顯。
訓練過程需要串行訓練,隻能在決策樹内部采用一些局部并行的手段提高訓練速度。
4. RF(随機森林)與GBDT之間的差別與聯系
相同點:
都是由多棵樹組成,最終的結果都是由多棵樹一起決定。
RF和GBDT在使用CART樹時,可以是分類樹或者回歸樹。
不同點:
組成随機森林的樹可以并行生成,而GBDT是串行生成
随機森林的結果是多數表決表決的,而GBDT則是多棵樹累加之和
随機森林對異常值不敏感,而GBDT對異常值比較敏感
随機森林是減少模型的方差,而GBDT是減少模型的偏差
随機森林不需要進行特征歸一化。而GBDT則需要進行特征歸一化