xgboost分类_XGBoost(Extreme Gradient Boosting)

c7c32b12f60a9cfc0bfe7ea159ca16cc.png

一、XGBoost在Ensemble Learning中的位置

机器学习中,有一类算法叫集成学习(Ensemble Learning),所谓集成学习,指将多个分类器的预测结果集成起来,作为最终预测结果,它要求每个分类器具备一定的“准确性”和“差异性”。通俗理解,集成学习的思想就是“三个臭皮匠,顶个诸葛亮”,多个弱分类器联合起来变成强分类器。集成学习根据分类器之间的依赖关系,划分为Boosting和Bagging两大门派,XGBoost(由华盛顿大学的陈天奇等人提出,因XGBoost出众的训练速度和准确率,受到广泛关注和应用)属于Boosting算法,它是在GBDT基础上的优化算法,如下图:

55446e4c102f492af63f287b6e565a58.png

二、XGBoost的基本思想和举例

XGBoost算法的基本思想跟GBDT类似,不断地通过特征分裂生长一棵树,每一轮学习一棵树,其实就是去拟合上一轮模型的预测值与实际值之间的残差。当训练完成,得到k棵树,如果要预测一个样本的分数,其实就是根据这个样本的特征,在每棵树中落到对应的一个叶子节点,每个叶子节点对应一个分数,最后只需将每棵树对应的分数加起来就是该样本的预测值。

60dcd49b0f67ddc4bd308a1542b8e060.png

9d08682f8f02297b2387b5fd16cfc318.png

未完待续……

三、XGBoost在GBDT基础上做了哪些优化?

1、导数信息:GBDT只用到一阶导数信息,而XGBoost对损失函数做二阶泰勒展开,引入一阶导数和二阶导数。
2、基分类器:GBDT以传统CART作为基分类器,而XGBoost不仅支持CART决策树,还支持线性分类器,相当于引入L1和L2正则化项的逻辑回归(分类问题)和线性回归(回归问题)。
3、特征采样:XGBoost借鉴RF的做法,即类似RandomForestClassifier的max_features,支持列抽样,不仅能防止过拟合,还能降低计算量。
4、正则项:XGBoost的目标函数加了正则化项控制模型的复杂度,防止模型过拟合。
5、并行化:XGBoost支持并行,不是tree维度上的并行,而是特征维度上的并行,决策树最耗时的步骤是对特征的值排序,XGBoost在迭代之前,先进行预排序,将每个特征按特征值排好序,存为块结构,分裂结点时可以采用多线程并行查找每个特征的最佳分割点(计算增益最大的特征进行下一步分裂),极大提升训练速度。
6、缺失值:当样本的特征值存在缺失值时,XGBoost能自动学习出它的默认分裂方向。

四、两种方法控制 XGBoost的过拟合(训练精度高而测试精度低)

方法1:直接控制模型的复杂度(max_depth,min_child_weight,gamma)
       max_depth:每棵树的最大深度限制。
       min_child_weight:子节点的最小权重,如果某个子节点权重小于这个阈值,则不会在分裂。
       gamma:分裂所带来的损失最小阈值,大于此值,才会继续分裂。
方法2:增加随机性,使训练对噪声强健(subsample,colsample_bytree,减小步长eta且增加迭代次数num_round )
       subsample:用于训练模型的子样本占整个样本集合的比例,能防止过拟合,取值范围为(0,1].
       colsample_bytree:训练每棵树时用来训练的特征的比例,类似 RandomForestClassifier 的 max_features,在建立树时对特征采样的比例,缺省值为1,取值范围(0,1].
       eta:每次迭代完成后更新权重时的步长,越小训练越慢,缺省值为0.3,取值范围为[0,1].
       num_round :总共迭代的次数。

五、XGBoost中偏差(Bias)与方差(Variance)的权衡

Bias-Variance是机器学习/统计学中一个重要的概念。当模型变得复杂时(例如树的深度更深),模型具有更强的拟合训练数据的能力,产生一个低偏差的模型,但是,复杂的模型容易过拟合,需要更多的数据来拟合。XGBoost中的大部分参数都是关于偏差和方差的权衡,最好的模型应该仔细地将模型复杂性(拟合能力)与其预测能力进行权衡。

六、使用XGBoost的示例代码

# step1:导入模块
import xgboost as xgb
# step2:读取数据
dtrain = xgb.DMatrix('demo/data/train.csv')
dtest = xgb.DMatrix('demo/data/test.csv')
# step3:指定参数
param = {'max_depth':2, 'eta':1, 'silent':1, 'objective':'binary:logistic' } # 二分类的逻辑回归问题,输出为概率值。
num_round = 2
# step4:训练
bst = xgb.train(param, dtrain, num_round)
# step5:预测
preds = bst.predict(dtest)

参考资料:

XGBoost官网:https://xgboost.apachecn.org/#/

XGBoost20题:https://blog.csdn.net/weixin_38753230/article/details/100571499

XGBoost算法:https://www.cnblogs.com/mantch/p/11164221.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值