XGBoost算法的概念树模型:机器学习模型可以简单分为传统机器学习模型和深度学习模型,传统的机器学习又可以根据模型的表达式分为树模型和线性模型。
Boosting模型:树模型以决策树为基础,在之上衍生出了各种算法,从集成学习的角度考虑,树模型可以分为 Bagging 和 Boosting 模型,Boosting 方法是另一种通过弱学习器提高准确度的方法,和 Bagging 方法不同的是,Boosting 每次根据之前模型的表现,进行新的模型的训练,以改变训练数据的权值和弱分类器的组合方式,得到最后的强学习器。
GBDT:对于简单的损失函数,如指数损失和平方损失,每一次提升都较为简单,但是对于一般的损失函数(如绝对损失),优化难度大大增加。因此 GBDT 利用损失函数负梯度在当前模型的值作为提升树中残差的近似值,拟合一个回归树。
XGBoost:XGBoost则是 GBDT 算法的改进和提高。相比于传统的 GBDT 算法,XGBoost 在损失函数、正则化、切分点查找和并行化设计等方面进行了改进,使得其在计算速度上比常见工具包快 5 倍以上。例如,GBDT 算法在训练第 n 棵树时需要用到第 n-1 棵树的残差,从而导致算法较难实现并行;而 XGBoost 通过对目标函数做二阶泰勒展开,使得最终的目标函数只依赖每个数据点上损失函数的一阶导和二阶导,进而容易实现并行。图表 7 显示了 XGBoost 算法的流程,它与 GBDT 在数学上的不同之处在于训练每个弱学习器时的目标函数。数学方面的知识并非本文重点,故点到为止。
本文将通过BigQuant平台复现XGBoost模型,并讲解其中的参数调整,代码及全文详见pdf。