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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

XGBoost核心讲解笔记(贪心学院)

發(fā)布時間:2025/4/5 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XGBoost核心讲解笔记(贪心学院) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Bagging和Boosting對比


老師的PPT中對比了 Bagging 和 Boosting 兩種常用的集成學(xué)習(xí)方法。

  • Bagging:利用多個過擬合的弱學(xué)習(xí)器來獲得更好的效果。典型的算法有隨機森林。
    (請了很多專家回答問題,一起討論爭論)
  • Boosting:利用多個欠擬合的弱學(xué)習(xí)器來獲得更好的效果。典型的算法有GBDT/GBRT,Adaboost,XGBoost和LightGBM。(請了一群小學(xué)生回答問題)

Bagging


像是隨機森林,這種bagging系的算法,它們的思想是訓(xùn)練多個模型每個模型去預(yù)測一個結(jié)果,然后對這些結(jié)果進行加權(quán)平均得到最終的預(yù)測結(jié)果。

Boosting

boosting是基于殘差的訓(xùn)練,每個模型在上一個模型預(yù)測結(jié)果與真實值的殘差的基礎(chǔ)上再進行訓(xùn)練,達到迭代次數(shù)或設(shè)定的閾值后停止,最終將各個模型的結(jié)果進行求和得到。

提升樹-基于殘差的訓(xùn)練

在介紹XGBoost之前,還要介紹一下提升樹的概念,其實提升樹的算法思想是跟XGBoost相同的。


就像上面的三幅圖像展示的那樣,模型2在模型1的殘差基礎(chǔ)上進行擬合預(yù)測,而模型3則在模型2的基礎(chǔ)上進行,最終的結(jié)果就像下面的圖所示的那樣是多個模型預(yù)測結(jié)果的和。

XGBoost

學(xué)習(xí)路徑


XGBoost的介紹流程將會像圖片展示的那樣進行,算法的核心也就是這四個步驟。在第一步構(gòu)建目標(biāo)函數(shù)后,后面的三步則更傾向于是對目標(biāo)函數(shù)的優(yōu)化。由于構(gòu)造的目標(biāo)函數(shù)并不能夠像邏輯回歸那樣是連續(xù)的,可以直接使用SGD進行優(yōu)化,因此在算法的第二步使用了泰勒級數(shù)的方法去展開目標(biāo)函數(shù),將一些常量給提取分離出來,能夠簡化計算;在第三步中,則是考慮如何將樹的結(jié)構(gòu)進行參數(shù)化,帶入到目標(biāo)方程;第四步則是要查找結(jié)構(gòu)最優(yōu)的一棵樹,而在查找的過程中采用貪心的算法進行,整個查找的過程是一個NP—hard問題。

目標(biāo)函數(shù)構(gòu)建


我們的預(yù)測一定是相加的。

i表示第i個樣本,k表示第k棵樹
第二顆樹來預(yù)測第i個樣本+第二顆樹來預(yù)測第i個樣本+······+第k顆樹來預(yù)測第i個樣本

我們最終的預(yù)測結(jié)果是k棵樹預(yù)測結(jié)果之和,而目標(biāo)函數(shù)的組成有兩部分,第一部分是損失函數(shù)(loss function),表示真實值與預(yù)測值的差距,具體的損失函數(shù)可以選用MSE、交叉熵等,在這篇博客中不做詳細(xì)介紹;第二部分是penalty /regularization用來控制模型的復(fù)雜度,是在控制樹的復(fù)雜度,是一個懲罰項,經(jīng)典的示例是正則化。樹的復(fù)雜度可能會涉及到樹的葉節(jié)點數(shù)、深度、葉節(jié)點值等,但具體如何去參數(shù)化實現(xiàn)我們還不太清楚,這個會在后面進一步講解。

葉節(jié)點值越大,說明這顆樹的復(fù)雜度越高。

我們要預(yù)測的值是1000,每顆樹要預(yù)測的值在100-200之間,這個時候我們只需要10棵樹,或是說不到10棵樹就能湊夠1000了。

當(dāng)我們降低復(fù)雜度的時候,比方說100-200變成了20-30,這個時候我們需要50棵樹。

化簡目標(biāo)函數(shù)

有了目標(biāo)函數(shù)以后,我們還沒有好的辦法直接對它進行求解,還需要進行化簡。

當(dāng)我訓(xùn)練第k棵樹,1到k-1棵樹是已知的。


上面的推導(dǎo),我們做的主要工作是將前k-1個模型的相關(guān)表示和第k個模型給分開,這樣當(dāng)我們在訓(xùn)練第k個模型時前k-1個的相關(guān)表示便是常量,能夠簡化運算。

觀察上面經(jīng)過簡化的目標(biāo)函數(shù),我們現(xiàn)在不知道是fk(xi)f_{k}(x_{i})fk?(xi?)Ω(fk)\Omega (f_{k})Ω(fk?)這兩個函數(shù)如何表達,這將會在下面兩節(jié)中進行介紹。

使用泰勒級數(shù)近似目標(biāo)函數(shù)

泰勒展開在我們大學(xué)的高等數(shù)學(xué)中就已經(jīng)學(xué)過了,它的主要思想是用多項式的形式去近似一些復(fù)雜函數(shù),使得在實際工程能夠求解得到算數(shù)解。

在我們學(xué)習(xí)優(yōu)化算法時,梯度下降算法就是利用了一階的泰勒展開,而牛頓法則是使用的二階泰勒展開,所以在實際的使用中,牛頓法比梯度下降收斂得更快。

盡管我們對目標(biāo)函數(shù)進行了化簡,但直接對目標(biāo)函數(shù)進行求解,運算的復(fù)雜度會非常高,所以我們選擇對目標(biāo)函數(shù)進行二級泰勒展開,提高模型的訓(xùn)練速度。

當(dāng)訓(xùn)練第k棵樹的時候,gig_{i}gi?hih_{i}hi?是前k-1棵樹傳遞給訓(xùn)練第k棵樹時的信息

接下來我們要做的事情就是把fk(xi)f_{k}(x_{i})fk?(xi?)Ω(fk)\Omega(f_{k})Ω(fk?)用參數(shù)的方式表示,然后把參數(shù)找出來。

樹結(jié)構(gòu)的參數(shù)化

重新定義一棵樹


這里詳細(xì)介紹一下,各個符號的含義

  • www是一個向量,存儲的是葉子節(jié)點的值
  • q(x)q(x)q(x)表示樣本x的位置,即它屬于哪一個葉節(jié)點,在公式中用作表示ω的下標(biāo)
  • 再需要定義一個IjI_{j}Ij?,是一個集合,表示落在j節(jié)點的樣本

IjI_{j}Ij?用作解決函數(shù)中q(x)q(x)q(x)www的下標(biāo)問題(參數(shù)的下標(biāo)也是一個函數(shù),處理起來非常麻煩),這種表示方式并不標(biāo)準(zhǔn)化,IjI_{j}Ij?就用來將這個公式給標(biāo)準(zhǔn)化。

樹的復(fù)雜度



樹的復(fù)雜度 = 葉節(jié)點個數(shù) + 葉節(jié)點值

T是葉節(jié)點個數(shù)數(shù),γ和λ控制權(quán)重,是樹的葉節(jié)點數(shù)更重要呢,還是葉節(jié)點的值更重要呢?若嚴(yán)格控制葉節(jié)點個數(shù)γ要調(diào)大一些,若嚴(yán)格控制葉節(jié)點值(值越小越好)λ要調(diào)大一些。

新的目標(biāo)函數(shù)

這樣,將上面得到的表達式帶入到我們化簡得到的目標(biāo)函數(shù)中,得

樹的形狀已知的條件下,我們可以得到新目標(biāo)函數(shù)的最優(yōu)解

上面紅框部分依舊是常數(shù),我們用GiG_{i}Gi?HiH_{i}Hi?i表示,得

其實,得到的這個函數(shù)本質(zhì)上是一個一元二次函數(shù),因此在wiw_{i}wi?=-b/2a時,能夠取到整個函數(shù)的最值

這樣就得到了第k棵樹的最優(yōu)解。

第k棵樹的形狀可能有很多個,知道第k棵樹的形狀(其中一種)我們可以立馬求出目標(biāo)函數(shù)的最優(yōu)解(其中一個)。

現(xiàn)在的問題變成怎么從這么多樹的形狀中去尋找其中一種樹的形狀讓目標(biāo)函數(shù)最小。

貪心尋找最優(yōu)結(jié)構(gòu)樹

尋找樹的形狀


利用brute-force search的方法把書的所有結(jié)構(gòu)羅列出來,是指數(shù)級別的復(fù)雜度,顯然是不可取的,還是得回到貪心的法則上。

尋找的思路與決策樹的構(gòu)建是一致的,都是去最大程度降低系統(tǒng)的混亂度,比如說,ID3算法每次尋找某個特征去分割節(jié)點時,依據(jù)的標(biāo)準(zhǔn)就是讓信息增益最大,也就是讓整個系統(tǒng)的混亂度降低。

在這里采用的不是熵,而是Obj的值,每次分割節(jié)點都是依據(jù)Obj值的增量盡可能的大。

尋找最好的Split




以這個方式不斷去構(gòu)造我們的樹

總結(jié)

以上是生活随笔為你收集整理的XGBoost核心讲解笔记(贪心学院)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。