算法強化 —— XGBoost

XGBoost

xgboost也是使用提升樹相同的前向分步算法。其區別在於:xgboost通過結構風險極小化來確定下一個決策參數Θm{\Theta}_{m}

Θ^m=argminΘmi=1NL(y~i,fm(xi))+Ω(hm(x))\hat{\Theta}_{m}=\arg \min _{\Theta_{m}} \sum_{i=1}^{N} L\left(\tilde{y}_{i}, f_{m}\left(\overrightarrow{\mathbf{x}}_{i}\right)\right)+\Omega\left(h_{m}(\overrightarrow{\mathbf{x}})\right)

其中Ω(hm)\Omega(h_{m})爲第m個決策樹的正則化項。這是xgboost和GBT的一個重要區別。
L=i=1NL(y~i,fm(xi))+Ω(hm(x))\mathcal{L}=\sum_{i=1}^{N} L\left(\tilde{y}_{i}, f_{m}\left(\overrightarrow{\mathbf{x}}_{i}\right)\right)+\Omega\left(h_{m}(\overrightarrow{\mathbf{x}})\right)爲目標函數

泰勒展開式

定義:
y^i<m1>=fm1(xi),gi=L(y~i,y^i<m1>)y^i<m1>,hi=2L(y~i,y^i<m1>)2y^i<m1>\hat{y}_{i}^{<m-1>}=f_{m-1}\left(\overrightarrow{\mathbf{x}}_{i}\right), \quad g_{i}=\frac{\partial L\left(\tilde{y}_{i}, \hat{y}_{i}^{<m-1>}\right)}{\partial \hat{y}_{i}^{<m-1>}}, \quad h_{i}=\frac{\partial^{2} L\left(\tilde{y}_{i}, \hat{y}_{i}^{<m-1>}\right)}{\partial^{2} \hat{y}_{i}^{<m-1>}}
即:
gig_iL(y~i,y^i<m1>)L(\tilde{y}_{i}, \hat{y}_{i}^{<m-1>})y^i<m1>\hat{y}_{i}^{<m-1>}的一階導數
hih_iL(y~i,y^i<m1>)L(\tilde{y}_{i}, \hat{y}_{i}^{<m-1>})y^i<m1>\hat{y}_{i}^{<m-1>}的二階導數

對目標函數L\mathcal{L}執行二階泰勒展開:
L=i=1NL(y~i,fm(xi))+Ω(hm(x))=i=1NL(y~i,y^i<m1>+hm(xi))+Ω(hm(x))i=1N[L(y~i,y^i<m1>)+gihm(xi)+12hihm2(xi)]+Ω(hm(x))+ constant \begin{aligned} \mathcal{L} &=\sum_{i=1}^{N} L\left(\tilde{y}_{i}, f_{m}\left(\overrightarrow{\mathbf{x}}_{i}\right)\right)+\Omega\left(h_{m}(\overrightarrow{\mathbf{x}})\right)=\sum_{i=1}^{N} L\left(\tilde{y}_{i}, \hat{y}_{i}^{<m-1>}+h_{m}\left(\overrightarrow{\mathbf{x}}_{i}\right)\right)+\Omega\left(h_{m}(\overrightarrow{\mathbf{x}})\right) \\ & \simeq \sum_{i=1}^{N}\left[L\left(\tilde{y}_{i}, \hat{y}_{i}^{<m-1>}\right)+g_{i} h_{m}\left(\overrightarrow{\mathbf{x}}_{i}\right)+\frac{1}{2} h_{i} h_{m}^{2}\left(\overrightarrow{\mathbf{x}}_{i}\right)\right]+\Omega\left(h_{m}(\overrightarrow{\mathbf{x}})\right)+\text { constant } \end{aligned}

決策樹改寫

對一個決策樹hm(x)h_{m}(\overrightarrow{\mathbf{x}})假設不考慮複雜的推到過程,僅考慮決策樹的效果
給定輸入x\overrightarrow{\mathbf{x}}該決策樹將該輸入經過不斷的劃分,最終劃分到某個葉結點上去。
給定一個葉節點,該葉節點有一個輸出值

因此將決策樹拆分成結構部分q()q(),和葉節點權重部分w=(w1,w2,...wT)\overrightarrow{w} = (w_1,w_2,...w_T),其中T爲葉節點的數量
結構部分q(x)q(\overrightarrow{x})的輸出是葉節點編號d。它的作用是將輸入的x\overrightarrow{x}映射到編號爲d的葉節點
葉節點權重部分就是每個葉節點的值。它的作用是輸出編號爲d的葉節點的值wdw_d
因此決策樹改寫爲hm(x)=wq(x)h_m(\overrightarrow{x}) = w_{q(\overrightarrow{x})}

結構分

定義出具體的正則項
定義一個決策樹的複雜度爲Ω(hm(x))=γT+12λj=1Twj2\Omega\left(h_{m}(\overrightarrow{\mathrm{x}})\right)=\gamma T+\frac{1}{2} \lambda \sum_{j=1}^{T} w_{j}^{2}
其中:T爲葉節點的個數,wjw_j爲每個葉節點的輸出值,γ,λ0\gamma,\lambda \geq 0爲係數,控制這兩個部分的比重。
葉節點越多,則決策樹越複雜
每個葉節點輸出值的絕對值越大,則決策樹越複雜。
Li=1N[giwq(xi)+12hiwq(xi)2]+γT+12λj=1Twj2+ constant \mathcal{L} \simeq \sum_{i=1}^{N}\left[g_{i} w_{q\left(\overrightarrow{\mathbf{x}}_{i}\right)}+\frac{1}{2} h_{i} w_{q\left(\overrightarrow{\mathbf{x}}_{i}\right)}^{2}\right]+\gamma T+\frac{1}{2} \lambda \sum_{j=1}^{T} w_{j}^{2}+\text { constant }
對於每個樣本xi\overrightarrow{{x}}_i,它必然被劃分到樹hmh_m的某個葉節點。定義劃分到葉節點j的樣本的集合爲:Ij={iq(xi)=j}\mathbb{I}_{j}=\left\{i | q\left(\overrightarrow{\mathbf{x}}_{i}\right)=j\right\},則有:
Lj=1T[(iIjgi)wj+12(iIjhi+λ)wj2]+γT+ constant \mathcal{L} \simeq \sum_{j=1}^{T}\left[\left(\sum_{i \in \mathbb{I}_{j}} g_{i}\right) w_{j}+\frac{1}{2}\left(\sum_{i \in \mathbb{I}_{j}} h_{i}+\lambda\right) w_{j}^{2}\right]+\gamma T+\text { constant }

進一步化簡
定義Gj=iIjgi,Hj=iIjhi\mathbf{G}_{j}=\sum_{i \in \mathbb{I}_{j}} g_{i}, \mathbf{H}_{j}=\sum_{i \in \mathbb{I}_{j}} h_{i}
GjG_j刻畫了隸屬於葉節點j的那些樣本的一階偏導數之和
HjH_j刻畫了隸屬於葉節點j的那些樣本的二階偏導數之和

Lj=1T[(iIjgi)wj+12(iIjhi+λ)wj2]+γT+ constant \mathcal{L} \simeq \sum_{j=1}^{T}\left[\left(\sum_{i \in \mathbb{I}_{j}} g_{i}\right) w_{j}+\frac{1}{2}\left(\sum_{i \in \mathbb{I}_{j}} h_{i}+\lambda\right) w_{j}^{2}\right]+\gamma T+\text { constant }
轉化爲
Lj=1T[Gjwj+12(Hj+λ)wj2]+γT+ constant \mathcal{L} \simeq \sum_{j=1}^{T}\left[G_j w_{j}+\frac{1}{2}\left(H_j+\lambda\right) w_{j}^{2}\right]+\gamma T+\text { constant }
此時如果wjw_j和T,GJ,HjG_J,H_j都無關的話,那麼損失函數實質上是一個關於wjw_j的一元二次方程
對於一元二次方程ax2+bx+c=0ax^2+bx+c = 0當x= -b/2a時去極值,因而有wj=GjHj+λw_{j}^{*}=-\frac{\mathbf{G}_{j}}{\mathbf{H}_{j}+\lambda}
帶回原式可得
L=12j=1TGj2Hj+λ+γT\mathcal{L}^{*}=-\frac{1}{2} \sum_{j=1}^{T} \frac{\mathbf{G}_{j}^{2}}{\mathbf{H}_{j}+\lambda}+\gamma T

上一步的簡化,wjw_j和T,Gj,HjG_j,H_j都無關,wjw_j表示樹的葉子節點,所以實質是在假設已知樹的結構,而事實上損失函數與T是相關的,甚至和樹的結構相關,所以定義L*爲一種scoring function,來衡量已知樹結構情況下目標函數的最小值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章