XGBoost推导过程

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

模型:



目标函数


模型学习:additive training:


如何选择每一轮加入什么 f 呢?答案是非常直接的,选取一个 f 来使得我们的目标函数尽量最大地降低。


这个公式可能有些过于抽象,我们可以考虑当l是平方误差的情况。这个时候我们的目标可以被写成下面这样的二次函数:


泰勒展开近似

更加一般的,对于不是平方误差的情况,我们会采用如下的泰勒展开近似来定义近似的目标函数,方便我们进行这一步的计算。


这一个目标函数只依赖于每个数据点的在误差函数上的一阶导数和二阶导数


树的复杂度

对于f的定义做一下细化,把树拆分成结构部分q和叶子权重部分 w


树的复杂度


关键步骤


通过这个目标函数来求解出最好的w,以及最好的w对应的目标函数最大的增益:


这里只涉及到了如何求一个一维二次函数的最小值的问题:


枚举所有不同树结构的贪心法


枚举所有可能的分割方案。要枚举所有 x<a 这样的条件,对于某个特定的分割a我们要计算a左边和右边的导数和。


观察这个目标函数,大家会发现第二个值得注意的事情就是引入分割不一定会使得情况变好,因为我们有一个引入新叶子的惩罚项。优化这个目标对应了树的剪枝, 当引入的分割带来的增益小于一个阀值的时候,我们可以剪掉这个分割。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值