日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

GBDT

發布時間:2023/12/19 综合教程 30 生活家
生活随笔 收集整理的這篇文章主要介紹了 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

總結

以上是生活随笔為你收集整理的GBDT的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。