【机器学习】XgBoost 原理详解 数学推导
XgBoost ? (Xtreme Gradient Boosting 極限 梯度 增強)
1.基本描述:
?? ??? ??? ?假設Xg-模型有 t 顆決策樹數,t棵樹有序串聯構成整個模型,各決策樹的葉子節點數為 k1,k2,...,kt, ?
?? ??? ??? ?對于決策樹 Ti, 葉子節點數為 ki, 設這顆數每個葉子節點上的權值為:wj_i ?(i∈[0,t]為決策樹下標,j∈[0,ki]為葉子節點下標)
?? ??? ??? ?該模型在 對一個樣本進行 分類/回歸 時,這個樣本數據點 在樹的根節點輸入, 在樹的某一葉子節點輸出
?
2.模型構造:
?? ??? ??? ?=》Xg-模型有 t 顆決策樹數,假設該模型由0顆數 逐一新增至 t顆樹的 數學模型變化過程
?? ??? ??? ?當?? ?t = 0 時:?? ??? ?y_0 = F0(x) = f0(x) = 0
?? ??? ??? ??? ?t = 1 時:?? ??? ?y_1 = F1(x) = F0(x) + f1(x) = f1(x)
?? ??? ??? ??? ?t = 2 時:?? ??? ?y_2 = F2(x) = F1(x) + f2(x) = f1(x) + f2(x)
?? ??? ??? ??? ? ?...?? ??? ? ? ? ?...
?? ??? ??? ??? ?t = t 時:?? ??? ?y_t ?= Ft(x) = Ft-1(x) + ft(x)?? ??? ?
?? ??? ??? ?其中當t = i時,即Xg-模型 為 i顆決策樹構成時:
?? ??? ??? ??? ?fi(x)?? ?為第i顆 (最后一棵) 決策樹的 數學模型 (函數)
?? ??? ? ?? ??? ?y_i ?? ?為樣本數據x 經過整個xg模型的分類輸出值
?? ??? ??? ??? ?Fi(x) ?? ?為整個Xgboost的 ?數學模型 (函數)
?? ??? ??? ?在 t-1 顆決策樹構成的 數學模型為 Ft_1(x) 的Xg-模型上,(末尾)新增一顆 數學模型為ft(x)的決策樹
?? ??? ??? ?新構成的Xg-模型的 數學模型為:y = Ft(x) = Ft-1(x) + ft(x)?? ??? ?【2.2】
3.結構分析:
?? ??? ??? ?第t棵決策樹,各個葉子節點的權值為 w1,w2,...,wk,樹的數學模型為:ft(x) = wq(x) ??
?? ??? ??? ?wq 表示, 當這棵決策樹的輸入為x時, 樣本被分類到下標為q(q∈[1,k])的葉子節點上對應的 權值 (向量)
?? ??? ??? ?若樣本數據維數為d,對于樣本 X(x_1, x_2, ..., x_d), 權值 wq(wq_1,wq_2,...,wq_d)有
?? ??? ??? ?ft(x) = wq(x) , w ∈ Rt , q: Rd ? → ? {1,2,...,T}?? ??? ?【2.3】
?? ??? ??? ??? ?T: 樹的數量, ? Rt: 維度為t的向量空間, ? Rd: ?維度為d的向量空間, ? q:表示1到T之間的樹下標t下的解葉子結點的下標
?? ??? ??? ??? ?*向量空間Rn: 設有非空集合V(元素均為n維向量)、域P(向量各維度的值類型,實數->實數域,復數->復數域),向量的加法&數乘運算滿足8條件
?? ??? ??? ? ? ? ? ?= (wq_1,wq_2,...,wq_d)t(x_1, x_2, ..., x_d)?
?? ??? ??? ? ? ? ? ?= (wq_1*x_1, wq_2*x_2, ..., wq_d*x_d)t
?? ??? ??? ??? ?
?? ??? ??? ?· 定義第t顆構造樹的 懲罰函數 ? Ω(ft) = γL + (1/2)λ*∑L_i{ wi2 }?? ??? ?【2.4】
?? ??? ??? ??? ?其中,γ:懲罰(系數)力度,L:該樹的葉子結點數量,wi:這棵樹各個葉子結點的權重向量模的平方
?? ??? ??? ?Xg模型 - 優化目標:在加入第t顆構造樹時,所選取一個 ft 使得整體的損失(目標)函數 盡量大地降低
?? ??? ??? ?· 定義整個Xg模型的目標(損失)函數 ? Obj(t) = ∑n_i{ lost(yi, Ft(xi)) } + ∑t_j{ Ω(fj) }?? ??? ?【2.5】
?? ??? ??? ??? ?其中,n為樣本量,i為樣本下標,xi為第i個樣本,yi為第i個樣本的真實類別
?? ??? ??? ??? ? ? ? ? ,t 為Xg模型構造樹的個數,j為樹的下標,fj為第j棵樹的 懲罰函數
?? ??? ??? ??? ? ? ? ? ,lost(yi, Ft(xi))表示 當前Xg模型的預測函數Ft(x) 對于第i個樣本xi的預測值,與其真實值yi 所求得的 損失值
?? ??? ??? ?將【2.2】代入【2.5】=》?
?? ??? ??? ?Obj(t) = ∑n_i{ lost(yi, ?Ft-1(xi) + ft(xi) } + C + Ω(ft)?? ??? ?【2.6】
?? ??? ??? ??? ?其中C(Constant)為常數 (前t-1顆構造樹的懲罰項值的和 & ∑中導出的定值項)
?? ??? ??? ??? ?設lost(a,b) = (a-b)2,則=》
?? ??? ??? ? ? ? ? ? ? = ∑n_i{ [yi - (Ft-1(xi) + ft(xi))]2 } + C + Ω(ft)?? ??? ?平方項添-號,并展開
?? ??? ??? ? ? ? ? ? ? = ∑n_i{ [(Ft-1(xi) - yi) + ft(xi)]2 } + C + Ω(ft)?? ??? ?
?? ??? ??? ? ? ? ? ? ? = ∑n_i{ (Ft-1(xi) - yi)2 + ft(xi)2 + 2*(yi - Ft-1(xi))*ft(xi) } + C + Ω(ft)?? ?定值項 Ft-1(xi) - yi,導出到C
?? ??? ??? ? ? ? ? ? ? = ∑n_i{ ft(xi)2 + 2*(Ft-1(xi) - yi)*ft(xi) } + C + Ω(ft)?? ??? ?【2.7】殘差項: yi - Ft-1(xi)?? ?
?? ??? ??? ??? ??? ?
?? ??? ??? ?用·泰勒展開式·來近似原目標函數:
?? ??? ??? ??? ?·泰勒展開式:若f(x)二次可導,則 f(x + △x) ≈ f(x) + (1/1!)f'(x)△x + (1/2!)f''(x)△x2?? ??? ?【2.8】
?? ??? ??? ??? ?因為 lost(yi, ?Ft-1(xi) + ft(xi)) = [yi - (Ft-1(xi) + ft(xi))]2?? ??? ?其中 lost(a,b) = (a-b)2
?? ??? ??? ??? ??? ??? ? ? ? ? ? ? ? ?= [(Ft-1(xi) - yi) + ft(xi)]2?? ?
?? ??? ??? ??? ??? ??? ??? ?令 x=(Ft-1(xi) - yi), △x=ft(xi), 設函數 Lost(x) = x2?? ??? ?【2.9】
?? ??? ??? ??? ??? ??? ? ? ? ? ? ? ? ?= Lost(x + △x)
?? ??? ??? ??? ?≈ Lost(x) + Lost'(x)△x + (1/2)Lost''(x)△x2?? ??? ?泰勒展開?? ?【2.10】
?? ??? ??? ??? ??? ?其中,Lost(x) = (Ft-1(xi) - yi)2
?? ??? ??? ??? ??? ?Lost'(x) = 2(Ft-1(xi) - yi)*Ft-1'x?? ? ?? ??? ?= gi
?? ??? ??? ??? ??? ?Lost''(x)= 2*[Ft-1'x2 + Ft-1''x*(Ft-1(xi) - yi)] ?? ?= hi
?? ??? ??? ??? ?將【2.8】和 gi、hi全部代入【2.10】得:
?? ??? ??? ??? ?lost(yi, ?Ft-1(xi) + ft(xi)) ≈ (Ft-1(xi) - yi)2 + gi*ft(xi) + (1/2)hi*ft2(xi)?? ??? ?【2.11】
?? ??? ??? ??? ??? ??? ? ? ? ? = (yi - Ft-1(xi))2 + gi*ft(xi) + (1/2)hi*ft2(xi)
?? ??? ??? ??? ??? ??? ? ? ? ? = lost(yi, ?Ft-1(xi)) + gi*ft(xi) + (1/2)hi*ft2(xi)?? ??? ?【2.12】
?? ??? ??? ?將【2.12】代入【2.6】得:
?? ??? ??? ??? ?Obj(t) = ∑n_i{ lost(yi, ?Ft-1(xi) + ft(xi) } + Ω(ft) + C
?? ??? ??? ??? ? ? ? ? ? ? ≈ ∑n_i{ lost(yi, ?Ft-1(xi)) + gi*ft(xi) + (1/2)hi*ft2(xi) } + Ω(ft) + C
?? ??? ??? ??? ? ? ? ? ? ? = ∑n_i{ gi*ft(xi) + (1/2)hi*ft2(xi) } + Ω(ft) + C?? ??? ??? ??? ?定值項 lost(yi, ?Ft-1(xi)),導出到C
?? ??? ??? ??? ? ? ? ? ? ? = ∑n_i{ gi*ft(xi) + (1/2)hi*ft2(xi) } + γL + (1/2)λ*∑L_j{ wj2 } + C?? ??? ?將【2.4】代入
?? ??? ??? ??? ? ? ? ? ? ? = ∑n_i{ gi*wq(xi) + (1/2)hi*wq2(xi) } + γL + (1/2)λ*∑L_j{ wj2 } + C?? ??? ?將【2.3】代入
?? ??? ??? ?為了化簡(整)表達式,需要將 樣本遍歷:n_i 和 當前構造樹的葉子結點的遍歷:L_j 統一為 【葉子結點的遍歷 L_j】
?? ??? ??? ?分析:對于新添構造樹,有 n 個樣本輸入,每一個樣本點終必會分類到該樹 L 個葉子節點的某一個 節點上, 定義 I 為 i (i=1,2,...,n,表示n個樣本的下標) 的集合
?? ??? ??? ?設n個樣本經過新添構造樹分類后, 其L個葉子結點上樣本子集分別為 I1,I2,...IL, 則有集合關系 I1+I2+...+Ij+...+I L = N{1,2,...,n},?
?? ??? ??? ?j 為L個葉子結點下標, Ij 表示第 j 個葉子結點上 分布的 子樣本集的 下標集
?? ??? ??? ??? ? ? ? ? ? ? = ∑L_j{ ∑Ij_i{ giwj } + (1/2)∑Ij_i{ hiwj2 } ?+ (1/2)λwj2 }} + γL + C?? ?
?? ??? ??? ??? ? ? ? ? ? ? = ∑L_j{ ∑Ij_i{ giwj } + (1/2)∑Ij_i{ hiwj2 } ?+ (1/2)λwj2 }} + γL + C
?? ??? ??? ??? ? ? ? ? ? ? = ∑L_j{ wj*∑Ij_i{ gi } + (1/2)(wj2)*∑Ij_i{ hi + λ }} + γL + C?? ??? ??? ?【2.13】
?? ??? ??? ?令 ∑Ij_i{ gi } = Gj, ∑Ij_i{ hi + λ } = Hj 代入【2.13】則=》(注意在 ∑L_j{∑Ij_i{ * }} 中若將∑Ij_i{ * }視為整體,內部下標 i被消化, 外部下標 j還存在)
?? ??? ??? ??? ? ? ? ? ? ? = ∑L_j{ wj*Gj + (1/2)(wj2)*(Hj + λ)} + γL + C?? ??? ??? ??? ?【2.14】
?? ??? ??? ?由于求解目標為 當新添樹的各個葉子結點上的 w 為何值時 (wj=?), 能夠使得 整體的 損失函數值 (Obj(t)min) 取得最小, 則
?? ??? ??? ?由于目標 w 存在于 新添樹的數學模型 ft 中, 令 J(ft) = Obj(t)?
?? ??? ??? ??? ??J(ft) / ?wj =令= 0?
?? ??? ??? ??? ? ? ? ? ? ? ? ? ? ? = ?Obj(t) / ?wj?? ??? ?【2.14】式對 wj 求導
?? ??? ??? ??? ? ? ? ? ? ? ? ? ? ? = ∑L_j{ Gj + wj*(Hj + λ)} = 0
?? ??? ??? ??? ??? ? ?=》 Gj + wj*(Hj + λ) = 0
?? ??? ??? ??? ??? ? ?=》 wj = - Gj / (Hj + λ)?? ??? ?【2.15】
?? ??? ??? ?將【2.15】代入到【2.14】得:
?? ??? ??? ??? ?Obj(t) = -(1/2)∑L_j{ Gj2 / (Hj + λ) } + γL + C?? ?【2.16】
?? ??? ??? ?因為目標是使函數值越小越好,可忽略常數C,則目標函數為:Obj(t) = -(1/2)∑L_j{ Gj2 / (Hj + λ) } + γL?? ??? ?【2.17】
?? ??? ??? ??? ?要使 Obj(t) 函數值 越小越好,即 V = (1/2) Gj2 / (Hj + λ) 越大越好, 將 V 記為 模型增益分數?? ??? ?【2.18】
?? ??? ??? ?
?? ??? ??? ?·在明確了 新添第t顆構造樹 有L個葉子結點 和 各葉子結點的權值優化目標 基礎上, 通過下面的方法來確定 該樹的劃分結構
?? ??? ??? ??? ?由于每一個確定的樣本 xi, 對應確定了 gi,hi
?? ??? ??? ??? ?假設將 n 個樣本xi 按某一指標 如x<a劃分為兩份, 歸為 左子樹部分 I_left 和 右子樹部分 I_right,則
?? ??? ??? ??? ?其中 I_left、I_right 分別為歸為左/右子樹部分的 樣本的下標 i 的集合,則
?? ??? ??? ??? ??? ?Gl = ?∑I_left_i{ gi }?? ??? ?Hl = ∑I_left_i{ hi + λ }?
?? ??? ??? ??? ??? ?Gr = ?∑I_right_i{ gi }?? ??? ?Hr = ∑I_right_i{ hi + λ }
?? ??? ??? ?定義若當前所選取的 劃分方案為Strategy ,則該方案的 模型增益分數 可做如下定義:?
?? ??? ??? ?VGain = 【劃分后的模型增益分數 - 劃分前的模型增益分數】- 新增葉子結點帶來的復雜度代價(增益閾值)
?? ??? ??? ? ? ? ? ? ? = (1/2)[ Gl2/(Hl + λ) + Gr2 / (Hr + λ) - (Gl+Gr)2 / (Hl+Hr+λ)] - γ?? ??? ?【2.18】
?? ??? ??? ?目標是使【2.18】函數值 越大越好,其中增益閾值γ
·枚舉法:各種劃分方法構成的各種樹結構,計算該結構的 模型增益分數,選取 增益分數 最大的劃分方案
=》由于樹的結構有很多可能,所以對于 精確搜索的情況,可采用貪心算法
貪心算法:貪婪地增加樹的葉子結點數目,1.對于每個葉子結點嘗試增加一個分裂點,2.對于每一次分裂窮舉所有可能的分割方案
如何窮舉 所有可能的分割方案?
?? ??? ??? ??? ?·對樣本X的每一個特征值(x_1, x_2, ..., x_d) 分別進行 實例的排序
?? ??? ??? ??? ?·用線性掃描 尋找該特征的 最優分裂點
?? ??? ??? ??? ?·對所有特征選取一個 最佳分裂點
優化終止條件:當可選優化方案中 最大增益分數 低于閾值時;當葉子節點數達到上限時;...
【待更新…】
總結
以上是生活随笔為你收集整理的【机器学习】XgBoost 原理详解 数学推导的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高性能webdav服务器,webdav服
- 下一篇: 提前招面试要注意什么-面试要注意事项