xgboost算法推导

1.推导思路

  1. 目标函数
  2. 目标函数泰勒展开
  3. 合并正则项(遍历样本到遍历页节点)
  4. 目标函数最小值(求导为0)得到参数的解

2.详细推导

2.1 目标函数

l t = ∑ i = 1 N l ( y t , y ) + γ T + λ ∑ j = 1 T w j = ∑ i = 1 N [ l ( y t − 1 , y ) + f ( x ) ] + γ T + λ ∑ j = 1 T w j l^{t}=\sum_{i=1}^{N}l(y^{t},y)+\gamma T + \lambda \sum_{j=1}^{T}w_{j} = \sum_{i=1}^{N}[l(y^{t-1},y)+f(x)]+\gamma T + \lambda \sum_{j=1}^{T}w_{j} lt=i=1Nl(yt,y)+γT+λj=1Twj=i=1N[l(yt1,y)+f(x)]+γT+λj=1Twj

2.1 目标函数泰勒展开
  • 泰勒公式二阶导数展开
    f ( x + Δ x ) = f ( x ) + f ‘ ( x ) Δ x + 1 2 f ‘ ‘ ( x ) Δ x f(x+\Delta x) = f(x)+f‘(x)\Delta x+\frac {1}{2}f``(x)\Delta x f(x+Δx)=f(x)+f(x)Δx+21f(x)Δx

  • 目标函数泰勒展开
    l ( y t − 1 , y ) l(y^{t-1},y) l(yt1,y)作为 f ( x ) f(x) f(x),新增的树结构 f ( x ) f(x) f(x)作为 Δ x \Delta x Δx,这样2.1就可以转化为:
    ∑ i = 1 N [ l ( y t − 1 , y ) + f ( x ) ] + γ T + λ 1 2 ∑ j = 1 T w j 2 + c o n s t a n t \sum_{i=1}^{N}[l(y^{t-1},y)+f(x)]+\gamma T + \lambda \frac {1}{2}\sum_{j=1}^{T}w^2_{j}+constant i=1N[l(yt1,y)+f(x)]+γT+λ21j=1Twj2+constant
    = ∑ i = 1 N [ l ( y i t − 1 , y i ) + Δ l ( y i t − 1 , y i ) Δ x i f ( x ) + 1 2 Δ 2 l ( y i t − 1 , y i ) Δ 2 x i f 2 ( x ) ] + γ T + 1 2 λ ∑ j = 1 T w j 2 =\sum_{i=1}^{N}[l(y^{t-1}_{i},y_{i})+\frac {\Delta l(y^{t-1}_{i},y_{i})}{\Delta x_{i}}f(x)+\frac {1}{2}\frac {\Delta ^{2}l(y^{t-1}_{i},y_{i})}{\Delta ^{2}x_{i}}f^2(x)]+\gamma T + \frac {1}{2}\lambda \sum_{j=1}^{T}w^2_{j} =i=1N[l(yit1,yi)+ΔxiΔl(yit1,yi)f(x)+21Δ2xiΔ2l(yit1,yi)f2(x)]+γT+21λj=1Twj2
    = ∑ i = 1 N [ g ( x ) f ( x ) + 1 2 h ( x ) f 2 ( x ) ] + γ T + 1 2 λ ∑ j = 1 T w j 2 + c o n s t a n t =\sum_{i=1}^{N}[g(x)f(x)+\frac {1}{2}h(x)f^2(x)]+\gamma T + \frac {1}{2}\lambda \sum_{j=1}^{T}w^2_{j}+constant =i=1N[g(x)f(x)+21h(x)f2(x)]+γT+21λj=1Twj2+constant
    = ∑ i = 1 N [ g ( x i ) w i ( x i ) + 1 2 h ( x i ) w i 2 ( x i ) ] + γ T + 1 2 λ ∑ j = 1 T w j 2 + c o n s t a n t =\sum_{i=1}^{N}[g(x_i)w_{i}(x_i)+\frac {1}{2}h(x_i)w^2_{i}(x_i)]+\gamma T + \frac {1}{2}\lambda \sum_{j=1}^{T}w^2_{j}+constant =i=1N[g(xi)wi(xi)+21h(xi)wi2(xi)]+γT+21λj=1Twj2+constant
    其中 l ( y i t − 1 , y i ) l(y^{t-1}_{i},y_{i}) l(yit1,yi)在前 t − 1 t-1 t1颗树结构已知的情况下,是一个常量, Δ l ( y i t − 1 , y i ) Δ x i \frac {\Delta l(y^{t-1}_{i},y_{i})}{\Delta x_{i}} ΔxiΔl(yit1,yi)为一阶导数,用 g ( x ) g(x) g(x)表示, Δ 2 l ( y i t − 1 , y i ) Δ 2 x i \frac {\Delta ^{2}l(y^{t-1}_{i},y_{i})}{\Delta ^{2}x_{i}} Δ2xiΔ2l(yit1,yi)为二阶导数,用 h ( x ) h(x) h(x)表示。

2.2 合并正则项(遍历样本到遍历页节点)

上式中, N N N代表样本个数, T T T代表叶子节点的个数,一个叶子节点可能可以分配到多个样本:
I j = ( i ∣ q ( x i ) = j ) I_{j} = (i|q(x_i)=j) Ij=(iq(xi)=j)
那么可以利用该公式将上式合并:
= ∑ i = 1 N [ g ( x i ) w i ( x i ) + 1 2 h ( x i ) w i 2 ( x i ) ] + γ T + 1 2 λ ∑ j = 1 T w j 2 + c o n s t a n t =\sum_{i=1}^{N}[g(x_i)w_{i}(x_i)+\frac {1}{2}h(x_i)w^2_{i}(x_i)]+\gamma T +\frac {1}{2}\lambda \sum_{j=1}^{T}w^2_{j}+constant =i=1N[g(xi)wi(xi)+21h(xi)wi2(xi)]+γT+21λj=1Twj2+constant
= ∑ j = 1 T [ ∑ x i ⊂ I j g ( x i ) w j + 1 2 ∑ x i ⊂ I j h ( x i ) w j 2 ] + γ T + 1 2 λ ∑ j = 1 T w j + c o n s t a n t =\sum_{j=1}^{T}[\sum_{x_i\subset I_j} g(x_i)w_{j}+\frac {1}{2}\sum_{x_i\subset I_j} h(x_i)w^2_{j}]+\gamma T + \frac {1}{2}\lambda \sum_{j=1}^{T}w_{j}+constant =j=1T[xiIjg(xi)wj+21xiIjh(xi)wj2]+γT+21λj=1Twj+constant
= ∑ j = 1 T [ G w j + 1 2 H w j 2 ] + γ T + 1 2 λ ∑ j = 1 T w j 2 + c o n s t a n t =\sum_{j=1}^{T}[Gw_{j}+\frac {1}{2}Hw^2_{j}]+\gamma T + \frac {1}{2}\lambda \sum_{j=1}^{T}w^2_{j}+constant =j=1T[Gwj+21Hwj2]+γT+21λj=1Twj2+constant

2.3 目标函数最小值(求导为0)得到参数的解

G + H w j + λ w j = 0 G+Hw_j+\lambda w_j = 0 G+Hwj+λwj=0
w j = − G H + λ w_j = -\frac {G}{H+\lambda} wj=H+λG

3 工程实现

  • 是一个点一个点分裂得到树的结构,每次分裂树需要进行下面工作:
#1 计算每个节点的obj
#2 选择最优节点分裂
#3 算法复杂度:O(k*d*n*log n),n为样本个数,d为特征,k为深度,n*logn是因为要排序,来选择最优节点,所以对于不需要排序的特征,例如类别特征,需要onehot编码,因为其不需要排序。

4 参数

4.1 随机性
  • eta :学习率?learning rate?
  • subsample 样本抽取比例
  • colsample_bytree,列的抽取率
  • max_delta_step:???
4.2 复杂度
  • max_depth
  • min_child_weight,节点权重小于该值,不继续分裂了
  • gamma??
  • alpha和lambda:目标函数中正则化系数
4.3 其他参数

5 总结

  • 作用
    这样就得到了新增树的权重的解,这个解与每个叶子节点的一阶导和二阶导有关,这个在树结构确定的情况下是已知的,这样,每确定一次树的结构,可以算出一个似然函数的值,通过比较似然函数,可以得到最优的树结构。
  • xgboost优点
    很简单,就是将似然函数用泰勒公式展开,然后加了一个正则项,再求似然函数的最小值。

6 参考资料

1.https://www.zhihu.com/question/58883125/answer/206813653
2.wepon:http://wepon.me/files/gbdt.pdf

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值