XGBoost和GBDT的区别

前辈的总结如下:

1. 传统GBDT以CART作为基分类器,XGBoost还支持线性分类器,这个时候XGBoost相当于带L1和L2正则化项的Logistic回归(分类问题)或者线性回归(回归问题)。

2. 传统的GBDT只用了一阶导数信息(使用牛顿法的除外),而XGBoost对损失函数做了二阶泰勒展开。并且XGBoost支持自定义损失函数,只要损失函数一阶、二阶可导。

3. XGBoost的目标函数多了正则项, 相当于预剪枝,使得学习出来的模型更加不容易过拟合。

4. XGBoost还有Shrinkage和列抽样,进一步防止过拟合。

5. 对缺失值的处理。对于特征的值有缺失的样本,XGBoost可以自动学习出它的分裂方向。

6. XGBoost工具支持并行。当然这个并行是在特征的粒度上,而非tree粒度,因为本质还是boosting算法。
 

xgboost算法作为GBDT的一种高效实现,做了很多深度优化。

  • 支持线性基分类器
  • 损失函数二阶泰勒近似,支持自定义损失函数
  • 正则项控制树的复杂度(叶子数,权重L2平滑)
  • Shinkage减小每棵树的影响, 列子抽样,列Block预排序,buffer预取cache-aware,
  • 百分位点分桶近似分裂,缺失值分裂处理,level-wise并行分裂。

 

为什么xgboost可以处理缺失数据

1. xgboost在寻找分裂点时不考虑缺失值的数值,只对该列特征值为non-missing的样本上对应的特征值进行遍历。为了保证完备性,缺失值数据会被分到左子树或右子树分别计算损失,选择最优的那一个。
2. 可以为缺失值或者指定的值指定分支的默认方向,这能大大提升算法的效率。
3. 如果在训练中没有缺失值而在预测中出现缺失,那么会自动将缺失值的划分方向放到右子树。

参考:

赵大寳個人小站

XGBoost论文精读

机器学习算法中 GBDT 和 XGBOOST 的区别有哪些?

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值