1、什么是XGBoost
XGBoost 是陈天奇等人开发的一个开源机器学习项目,XGBoost 是经过优化的分布式梯度提升库,旨在高效、灵活且可移植。
它是基于 Gradient Boosting 框架实现的机器学习算法。
1.1 XGBoost的核心思想
XGBoost 的核心思想就是:
- 不断的添加树,树节点选择合适的特征进行分裂,每棵树本质上是在学习新的函数 ,去拟合上次预测的残差;
- 假设训练完成得到 棵树,要得到一个样本的预测值时,实际上就是根据这个样本的特征,在每棵树中会对应到一个叶子节点,每个叶子节点就对应一个值;
- 最后将每棵树对应叶子结点的值加起来就是该样本对应的预测值;
如下图所示:
1.2
XGBoost的目标函数
XGBoost 的目标函数如下式所示:
前半部分 对应训练误差, 对应训练样本的数量;
后半部分 对应正则化项,用来表示树的复杂度, 对应树的数量;
1.2.1 训练误差
首先,我们先来拆解训练误差部分:
在生成第 棵树的时候,样本 对应的预测值为 。
其中, 为前 棵树的预测值,