xgboost模型介绍

一、XGBoost的简介

XGBoost全称为eXtreme Gradient Boosting,即极致梯度提升树。

XGBoost是非常强大且受欢迎的机器学习模型,尤其是在各类竞赛中被广泛使用。他是Boosting算法的其中一种,Boosting算法的思想是将许多弱分类器集成在一起,形成一个强分类器(个体学习器间存在强依赖关系,必须串行生成的序列化方法)。

XGBoost是一种提升树模型,即它将许多树模型集成在一起,形成一个很强的分类器。其中所用到的树模型则是CART回归树模型。

为了让没接触或者刚接触模型的萌新能看懂,我举个例子解释一下XGBoost模型:假设我现在想做一个甜品,但是我是第一次做,不知道每个原材料和调料具体放多少才是最合适的,所以第一次我是凭感觉去制作,所以可能第一次做出来的结果会不太好,然后我尝了一下,觉得是糖放多了太甜了,同时水加的太少了,那么我下一次尝试就可以减少糖的分量和多添加一些水。这次做完后,可能结果是味道层次不够丰富,那我可以再次进行尝试制作的时候多加一个原材料种类,就这样不断进行尝试上百次甚至上千次之后,最后获得了一杯味道适中,并且口感独特的甜品。此时把最终用到的原材料和他对应的份量都记录下来,这个菜谱就是对于这道菜来说相对完美的模型,每个原材料和他对应的份量就是这个模型的参数,而这个不断从错误当中学习,然后不断改进的算法就是XGBoost模型。

二、XGBoost和GBDT的区别

XGBoostGBDT
决策树+线性分类器决策树
弱分类器的输入除了残差之外,还有二阶导数前一个弱分类器的残差(一阶导数)作为后一个弱分类器的输入
每一个弱分类的损失函数不包含正则项每一个弱分类的损失函数包含正则项
必须手动将缺失值补齐模型会自动补齐,无需手动处理
不支持并行支持并行(注意:此处支持的为参数的并行)
每一次迭代都需要对特征进行排序操作训练前将所有特征进行排序,保存为bloc结构
训练中使用全部特征列抽样

三、XGBoost的调参

Xgboost 的调参,通常认为对它性能影响较大的参数有:

eta:每次迭代完成后更新权重时的步长。越小训练越慢。
num_round:总共迭代的次数。
subsample:训练每棵树时用来训练的数据占全部的比例。用于防止 Overfitting。
colsample_bytree:训练每棵树时用来训练的特征的比例,类似 RandomForestClassifier 的 max_features。
max_depth:每棵树的最大深度限制。与 Random Forest 不同,Gradient Boosting 如果不对深度加以限制,最终是会 Overfit 的。 early_stopping_rounds:用于控制在 Out Of Sample 的验证集上连续多少个迭代的分数都没有提高后就提前终止训练。用于防止Overfitting。

一般的调参步骤是:
将训练数据的一部分划出来作为验证集。
先将 eta 设得比较高(比如 0.1),num_round 设为 300 ~ 500。
用 Grid Search 对其他参数进行搜索
逐步将 eta 降低,找到最佳值。
以验证集为 watchlist,用找到的最佳参数组合重新在训练集上训练。注意观察算法的输出,看每次迭代后在验证集上分数的变化情况,从而得到最佳的 early_stopping_rounds。
最后要提一点,所有具有随机性的 Model 一般都会有一个 seed 或是 random_state 参数用于控制随机种子。得到一个好的 Model 后,在记录参数时务必也记录下这个值,从而能够在之后重现 Model。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值