机
器
学
习
boosting
家
族
之
XGBoost
算
法
一
、
概
念
XGBoost全名叫(eXtremeGradientBoosting)极端梯度提升,经常被用在一些比赛中,其效果显著。它是大规模并行boosted
tree的工具,它是目前最快最好的开源boostedtree工具包。XGBoost所应用的算法就是GBDT(gradientboostingdecisiontree)
的改进,既可以用于分类也可以用于回归问题中。
1
、
回
归
树
与
决
策
树
事实上,分类与回归是一个型号的东西,只不过分类的结果是离散值,回归是连续的,本质是一样的,都是特征(feature)到结
果/标签(label)之间的映射。说说决策树和回归树,在上面决策树的讲解中相信决策树分类已经很好理解了。
分类树的样本输出(即响应值)是类的形式,如判断蘑菇是有毒还是无毒,周末去看电影还是不去。而回归树的样本输出是数值
的形式,比如给某人发放房屋贷款的数额就是具体的数值,可以是0到120万元之间的任意值。
那么,这时候你就没法用上述的信息增益、信息增益率、基尼系数来判定树的节点分裂了,你就会采用新的方式,预测误差,常
用的有均方误差、对数误差等。而且节点不再是类别,是数值(预测值),那么怎么确定呢,有的是节点内样本均值,有的是最优化
算出来的比如Xgboost。
2
、
boosting
集
成
学
习
boosting集成学习,由多个相关联的决策树联合决策,什么叫相关联,举个例子,有一个样本[数据>标签]是[(2,4,5)>4],第
一棵决策树用这个样本训练得预测为3.3,那么第二棵决策树训练时的输入,这个样本就变成了[(2,4,5)>0.7],也就是说,下一棵
决策树输入样本会与前面决策树的训练和预测相关。
与之对比的是randomforeast(随机森林)算法,各个决策树是独立的、每个决策树在样本堆里随机选一批样本,随机选一批特
征进行独立训练,各个决策树之间没有啥毛线关系。
所以首先Xgboost首先是一个boosting的集成学习,这样应该很通俗了
3、这个时候大家就能感觉到一个回归树形成的关键点:(1)分裂点依据什么来划分(如前面说的均方误差最小,loss);
(2)分类后的节点预测值是多少(如前面说,有一种是将叶子节点下各样本实际值得均值作为叶子节点预测误差,或者计算所得)
二
、
集
成
思
想
在学习XGBoost之前,我们得需要先明白集成思想。集成学习方法是指将多个学习模型组合,以获得更好的效果,使组合后的模
型具有更强的泛化能力。另外XGBoost是以分类回归树(CART树)进行组合。故在此之前,我们先看下CART树(CART树具体原理请自
行复习,或者可以留言)。如下,通过输入用户年龄、性别进行判断用户是否喜欢玩游戏的得分值。由此得到一颗CART树模型。
我们知道对于单个的决策树模型容易出现过拟合,并且不能在实际中有效应用。所以出现了集成学习方法。如下图,通过两棵树
组合进行玩游戏得分值预测。其中tree1中对小男生的预测分值为2,tree2对小男生的预测分值为0.9。则该小男生的最后得分值为
2.9。
将上面集成学习方法推广到一般情况,可知其预测模型为: