前言:
{
昨天简单了解了一下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(暂译为稀疏觉察的分裂寻找),其目的在于应对缺失数据(包括人工添加的虚假数据)。实际上就是在树中定义缺省划分方法,当遇到样本缺失值时直接按照规定的方

本文介绍了xgboost在机器学习中的应用,包括其正则项、误差二阶导信息利用和稀疏觉察的分裂寻找等特点。通过一个西瓜数据集的实践例子展示了如何在Python环境中使用xgboost进行训练和评估,同时分享了参数设置的经验。
最低0.47元/天 解锁文章
1056

被折叠的 条评论
为什么被折叠?



