xgboost原理

1.1、一般的目标函数:

Obj(Θ)=L(Θ)+Ω(Θ)(1.1.1)

L(Θ):Ω(Θ)
这样目标函数的设计来自于统计学习里面的一个重要概念叫做Bias-variance tradeoff44。比较感性的理解,Bias可以理解为假设我们有无限多数据的时候,可以训练出最好的模型所拿到的误差。而Variance是因为我们只有有限数据,其中随机性带来的误差。目标中误差函数鼓励我们的模型尽量去拟合训练数据,这样相对来说最后的模型会有比较少的 bias。而正则化项则鼓励更加简单的模型。因为当模型简单之后,有限数据拟合出来结果的随机性比较小,不容易过拟合,使得最后模型的预测更加稳定。

1.2、对于tree ensemble,我们可以比较严格的把我们的模型写成是:

y^i=k=1Kfk(xi),fkF(1.2.1)

y^(t)i=k=1tfk(xi)=y^(t1)i+ft(xi)(1.2.2)

k代表第k课树,最终的结果是K棵树结果的加和。

1.3、xgboost设计目标也包含上面的两部分:

Obj(t)==i=1nl(yi,y^(t)i)+t=1tΩ(fi)i=1nl(yi,y^(t1)i+ft(xi))+Ω(ft)+constant(1.3.1)

ft

当l为平方误差的情况下,这时候目标能改写成下面的二次函数:

Objt==i=1n(yi(y^(t1)i+ft(xi)))2+Ω(ft)+constanti=1n[2(y^(t1)iyi)ft(xi)+ft(xi)2]+Ω(ft)+constant

1.4、目标函数通过二阶泰勒展开变形

Obj(t)=i=1nl(yi,y^(t1)i+ft(xi))+Ω(ft)+constant(1.4.1)

  • 泰勒展开:
    f(x+Δx)f(x)+f(x)Δx+12f′′(x)Δx2
  • 定义:
    gi=y^(t1)l(yi,y^(t1)),  hi=2y^(t1)l(yi,y^(t1))

    l(yi,y^(t1)i+ft(xi))yil(yi,y^(t1)i)f(x)y^(t1)ixf(x+Δx)ft(xi)Δx

Obj(t)i=1n[l(yi,y^(t1)i)+gift(xi)+12hif2t(xi)]+Ω(ft)+constant(1.4.2)

关于 ft 在去除常数项后目标函数的形式如下:

i=1n[gift(xi)+12hif2t(xi)]+Ω(ft)(1.4.3)

gi=y^(t1)l(yi,y^(t1)),  hi=2y^(t1)l(yi,y^(t1))

传统的GBDT可能大家可以理解如优化平法aa残差,但是这样一个形式包含可所有可以求导的目标函数。也就是说有了这个形式,我们写出来的代码可以用来求解包括回归,分类和排序的各种问题

2.1、树的复杂度

对于f的定义做一下细化,把树拆分成结构部分 q ,和叶子权重部分w。下图是个具体的例子,结构函数 q 把输入映射到叶子的索引号上,而w给定了每个索引号对应的叶子分数是什么。

ft(x)=wq(x),wRT,q:Rd{1,2,....,T}(2.1.1)

这里写图片描述


  • 树的复杂度公式:
    Ω(ft)=γT+12λj=1Tw2j(2.1.2)

T为叶子节点的总数目,这个复杂度包括了一棵树里面节点个数,以及每个树叶子节点上面输出分数的 L2 模平方。
这里写图片描述

2.2、求解总目标函数

每个叶子上面的样本集合 Ij={i|q(xi)=j},j={1,2,...T}jid

Obj(t)==i=1n[gift(xi)+12hif2t(xi)]+Ω(ft)i=1n[giwq(xi)+12hiwq(xi)]+γT+λ12j=1Tw2jj=1T(iIjgi)wj+12(iIjhi+λ)w2j+γT(2.2.1)(2.2.2)(2.2.3)

Gj=iIjgiHj=iIjhi(2.2.4)

把2.2.4带入2.2.3得:
Obj(t)=i=1T[Gjwj+12(Hj+λ)w2j]+λT(2.2.5)

一元二次方程求最小值(一阶导数为0)
wj=GjHj+λ(2.2.6)

2.2.6带入2.2.5得:
Obj=12j=1TG2jHj+λ+γT(2.2.7)

这里写图片描述

Gain=12[G2LHL+λ+G2RHR+λ(Gl+GR)2HL+HR+λ]γ(2.2.8)

G2LHL+λ:G2RHR+λ(Gl+GR)2HL+HR+λγ:

这里写图片描述

参考文献
http://www.52cs.org/?p=429

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值