XGBoost分析总结

认识XGBoost是在参加kaggle网站的机器学习比赛上接触到的。听一些过来者说用xgboost,分分钟上top10%。然而我用过之后发现并没有显著提升,一定是理解不够。要知道在2015年的时候29个kaggle比赛,17个用到了xgboost,其中8个是只用xgboost就达到第一的名次。相对的第二流行的是神经网络的方法。而在KDDcup2015编程比赛中,前十的队伍都用了XGboost。作为一个开源的如此受欢迎的软件,认真研读是必须的。

然而网上的帖子大都知识碎片化,并不能深刻的理解其含义,于是下载了arxiv上的原始论文,以及github上的原始代码进行研读。相信这样的一步可以系统上的掌握boost的方法,真正理解其内涵。


1.Introduction

Boosting方法的基本思路是用多个决策树来得到更好的效果。每个决策树可能分类效果不好,但是综合多个分类(弱分类器)的多个结果肯定会得到更准确的预测。Gradient tree boosting方法有多个别名,gradient boosting machine (GBM),gradient boosted regression tree (GBRT),GBDT等等,都是类似的。而XGboost之所以被广泛推崇,主要在实现上进行了算法优化。然boosting能在普通的pc机上面的速度提高10倍以上,可以让数据处理,特别是参加比赛的队伍能够快速方便的使用。并且该实现由很强的可拓展性(scalability)。方便了XGboost在其他开发环境中的使用。具体算法实现上,在文章中给出了主要改进的地方:
      对稀疏的数据非常好的分类优化
对损失函数的规划项进行的调整
增加了分布式并行计算的支持

 The scalability of XGBoost is dueto several important systems and algorithmic optimizations.These innovations include: a novel tree learning algorithmis for handling sparse data; a theoretically justified weighted quantile sketch procedure enables handling instance weights in approximate tree learning. Parallel and distributed computing makes learning faster which enables quicker model ex-ploration. More importantly, XGBoost exploits out-of-core computation and enables data scientists to process hundredmillions of examples on a desktop. 

文中提到, While there are some existing works on parallel tree boost-ing [ 22 , 23 , 19 ], the directions such as out-of-core computation, cache-aware and sparsity-aware learning have notbeen explored. 现在的boosting的方法中,后面三个算法还没有实现,但不是科班出身的我对后面的三个意思并太清楚具体含义,往大家指正。
论文内容的安排为,第二章回顾了boosting方法,第三章和第四章分别介绍了程序的实现的方法和系统设计。相关工作的讨论放在第五章。第六章对程序实现进行了具体展示。第七章进行简短总结。

2. Tree boosting in a nutshell

Classification And Regression Tree(CART) 是决策树的一种实现方法(相关方法,ID3, C4.5, C5.0),是机器学习的十大算法之一。下面是大神的ppt的介绍,三张ppt让你认识Tree Ensemble 的精髓。对于一个树结构而很好的展示了模型和目标函数。 在损失函数中,xgboost包含两项,一个是表示树叶的树叶,另一个与一般机器学习算法相同,表示叶子得分的模的平方。
上图中,是一个决策树的简单示意,那么第i个实例,预测结果就是K个树预测结果的叠加,即上面第一个式子。对上面这一颗树来说,对leaf1的预测结果就是w1=2.


而后 对一个Tree ensemble来说,目标函数是每个树的组合得到。第一项就是传统的loss function, 第二项是regularization 项,用于防止过拟合。 常见的Random和boosted tree和tree ensemble有什么关系呢?RF和boosted tree的模型都是tree ensemble,只是构造(学习)模型参数的方法不同。
error=bias+variance
Boosting Tree weak  learners (high bias, low variance)
Random Forest : fully grown decision trees (low bias, high variance),RF grows trees in parallel


传统的梯度下降的方法速度优先,不能并行计算。在xgboost中,损失函数被展开到二级,最后的形式为红色椭圆标记。这里比较复杂,想理解的可以参考原文,作者在52cs上的帖子描述的更加清楚。基于我的理解,思路是这样的。因为我们的目标是优化损失函数,在xgboost中下一次预测的yt值可以表达成上一次预测值加上一个修正即yt= yt-1 + f(x),(这个方法用到的是additive training的思想)带入到图二中的损失函数中,泰勒展开到二次,然后进行参数的定义 将目标函数进行改写(这个地方涉及到具体的数学公式,需要有一定基础的人认真研读原文),可以得到图3中的目标函数。下面考虑如何求解目标函数的最小值。

最终的目标函数是

Obj(t)
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值