GBDT、Xgboost与LightGBM总结

1. 从Gradient Descend到GBDT

集成学习之Boosting —— Gradient Boosting原理

2. Xgboost原理详解

XGBoost算法原理小结

2.1 从GBDT到Xgboost

相对于GBDT,Xgboost的优化主要体现在以下三个方面:

  1. 算法本身的优化:
    • GBDT只支持决策树,Xgboost还支持使用其他弱分类器;
    • GBDT使用损失函数的负梯度(一阶导数)作为分类器的拟合目标,Xgboost使用损失函数的二阶泰勒展开来逼近损失函数,同时使用了一阶导数信息和二阶导数信息;
    • Xgboost在损失函数中加入了正则项来防止过拟合。
  2. 算法健壮性:
    • 可以处理特征缺失值
      • 在寻找split point的时候,不会对该特征为missing的样本进行遍历统计,只对该列特征值为non-missing的样本上对应的特征值进行遍历,通过这个技巧来减少了为稀疏离散特征寻找split point的时间开销。
      • 在逻辑实现上,为了保证完备性,会分别处理将missing该特征值的样本分配到左叶子结点和右叶子结点的两种情形,计算增益后选择增益大的方向进行分裂即可。
      • 如果在训练中没有缺失值而在预测中出现缺失,那么会自动将缺失值的划分方向放到右子树。
  3. 运行效率优化:
    • 特征粒度的并行化(预排序)
    • 其他工程优化
为什么要用二阶泰勒展开逼近损失函数?

为了任意损失函数的展开形式都与MSE损失的展开形式统一:

在这里插入图片描述

Xgboost可以使用任意自定义损失函数,只要该函数二阶可导。

为什么二阶泰勒展开效果比GBDT的一阶导数要好?

二阶信息本身就能让梯度收敛更快更准确,这一点在优化算法里的牛顿法里已经证实了。类似于在求物体运动的问题里,知道速度的同时还知道加速度。

GDBT与Xgboost的优化过程区别
  • GBDT每一轮迭代都是用弱(基)分类器去拟合上一轮损失函数对上一轮集合分类器的一阶导,树节点的分裂使用均方误差。

  • Xgboost直接极小化每一轮的损失函数的值。对应到树分类器有:
    max ⁡ 1 2 G L 2 H L + λ + 1 2 G R 2 H R + λ − 1 2 ( G L + G

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值