1. 程式人生 > >【機器學習】XgBoost 原理詳解 數學推導

【機器學習】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{ wi² }        【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)²,則=》                        = ∑n_i{ [yi - (Ft-1(xi) + ft(xi))]² } + C + Ω(ft)        平方項添-號,並展開                        = ∑n_i{ [(Ft-1(xi) - yi) + ft(xi)]² } + C + Ω(ft)                                = ∑n_i{ (Ft-1(xi) - yi)² + ft(xi)² + 2*(yi - Ft-1(xi))*ft(xi) } + C + Ω(ft)    定值項 Ft-1(xi) - yi,匯出到C                        = ∑n_i{ ft(xi)² + 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)△x²        【2.8】                 因為 lost(yi,  Ft-1(xi) + ft(xi)) = [yi - (Ft-1(xi) + ft(xi))]²        其中 lost(a,b) = (a-b)²                                       = [(Ft-1(xi) - yi) + ft(xi)]²                                 令 x=(Ft-1(xi) - yi), △x=ft(xi), 設函式 Lost(x) = x²        【2.9】                                       = Lost(x + △x)                 ≈ Lost(x) + Lost'(x)△x + (1/2)Lost''(x)△x²        泰勒展開    【2.10】                     其中,Lost(x) = (Ft-1(xi) - yi)²                     Lost'(x) = 2(Ft-1(xi) - yi)*Ft-1'x             = gi                     Lost''(x)= 2*[Ft-1'x² + 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)² + gi*ft(xi) + (1/2)hi*ft²(xi)        【2.11】                                = (yi - Ft-1(xi))² + gi*ft(xi) + (1/2)hi*ft²(xi)                                = lost(yi,  Ft-1(xi)) + gi*ft(xi) + (1/2)hi*ft²(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*ft²(xi) } + Ω(ft) + C                            = ∑n_i{ gi*ft(xi) + (1/2)hi*ft²(xi) } + Ω(ft) + C                定值項 lost(yi,  Ft-1(xi)),匯出到C                            = ∑n_i{ gi*ft(xi) + (1/2)hi*ft²(xi) } + γL + (1/2)λ*∑L_j{ wj² } + C        將【2.4】代入                            = ∑n_i{ gi*wq(xi) + (1/2)hi*wq²(xi) } + γL + (1/2)λ*∑L_j{ wj² } + 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{ hiwj² }  + (1/2)λwj² }} + γL + C                                = ∑L_j{ ∑Ij_i{ giwj } + (1/2)∑Ij_i{ hiwj² }  + (1/2)λwj² }} + γL + C                            = ∑L_j{ wj*∑Ij_i{ gi } + (1/2)(wj²)*∑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)(wj²)*(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{ Gj² / (Hj + λ) } + γL + C    【2.16】             因為目標是使函式值越小越好,可忽略常數C,則目標函式為:Obj(t) = -(1/2)∑L_j{ Gj² / (Hj + λ) } + γL        【2.17】                 要使 Obj(t) 函式值 越小越好,即 V = (1/2) Gj² / (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)[ Gl²/(Hl + λ) + Gr² / (Hr + λ) - (Gl+Gr)² / (Hl+Hr+λ)] - γ        【2.18】             目標是使【2.18】函式值 越大越好,其中增益閾值γ

·列舉法:各種劃分方法構成的各種樹結構,計算該結構的 模型增益分數,選取 增益分數 最大的劃分方案 =》由於樹的結構有很多可能,所以對於 精確搜尋的情況,可採用貪心演算法貪心演算法:貪婪地增加樹的葉子結點數目,1.對於每個葉子結點嘗試增加一個分裂點,2.對於每一次分裂窮舉所有可能的分割方案 如何窮舉 所有可能的分割方案?                 ·對樣本X的每一個特徵值(x_1, x_2, ..., x_d) 分別進行 例項的排序                 ·用線性掃描 尋找該特徵的 最優分裂點                 ·對所有特徵選取一個 最佳分裂點優化終止條件:當可選優化方案中 最大增益分數 低於閾值時;當葉子節點數達到上限時;...

【待更新…】