xgboost多分类原理_一文全面了解XGBoost

b7a750414af8ab2a355329a5c394e44f.png

如有出入,敬请斧正

XGBoost是一种强大的机器学习算法, 在Kaggle等算法比赛中, 一直都被誉为"刷分神器", 经常能有出彩的准确率表现, 甚至排行榜的前若干名都是XGBoost的刷屏. 包括在实际应用中, XGBoost也是一大热门, 在以腾讯为代表的各大公司的算法岗面试中, XGBoost, 特别是其与GBDT的相互对比, 一直是考察热点.

本文试图从决策树与集成学习的基本概念开始, 全面详实地介绍这个算法.

集成学习

集成学习是一类机器学习方法的总称. 顾名思义, "集成", 也就是构建多个机器学习模型, 然后将其结合成一个, 达到"众人抬柴火焰高"的效果.

集成学习有三种方法:

  • Bagging: 各个模型之间没有依赖关系, 代表性算法如随机森林;
  • Boosting: 各个模型之间存在依赖关系, 代表性算法有AdaBoost, 还有本文的XGboost;
  • Stacking: 用一个元模型来整合多个子模型预测结果的学习方法, 可视为一对多的依赖关系.

XGBoost属于Boosting的学习方法, 对于其他方法的具体原理不再赘述, 主要讨论Boosting.

Boosting

Boosting是一种串行的学习方法. 对于一组数据, 首先建立若干个学习器(模型), 这些学习器一般都采用比较简单的算法, 称为基学习器. 将这些基学习器排成一串, 先训练第一个基学习器, 根据这个学习器的学习结果对训练集进行调整, 加大学习器输出结果错误的样本的权重, 再去训练下一个基学习器, 以此类推, 直到训练完所有的基学习器. 最后给这些基学习器赋予不同的权重, 来执行分类、回归、排序等任务.

以上阐述的就是Boosting的基本工作过程. Boosting从偏差-方差分解的角度来看, 主要着重于降低偏差. 哪怕基学习器的性能相当弱, 只要强于随机猜想(可自行证明), 就能获得泛化性能很强的集成学习器.

06f5ef609a09f26a1f17cfeb9aa136d9.png

Gradient Boosting

Gradient Boosting 就是一种具体的Boosting集成方法. 前面所阐述的Boosting方法, 其实更应该说是一种思想, 它更贴近于AdaBoost的工作过程. 而Gradient Boosting的方法是, 每一次建立基学习器, 都是在前一个基学习器的损失函数的梯度下降方向. 这样做的好处之一, 就是可以和BP神经网络一样, 采用多种不同的可微分的损失函数, 来达到不同的效果或处理不同的任务.

在Gradient Boosting中, 每一次迭代训练, 都会基于之前训练的结果, 产生一个基学习器, 即

其中

是之前训练的集成学习器,
是当前训练的基学习器,
是当前基学习器的权重, 训练的结果就是产生新的集成学习器
.

每次迭代的目标是最小化损失函数

其中N为训练样本数. 沿着损失函数进行梯度下降, 有

对比关于

的两个式子, 有

所以, 我们作梯度下降的方式, 就是用基学习器

来拟合前一轮模型损失函数的负梯度值, 这种方法被认为是函数空间的梯度下降.

简单说, 损失函数衡量了真实值与预测值之间的差异, 那么下一轮的基学习器通过拟合

未能完全拟合的负梯度值, 就相当于对上一轮的结果进行修正, 对损失函数进行最小化. 这也是Gradient Boosting的核心思想.

最常用的损失函数是均方误差 (MSE) 函数, 也就是

对其求一阶导

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值