xgboost分类_XGBoost算法提高分类性能

58b1cccb1e5b66f202ae18f60645e65c.png

1.bagging & boosting

bagging: 自举汇聚法。它是一种基于数据随机重抽样的分类器构建方法,是在原始数据集选择S次后得到S个新数据集的一种技术。新数据集和原数据集大小相等。也有一些更为先进的bagging算法,如随机森林。

boosting: boosting是一种与bagging很类似的一种技术,在前者中,不同的分类器是通过串行训练而获得的,每个新分类器都根据已训练出的分类器的性能进行训练。boosting是通过集中关注被已有分类器错分的那些数据来获得新的分类器。bagging中的分类器权重是相等的,而boosting中的分类器权重是不相等的,每个权重代表其对应分类器在上一轮迭代中的成功度。

2.XGBoost的学习

XGBoost是boosting算法的其中一种。Boosting算法的思想是将许多弱分类器集成在一起形成一个强分类器。因为XGBoost是一种提升树模型,所以它是将许多树模型集成在一起,形成一个很强的分类器然后我们来深入探讨下该算法的思想和原理:

XGBoost算法思想

该算法思想就是不断地添加树,不断地进行特征分裂来生成一棵我们最终需要的树,每次添加一个树,其实是选择分类器,去学习一个新函数,去拟合上次预测的残差。当我们训练完成得到k棵树,我们要预测一个样本的分数,其实就是根据这个样本的特征,在每棵树中会落到对应的一个叶子节点,每个叶子节点就对应一个分数,最后只需要将每棵树对应的分数加起来就是该样本的预测值。接着我们假设有K棵树:可以得到

4f3effd16919b1855e0ce91296ed4abc.png

接着就可以得到XGBoost算法的目标函数即为:

27db876dc1f003168c54bf6f54606a25.png

目标函数由两部分构成,第一部分用来衡量预测分数和真实分数的差距,另一部分则是正则化项。 新生成的树是要拟合上次预测的残差的,即当生成t棵树后,预测分数可以写成:

fddd3fe2b3c21ffaf02d5130336e7c6a.png

同时,可以将目标函数改写成:

228d5dfaf538c8f9aa4fbaac158c7216.png

很明显,我们接下来就是要去找到一个

能够最小化目标函数。XGBoost的想法是使用泰勒级数近似目标函数。所以,目标函数近似为:

e25bcba9bfe7764ae9bd35b539bd384a.png

最终我们可以得到新的目标函数:

ca3736966622d2ef22f23ec4543cc592.png

每个样本都最终会落到一个叶子结点中,所以我们可以将所以同一个叶子结点的样本重组起来,过程如下图

e02b49b7e6a06470cc1ecc815ad5a5e7.png

通过改写,我们可以将目标函数改写成关于叶子结点分数w的一个一元二次函数,直接使用顶点公式求解最优的w和目标函数值。因此,最优的w和目标函数公式为:

1bc0c06a91325cb8f5a10da6ef73d861.png

最后我们来看一下树的复杂度:

da961b18f962391d58159d73d6c49003.png

其中

表示的是权重,而其后的
是用来确认把多少的重心来放在其前或其后来影响式子的值。

3.代码实现抽取

bbb33f0a6b2dc895372af9a0a1cb10a3.png

从核心代码可以看出xgboost算法使用十分方便,首先是准备数据,不可避免的要进行数据的清洗,得到所需的数据,调用方法进行训练和测试,最终得到分类的得分结果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值