XGBoost论文原理公式推导

目标函数

O b j ( Θ ) = L ( Θ ) + Ω ( Θ ) Obj(\Theta) = L(\Theta) + \Omega(\Theta) Obj(Θ)=L(Θ)+Ω(Θ)
其中 L ( Θ ) L(\Theta) L(Θ)为损失(误差)函数, Ω ( Θ ) \Omega(\Theta) Ω(Θ)为正则化项。

模型

O b j ( Θ ) = ∑ i = 0 n l ( y i , y ^ i ) + ∑ k = 1 K Ω ( f k ) y ^ i t = ∑ k = 1 t f k ( x i ) = y ^ i t − 1 + f t ( x i ) Obj(\Theta) = \sum_{i=0}^nl(y_i,\hat y_i) + \sum_{k=1}^K\Omega(f_k)\\ \hat y_i^t=\sum_{k=1}^tf_k(x_i)=\hat y_i^{t-1} + f_t(x_i) Obj(Θ)=i=0nl(yi,y^i)+k=1KΩ(fk)y^it=k=1tfk(xi)=y^it1+ft(xi)
前向加法模型

学习算法

第t步只学习 f t f_t ft,则目标优化函数可写为
O b j ( Θ ) = ∑ i = 0 n l ( y i , y ^ i t − 1 + f t ( x i ) ) + Ω ( f t ) + c o n s t a n t Obj(\Theta) = \sum_{i=0}^nl(y_i,\hat y_i^{t-1}+f_t(x_i)) + \Omega(f_t) + constant Obj(Θ)=i=0nl(yi,y^it1+ft(xi))+Ω(ft)+constant

泰勒展开:
f ( x + Δ x ) ≈ f ( x ) + f ′ ( x ) Δ x + 1 2 f ′ ′ ( x ) Δ x 2 f(x+\Delta x) \approx f(x) + f'(x)\Delta x + \frac{1}{2}f''(x)\Delta x^2 f(x+Δx)f(x)+f(x)Δx+21f(x)Δx2
定义:
g i = ∂ l ( y i , y ^ t − 1 ) ∂ y ^ t − 1 h i = ∂ 2 l ( y i , y ^ t − 1 ) ∂ ( y ^ t − 1 ) 2 g_i=\frac{\partial l(y_i,\hat y^{t-1})}{\partial \hat y^{t-1}}\\ h_i=\frac{\partial^2 l(y_i,\hat y^{t-1})}{\partial (\hat y^{t-1})^2} gi=y^t1l(yi,y^t1)hi=(y^t1)22l(yi,y^t1)
则目标方程可以写为
O b j t = ∑ i = 1 n [ l ( y i , y ^ i t − 1 ) + g i f t ( x i ) + 1 2 h i f i 2 ( x i ) ] + Ω ( f t ) + c o n s t a n t Obj^t=\sum_{i=1}^n[l(y_i,\hat y_i^{t-1}) + g_if_t(x_i) + \frac{1}{2}h_if_i^2(x_i)] + \Omega(f_t) + constant Objt=i=1n[l(yi,y^it1)+gift(xi)+21hifi2(xi)]+Ω(ft)+constant
将常数项去除,只留下与优化变量有关的项,其只依赖于每个数据点在误差函数上的一阶导数和二阶导数。
∑ i = 1 n [ g i f t ( x i ) + 1 2 h i f i 2 ( x i ) ] + Ω ( f t ) \sum_{i=1}^n[g_if_t(x_i) + \frac{1}{2}h_if_i^2(x_i)] + \Omega(f_t) i=1n[gift(xi)+21hifi2(xi)]+Ω(ft)

树结构

f t f_t ft可以看作是一个树结构,其叶子结构用q表示 q : R d → 1 , 2 , . . . , T q:R^d\to {1,2,...,T} q:Rd1,2,...,T ω i \omega_i ωi为叶子节点 i i i对应的值。

定义树结构的复杂度如下,即正则化项:
Ω ( f t ) = γ T + 1 2 λ ∑ j = 1 T ω j 2 \Omega(f_t) = \gamma T + \frac{1}{2}\lambda\sum_{j=1}^T\omega^2_j Ω(ft)=γT+21λj=1Tωj2

核心算法

定义 I j = { i ∣ q ( x i ) = j } I_j=\{i|q(x_i)=j\} Ij={iq(xi)=j}表示属于叶子 j j j的样本点
O b j t ≈ ∑ i = 1 n [ g i f t ( x i ) + 1 2 h i f t 2 ( x i ) ] + Ω ( f t ) = ∑ i = 1 n [ g i ω q ( x i ) + 1 2 h i ω q ( x i ) 2 ] + γ T + 1 2 λ ∑ j = 1 T ω j 2 = ∑ j = 1 T [ ( ∑ i ∈ I j g i ) ω j + 1 2 ( ∑ i ∈ I j h i + λ ) ω j 2 ] + γ T Obj^t \approx \sum_{i=1}^n[g_if_t(x_i) + \frac{1}{2}h_if_t^2(x_i)] + \Omega(f_t)\\ =\sum_{i=1}^n[g_i\omega_{q(x_i)}+\frac{1}{2}h_i\omega^2_{q(x_i)}] + \gamma T + \frac{1}{2}\lambda\sum_{j=1}^T\omega^2_j\\ =\sum_{j=1}^T[(\sum_{i\in I_j} g_i)\omega_j + \frac{1}{2}(\sum_{i\in I_j}h_i+\lambda)\omega^2_j] + \gamma T Objti=1n[gift(xi)+21hift2(xi)]+Ω(ft)=i=1n[giωq(xi)+21hiωq(xi)2]+γT+21λj=1Tωj2=j=1T[(iIjgi)ωj+21(iIjhi+λ)ωj2]+γT
可以定义 G j = ∑ i ∈ I j g i G_j = \sum_{i\in I_j}g_i Gj=iIjgi H j = ∑ i ∈ I j h i H_j = \sum_{i\in I_j}h_i Hj=iIjhi,目标函数可以进一步写为如下函数,假设我们已知树的结构 q q q,我们可以通过这个目标函数来求解最好的 ω \omega ω
O b j t = ∑ i = 1 2 [ ( ∑ i ∈ I j g i ) ω j + 1 2 ( ∑ i ∈ I j h i + λ ) ω j 2 ] + γ T = ∑ j = 1 T [ G j ω j + 1 2 ( H j + λ ) ω j 2 ] + γ T Obj^t = \sum_{i=1}^2[(\sum_{i\in I_j} g_i)\omega_j + \frac{1}{2}(\sum_{i\in I_j}h_i+\lambda)\omega^2_j] + \gamma T\\ =\sum_{j=1}^T[G_j\omega_j + \frac{1}{2}(H_j + \lambda)\omega_j^2] + \gamma T Objt=i=12[(iIjgi)ωj+21(iIjhi+λ)ωj2]+γT=j=1T[Gjωj+21(Hj+λ)ωj2]+γT
如上是一个求一维二次函数最小值问题,( x ∗ = − b 2 a x^*=-\frac{b}{2a} x=2ab
w ∗ j = − G j H j + λ O b j = − 1 2 ∑ j = 1 T G j 2 H j + λ + γ T w*_j=-\frac{G_j}{H_j+\lambda}\\ Obj = -\frac{1}{2}\sum_{j=1}^T\frac{G_j^2}{H_j+\lambda} + \gamma T wj=Hj+λGjObj=21j=1THj+λGj2+γT
如上Obj越小,代表这个树结构越好。我们可以将其理解为基尼指数或信息增益。因此可以枚举出所有可能的树结构,然后用上述Obj评价指标去选择一颗最好的树,但是这样不可行,所以采用贪心法,在已有叶子节点的基础上尝试添加一个叶节点,观察是否可以获取最大收益,增益公式如下
G a i n = 1 2 [ G L 2 H L + λ + G R 2 H R + λ − ( G L + G R ) 2 H L + H R + λ ] − γ Gain = \frac{1}{2}[\frac{G_L^2}{H_L+\lambda}+\frac{G_R^2}{H_R+\lambda} - \frac{(G_L+G_R)^2}{H_L+H_R+\lambda}] - \gamma Gain=21[HL+λGL2+HR+λGR2HL+HR+λ(GL+GR)2]γ
如上式右边共四项,分别为左子树分数,右子树分数,不分割可以拿到的分数,加入一个新的叶子节点引入的复杂度代价。
我们可以枚举所有的特征与所有的可分割点,以此尝试选出最大增益Gain的可分割特征与分割点。但是由于引入正则化项,所以不一定构建一个新的叶子节点就一定会优于原树。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值