xgboost总结

参考:https://blog.csdn.net/xiu351084315/article/details/89192983

算法原理

xgboost是在gbdt的基础上做了一些优化。
gbdt是基于CART的集成算法,使用回归树,可以处理分类和回归问题,通过每轮样本训练的训练,不断减小残差,修正合适的损失函数来构建树。
xgboost在损失函数中引入了正则项,减少过拟合;将一阶导数改为二阶导数;在工程方面的优化,例如支持并行计算,提供计算效率等(参考https://snaildove.github.io/2018/10/02/get-started-XGBoost/#XGBoost-%E7%B3%BB%E7%BB%9F%E8%AE%BE%E8%AE%A1%E7%9A%84%E7%B2%BE%E9%AB%93)

损失函数

损失函数主要为由1阶转为2阶,具体目的学习完善。

分裂结点算法(参考: https://snaildove.github.io/2018/10/02/get-started-XGBoost/#查找分裂点的近似算法-Approximate-Algorithm)

  1. 查找分裂点的近似算法
  2. 带全的分为方案
  3. 稀疏情况下的分裂方法

正则化

其中T是叶子的数量,w是叶子的权重,对叶子节点个数做了惩罚,相当于在训练过程中做了剪枝。

缺失值处理

对于缺失值数据,one-hot编码等造成的特征缺失,使用可以处理稀疏特征的分裂算法,主要是对稀疏特征缺失的样本学习出默认节点分裂方向。
将缺失值的数据默认进入左子树和右子树,分别计算增益,选择增益较大的方向,对特征下的所有样本点做同样的操作,取逆梯度最大值即为特征分裂的点。

优缺点

优点是速度块,最新版支持spark,4000多万样本,70个维度,200课树,训练时间为1小时(https://www.zhihu.com/question/41354392)
对特征进行了分块并排序,也是比gdbt更快速的一个原因。

sklearn参数

通用参数:
booster 基础提升器的参数,默认为gbtree(树的基本模型),可选gblinear(使用线性函数);dart(树的基本模型)
silent 默认为0,设置为1没有运行消息。
nthread: 线程数
disable_default_eval_metric 当值>0时,默认的模型评估器失效。
num_pbuffer 默认值,不需要管
num_feature,默认值,不需要管
提升器参数
eta 默认为0.3,可选[0,1],shrinkage参数,用于更新叶子节点权重时,乘以改系数,避免步长过大。
gamma 损失函数减少量,类似于min_split_loss
max_depth 默认为6,深度越深,越容易过拟合
…参数太多,详细看https://snaildove.github.io/2018/10/02/get-started-XGBoost/#%E6%8F%90%E5%8D%87%E5%99%A8%E5%8F%82%E6%95%B0-Booster-parameters

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值