XGBoost原理和公式推導


 本篇文章主要介紹下Xgboost算法的原理和公式推導。關於XGB的一些應用場景在此就不贅述了,感興趣的同學可以自行google。下面開始:


1.模型構建

構建最優模型的方法一般是最小化訓練數據的損失函數,用L表示Loss Function(),F是假設空間:

\[L = min_{f \in F} \ \frac{1}{N}\sum_{i=1}^{N}L(y_i,f(x_i)) \quad \text{(1)} \]

上述(1)式就是俗稱的經驗風險最小化,當訓練數據集較小時,很容易過擬合,所以一般需要加入正則項來降低模型的復雜度。

\[L = min_{f \in F} \ \frac{1}{N}\sum_{i=1}^{N}L(y_i,f(x_i))+\lambda J(f) \quad \text{(2)} \]

其中的J(f)為控制模型復雜度,式(2)稱為結構風險最小化。
決策樹的生成和剪枝分別對應了經驗風險最小化和結構風險最小化。XGB決策樹在生成過程中,即是結構風險最小化的結果。


2.Boosting算法介紹

對於Boosting算法我們知道,是將多個弱分類器的結果結合起來作為最終的結果來進行輸出。對於回歸問題,假設

\[f_{}^{t}(x_i) 為第t棵樹的輸出結果,\hat{y}_{i}^{(t)}是模型當前的輸出結果,y_{i}是實際的結果。 \]

那么

\[\hat{y}_{i}^{(t)} = \sum_{t=1}^{t}f^{t}(x_i) \quad \text{(3)} \]

\[\hat{y}_{i}^{(t)} = \hat{y}_{i}^{(t-1)}+f^{t}(x_i)\quad \text{(4)} \]


3.XGBoost目標函數

通過最小化損失函數來構建最優模型,因此:

\[obj(t) = \sum_{i=1}^nl(y_i,\hat{y}_{i})+\Omega(f(t)) + Constant\quad \text{(5)} \]

等式右邊第一部分是訓練誤差,中間是懲罰模型的復雜度(所有樹的復雜度之和)該項中包含了兩個部分,一個是葉子結點的總數,一個是葉子結點得到的L2正則化項。這個額外的正則化項能夠平滑每個葉節點的學習權重來避免過擬合。直觀地,正則化的目標將傾向於選擇采用簡單的模型。當正則化參數為零時,這個函數就變為傳統的GBDT。
這里(5)結合(4)再進行泰勒展開,

\[obj(t) \simeq \sum_{i=1}^n[l(y_i,\hat{y}^{t-1})+g_if_t(x_i)+\frac{1}{2}h_if_t^2(x_i)]+ \Omega(f(t)) + Constant \quad \text{(6)} \]

\[g_i=\partial_{\hat{y}^{t-1}}l(y_i,\hat{y}^{(t-1)}) \]

\[h_i=\partial_{\hat{y}^{t-1}}^2l(y_i,\hat{y}^{(t-1)}) \]

\[l(y_i,\hat{y}_{i}) \]

l表示前t-1棵樹組成的學習模型的預測誤差,gi、hi分別表示預測誤差對當前模型的一階導和二階導 ,當前模型往預測誤差減小的方向進行迭代。
對於f(x),需要明確對於一棵樹,由兩部分來確定,一是樹的結構,這個結構將輸入樣本映射到確定的葉子節點上,記為$$q(x)$$,第二部分是各個葉子節點的值,也就是權重,記為$$w_{q(x)}$$。所以(6)式中,

\[f_{t}(x) = w_{q(x)} \quad \text{(7)} \]

從上圖中可以很好的明確q和w的含義。


4.樹的復雜度定義

Xgboost包含多棵樹,定義每棵樹的復雜度:

\[\Omega(f) = \gamma T + \frac{1}{2}\lambda||w||^2 \]

其中T為葉子節點的個數,||w||為葉子節點向量的模 。γ表示節點切分的難度,λ表示L2正則化系數。
那么對於整棵樹復雜度的定義:

\[\Omega(f_{(t)}) = \gamma T + \frac{1}{2}\lambda\sum_{j=1}^{T}w_{j}^2 \quad \text{(8)} \]


如圖可以算出當前樹的復雜度$$\Omega$$,同時,定義屬於葉子結點j 的樣本集合為$$I_{j}$$:

\[I_{j} = \{i|q(x_{i}) = j\} \]


5.目標函數推導

根據(6)式:

\[obj(t) \simeq \sum_{i=1}^n[l(y_i,\hat{y}^{t-1})+g_if_t(x_i)+\frac{1}{2}h_if_t^2(x_i)]+ \Omega(f(t)) + Constant \quad \]

其中$$l(y_i,\hat{y}^{t-1})$$是常數,代入(7),(8)式和$$I_{j}$$並忽略常數項,得:

\[obj(t) = \sum_{i=1}^n[g_if_t(x_i)+\frac{1}{2}h_if_t^2(x_i)] + \gamma T + \frac{1}{2}\lambda\sum_{j=1}^{T}w_{j}^2 \quad \text{(9)} \]

\[\quad\quad\quad = \sum_{i =1}^n[g_iw_{q(x_i)}+\frac{1}{2}h_iw^2_{q(x_i)}] + \gamma T + \frac{1}{2}\lambda\sum_{j=1}^{T}w_{j}^2 \quad \text{(10)} \]

\[\quad\quad= \sum_{j =1}^T[(\sum_{i\in{I_j}}g_i)w_j+ \frac{1}{2} (\sum_{i\in{I_j}}h_i+\lambda)w_j^2] + \gamma T \quad \text{(11)} \]

\[G_j=\sum_{i\in{I_j}}g_i \quad h_j=\sum_{i\in{I_j}}h_i \]

Gj 表示映射為葉子節點 j 的所有輸入樣本的一階導之和,同理,Hj表示二階導之和。則(11)式為:

\[obj(t)= \sum_{j=1}^T[G_jw_j+ \frac{1}{2}(H_j+\lambda)w_j^2] + \gamma T \quad \text{(12)} \]

對於第 t 棵C樹的某一個確定結構(可用q(x)表示),其葉子節點是相互獨立的,Gj和Hj是確定量,因此,(12)可以看成是關於葉子節點的一元二次函數 。最小化(12)式即二次函數通過一階導得0求極值,得參數w的估計:

\[w_j^* = -\frac{G_j}{H_j+\lambda} \]

代入到(12)式得到最終的目標函數:

\[obj(t)= -\frac{1}{2}\sum_{j=1}^{T}\frac{G_j^2}{H_j+\lambda}+\gamma T \quad \text{(13)} \]

上式也稱為打分函數(scoring function),它是衡量樹結構好壞的標准,值越小,代表這樣的結構越好 。我們用打分函數選擇最佳切分點,從而構建一棵CART樹。


6.尋找分割點的貪心算法

對於每一個葉結點,根據增益分裂結點。增益的定義 :

\[obj(t)= \frac{1}{2}[\frac{G_J^2}{H_L+\lambda}+\frac{G_R^2}{H_R+\lambda}-\frac{(G_L+G_R)^2}{H_L+H_R+\lambda}] - \gamma \quad \text{(14)} \]

這個公式通常被用於評估分割候選集(選擇最優分割點),其中前兩項分別是切分后左右子樹的的分支之和,第三項是未切分前該父節點的分數值,最后一項是引入額外的葉子節點導致的復雜度。

這里有一個問題,在分裂結點的時候,如何找到該次分裂最佳的分割點呢。實現方法是:遍歷所有特征,對每個特征將樣本按這個特征排好序,從左向右,依次遍歷。每次遍歷,向左邊加入一個結點,向右邊減掉這個結點,然后計算此時的gaingain。最后選擇gaingain最大的特征的最佳分割點作為該次分裂的分割點。

所以時間復雜度:O(nlogndk)。對於每一層,需要nlogn的時間去對特征值進行排序,假設有d個特征,樹的層數為k層。


7.XGBoost與GDBT的區別

  1. GBDT以CART為基分類器,XGB則支持多種分類器,可以通過booster[default=gbtree]設置參數:gbtree:tree-based models;gblinear:linear models。
  2. GBDT只用到了一階導數信息,xgboost則對代價函數進行了二階泰勒展開,同時用到了一階與二階導數,並且可以自定義代價函數,只要一階二階可導。
  3. XGBoost與GDBT都是逐次迭代來提高模型性能,但是XGBoost在選取最佳切分點時可以開啟多線程進行,大大提高了運行速度。(也就是可並行)
  4. 新增了Shrinkage和column subsampling,為了防止過擬合。
  5. 對缺失值有自動分裂處理(默認歸於左子樹)。
  6. xgb生成樹時,考慮了樹的復雜度 -- 預剪枝。
    GBDT是在生成完后才考慮復雜度的懲罰 -- 后剪枝。(個人理解)

參考資料:

https://blog.csdn.net/yinyu19950811/article/details/81079192

陳天奇大神-https://www.kdd.org/kdd2016/papers/files/rfp0697-chenAemb.pdf

https://blog.csdn.net/shitaixiaoniu/article/details/53161348

https://baijiahao.baidu.com/s?id=1620689507114988717&wfr=spider&for=pc


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM