前言:本文主要介绍以XGBOOST为代表的gradient tree boosting这类机器学习技术的思想。XGBOOST这篇论文的方法也是在gradient tree boosting的技术上改进而来的,主要在许多工程细节上进行了改进,使得XGBOOST在实际应用中有很好的效果。但本文不对这些细节问题进行介绍。
论文背景
Introduction最后一段描述到:
While there are some existing works on parallel tree boosting, the directions such as out-of-core computation, cache-aware learning have not been explored.
论文所作贡献
本篇论文在gradient tree boosting方法的基础上做出了以下几点改进:
加入正则后的gradient boosting方法
关于gradient boosting的核心思想,维基百科里解释的意思很清楚:
结合实际情况去考虑,boosting的思想是想使用许多较弱的预测模型去集成一个较强的预测模型,与bagging通过投票决定结果不同的是,boosting是通过逐步添加较弱模型拟合残差来得到最终结果:假如已有六棵树相加的结果给出了预测结果,那么这六棵树得出的结果与真实值的结果的差就是要添加的第七棵树的拟合目标。因此cost function是不断变化的。公式(2)就转变为下一个公式:
如何将树表示及树的预测结果表示出来呢?通过一些具体地定义:
现在,确定了cost function,就可以通过计算的极值最终将cost function化简为:
以上,通过在每一个阶段选择最能拟合残差的树的思想和贪心算法内核一致,还有一个地方也使用了贪心算法的思想。那就是在每一棵树的构建过程中,见下方公式:
这里的思想和决策树中使用的熵的思想一致,只不过这里不是熵,而是cost function。
本文遗留问题:
1、Abstract 里说:
we describe a scalable end-to-end tree boosting system called XGBoost.
这里的scalable和end-to-end的含义还是不太了解。