XGBoost

[1] http://www.360doc.com/content/18/0101/17/40769523_718161675.shtml
[2] https://www.cnblogs.com/wxquare/p/5541414.html
[3] https://blog.csdn.net/xwd18280820053/article/details/68927422
[4] https://blog.csdn.net/u013363120/article/details/80195471
[5] 主要参考wepon的资料

预备知识

首先介绍一下牛顿法:
L ( θ t ) L(\theta ^t) L(θt) θ t − 1 \theta ^{t-1} θt1处进行二阶泰勒展开:
L ( θ t ) ≈ L ( θ t − 1 ) + L ′ ( θ t − 1 ) Δ θ + L ′ ′ ( θ t − 1 ) Δ θ 2 2 L(\theta ^t) \approx L(\theta ^{t-1}) + L'(\theta ^{t-1}) \Delta \theta + L''(\theta ^{t-1})\frac{\Delta \theta^2}{2} L(θt)L(θt1)+L(θt1)Δθ+L(θt1)2Δθ2
g g g表示一阶导数, h h h表示二阶导数, h > 0 h>0 h>0
求出 Δ θ = − g h \Delta \theta = - \frac{g}{h} Δθ=hg

概括XGBoost

相比原始的GBDT, XGBoost的目标函数多了正则项,使得学习出的模型更加不容易过拟合,此外,使用了同时使用了一阶和二阶导数信息。

有哪些指标可以衡量树的复杂度?
树的深度,内部节点个数,叶子节点个数,叶节点分数

正则项:XGBoost采用的是叶子节点个数和叶节点分数。对叶子节点个数进行惩罚,相当于在训练过程中做了剪枝。

XGBoost原理

目标函数:
在这里插入图片描述

因为本质是加法模型,当进行第t棵树的学习时:
在这里插入图片描述
Note that 上面式子里的正则项是对第t棵树进行正则化。

这里写图片描述
前面我们提到,XGBoost是对叶子节点个数以及叶子节点值进行正则化。
这里写图片描述

这里写图片描述
这里写图片描述

打分函数:
在这里插入图片描述
节点分裂前后的增益准则(越大越好):
在这里插入图片描述

XGBoost特点总结

常用的booster有树模型和线性模型。

1. 正则化
XGBoost在代价函数里加了正则项,用于控制模型的复杂度,缓解过拟合。正则项里包含了树的叶子节点个数,每个叶子节点上输出值的平方和。

2. 二阶导数信息
XGBoost同时用到了一阶和二阶导数。

3.并行处理
这里的并行不是树粒度级别的并行,而是特征粒度。

4.灵活性
支持自定义代价函数,只要函数可以一阶和二阶求导。

5. 列抽取
借鉴了随机森林的做法,支持列抽样,不仅能降低过拟合,还可以减少计算。

6.树节点分裂算法—近似算法
对于每个特征,只考察分位点,减少计算复杂度

XGBoost不是简单地按照样本个数进行分位,而是以二阶导数值作为权重,举例如下:
在这里插入图片描述

7.Shrinkage(缩减,即学习速率):
在进行完一次迭代后,会将叶子节点的值乘上该系数,主要是为了削弱每棵树的影响,让后面有更大的学习空间。
这里写图片描述
8.对缺失值的处理
对于特征的值有缺失的样本,XGBoost可以学习出默认的节点分裂方向。缺失值数据会被分到左子树和右子树分别计增益,选择较优的那一个。

9.剪枝
XGBoost 先从顶到底建立所有可以建立的子树,再从底到顶反向进行剪枝。

10.内置交叉验证
XGBoost允许在每一轮boosting迭代中使用交叉验证。因此,可以方便地获得最优boosting迭代次数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值