GBDT
1.GBDT定義
說到Xgboost,不得不先從GBDT(Gradient Boosting Decision Tree)說起。因為xgboost本質上還是一個GBDT,但是力爭把速度和效率發揮到極致,所以叫X (Extreme) GBoosted。包括前面說過,兩者都是boosting方法。
GBDT的原理很簡單,就是所有弱分類器的結果相加等于預測值,然后下一個弱分類器去擬合誤差函數對預測值的梯度/殘差(這個梯度/殘差就是預測值與真實值之間的誤差)。當然了,它里面的弱分類器的表現形式就是各棵樹。如圖所示:Y = Y1 + Y2 + Y3。
舉一個非常簡單的例子,比如我今年30歲了,但計算機或者模型GBDT并不知道我今年多少歲,那GBDT咋辦呢?
它會在第一個弱分類器(或第一棵樹中)隨便用一個年齡比如20歲來擬合,然后發現誤差有10歲;
接下來在第二棵樹中,用6歲去擬合剩下的損失,發現差距還有4歲;
接著在第三棵樹中用3歲擬合剩下的差距,發現差距只有1歲了;
最后在第四課樹中用1歲擬合剩下的殘差,完美。
最終,四棵樹的結論加起來,就是真實年齡30歲。實際工程中,gbdt是計算負梯度,用負梯度近似殘差。
注意,為何gbdt可以用負梯度近似殘差呢?
回歸任務下,GBDT 在每一輪的迭代時對每個樣本都會有一個預測值,此時的損失函數為均方差損失函數,
那此時的負梯度是這樣計算的
所以,當損失函數選用均方損失函數時,每一次擬合的值就是(真實值 - 當前模型預測的值),即殘差。此時的變量是,即“當前預測模型的值”,也就是對它求負梯度。
另外,這里還得再啰嗦一下,上面預測年齡的第一個步驟中的“隨便”二字看似隨便,其實深入思考一下一點都不隨便,你會發現大部分做預測的模型,基本都是這么個常規套路,先隨便用一個值去預測,然后對比預測值與真實值的差距,最后不斷調整 縮小差距。所以會出來一系列目標函數:確定目標,和損失函數:縮小誤差。
再進一步思考,你會發現這完全符合人類做預測的普遍常識、普遍做法,當對一個事物不太了解時,一開始也是根據經驗嘗試、初探,直到逼近某種意義上的接近或者完全吻合。
還是年齡預測的例子。
簡單起見,假定訓練集只有4個人:A,B,C,D,他們的年齡分別是14,16,24,26。其中A、B分別是高一和高三學生;C,D分別是應屆畢業生和工作兩年的員工。
所以,現在的問題就是我們要預測這4個人的年齡,咋下手?很簡單,先隨便用一個年齡比如20歲去擬合他們,然后根據實際情況不斷調整。
如果是用一棵傳統的回歸決策樹來訓練,會得到如下圖所示結果:
現在我們使用GBDT來做這件事,由于數據太少,我們限定葉子節點最多有兩個,即每棵樹都只有一個分枝,并且限定只學兩棵樹。
我們會得到如下圖所示結果:
在第一棵樹分枝和圖1一樣,由于A,B年齡較為相近,C,D年齡較為相近,他們被分為左右兩撥,每撥用平均年齡作為預測值。
此時計算殘差(殘差的意思就是:A的實際值 - A的預測值 = A的殘差),所以A的殘差就是實際值14 - 預測值15 = 殘差值-1。
注意,A的預測值是指前面所有樹累加的和,這里前面只有一棵樹所以直接是15,如果還有樹則需要都累加起來作為A的預測值。
殘差在數理統計中是指實際觀察值與估計值(擬合值)之間的差。“殘差”蘊含了有關模型基本假設的重要信息。如果回歸模型正確的話, 我們可以將殘差看作誤差的觀測值。
進而得到A,B,C,D的殘差分別為-1,1,-1,1。
然后拿它們的殘差-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需要將多棵樹的得分累加得到最終的預測得分,且每一次迭代,都在現有樹的基礎上,增加一棵樹去擬合前面樹的預測結果與真實值之間的殘差。
參考文章:https://blog.csdn.net/v_JULY_v/article/details/81410574
總結
- 上一篇: 宝可梦剑盾在哪捕捉小木灵 小木灵捕捉位置
- 下一篇: auto js的安装及使用