前言:
{
昨天简单了解了一下gradient boosting,实际上在机器学习比赛中,gradient boosting的算法非常流行。这次要记录的是gradient boosting的一种实现:xgboost(eXtreme Gradient Boosting)。
}
正文:
{
xgboost的简单介绍:
{
论文原文地址:[1]。
对于xgboost的主要结构特点,知乎回答[2]的中已经描述了大概情况,我就在这写一点我的理解:
1,添加了正则项,把模型的复杂度作为目标函数的一部分,见式(2)。正则项是一个避免过拟合的有效手段,甚至tensorflow都会在返回的损失里默认添加正则项[3]。
2,使用了误差的二阶导信息。gradient boosting模型的目标函数为,可以看到,误差部分只是把新残差模型的输出直接加到原模型的输出上的结果。但是xgboost的目标函数为,其中并且。对比泰勒公式,可以发现新的目标函数中左边的每次误差部分变成了在处的二阶泰勒展开,并且z=,因为此时就是预测的-,上述误差部分就相当于。
3,Sparsity-aware Split Finding(暂译为稀疏觉察的分裂寻找),其目的在于应对缺失数据(包括人工添加的虚假数据)。实际上就是在树中定义缺省划分方法,当遇到样本缺失值时直接按照规定的方