Xgboost概念
XGBoost全称:eXtreme Gradient Boosting,是一种基于决策树的集成机器学习算法,使用梯度上升框架,适用于分类和回归问题。优点是速度快、效果好、能处理大规模数据、支持多种语言、支持自定义损失函数等,不足之处是因为仅仅推出了不足5年时间,需要进一步的实践检验。
算法原理
先来举个例子,我们要预测一家人对电子游戏的喜好程度,考虑到年轻和年老相比,年轻更可能喜欢电子游戏,以及男性和女性相比,男性更喜欢电子游戏,故先根据年龄大小区分小孩和大人,然后再通过性别区分开是男是女,逐一给各人在电子游戏喜好程度上打分,如下图所示。
我们知道对于单个的决策树模型容易出现过拟合,并且不能在实际中有效应用。所以出现了集成学习方法。如下图,通过两棵树组合进行玩游戏得分值预测。其中tree1中对小男生的预测分值为2,tree2对小男生的预测分值为0.9。则该小男生的最后得分值为2.9。
将上面集成学习方法推广到一般情况,可知其预测模型为:
损失函数为:
∑
i
l
(
y
i
,
y
^
i
)
\sum _ { i } l \left( y _ { i } , \hat { y } _ { i } \right)
∑il(yi,y^i)代表损失函数,而
∑
k
Ω
(
f
k
)
\sum _ { k } \Omega \left( f _ { k } \right)
∑kΩ(fk)代表正则化项
算法训练:
首先优化第一棵树,完了之后再优化第二棵树,直至优化完K棵树。整个过程如下图所示:
训练时,新的一轮加入一个新的f函数,来最大化的降低目标函数,在第t轮,我们的目标函数为
将目标函数做二阶泰勒展开,进行公式推导:
将叶节点的最优值带入目标函数,最终目标函数的形式为: