机器学习--XGBoost

1、模型思想

XGBoost是GBDT改良版,都是通过多个弱学习器,不断地减少残差。GBDT主要是对残差求一阶导,向负梯度的方向拟合残差,而XGBoost运用了泰勒展开,考虑到了二阶导数。

2、公式推导

每次的迭代都是前面的弱学习器组合上新的学习器,表示为:

ŷ (t)i=ŷ (t1)i+ft(xi) y ^ i ( t ) = y ^ i ( t − 1 ) + f t ( x i )

目标函数可以表示为:
loss=i=1nl(yi,ŷ (t1)i+ft(xi))+Ω l o s s = ∑ i = 1 n l ( y i , y ^ i ( t − 1 ) + f t ( x i ) ) + Ω

其中 Ω Ω 是正则项,为了防止过拟合,对树的数量和叶子结点的指加入了惩罚项:
Ω=γT+12λj=1Tw2j Ω = γ T + 1 2 λ ∑ j = 1 T w j 2

l(yi,ŷ (t1)i) l ( y i , y ^ i ( t − 1 ) ) 看作是 x x ft(xi)看作是 Δx Δ x ,对损失函数进行泰勒展开:
lossi=1N[l(yi,ŷ (t1)i)+gift(xi)+12hif2t(xi)]+Ω l o s s ≈ ∑ i = 1 N [ l ( y i , y ^ i ( t − 1 ) ) + g i f t ( x i ) + 1 2 h i f t 2 ( x i ) ] + Ω

其中 gi g i hi h i 分别是一阶导和二阶导,这个导数取决于选择什么损失函数,例如MAE,MSE。
l(yi,ŷ (t1)i) l ( y i , y ^ i ( t − 1 ) ) 这一项,是由前面的弱学习器组成,不会发生改变,可以看成常数项,然后损失函数可以变成:
lossi=1Ngift(xi)+12hif2t(xi))+γT+12λj=1Tw2j l o s s ≈ ∑ i = 1 N ( g i f t ( x i ) + 1 2 h i f t 2 ( x i ) ) + γ T + 1 2 λ ∑ j = 1 T w j 2

1到N是遍历样本,比较繁琐,把遍历样本转化为遍历叶子节点,损失函数变成:
lossi=1T[Giwi+12(Hi+λ)w2i]+γT l o s s ≈ ∑ i = 1 T [ G i w i + 1 2 ( H i + λ ) w i 2 ] + γ T

其中 Gi G i Hi H i 分别是这个叶子节点上所有数据的loss的一阶导数和二阶导数的和。
然后目标函数对 wi w i 求偏导数,让偏导数为0可以解除每个树叶节点的值 wi w i
losswi=12i=1TG2jHj+λ+γT=0 ∂ l o s s ∂ w i = − 1 2 ∑ i = 1 T G j 2 H j + λ + γ T = 0

解得:
wi=GjHj+λ w i = − G j H j + λ

回带得到损失函数是:
loss=12i=1TG2iH2i+λ+γT l o s s = − 1 2 ∑ i = 1 T G i 2 H i 2 + λ + γ T

与AdaBoost不同的是,AdaBoost基分类器用的是CART决策树,分隔的标准是gini系数,XGBoost则是用这个推出来的损失函数进行分隔。
让这个损失函数下降越多越好,也就是 G2H+λ G 2 H + λ 越大越好,所以XGBoost的信息增益是:
Gain=12[G2LHL+λ+G2RHR+λ(GL+GR)2HL+HR+λ]γ 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 + λ ] − γ

因为每次分隔会多出一个树,所以要减去 γ γ

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值