在学习本文之前,需要掌握CART树、Boosting算法。
XGBoost中的Tree Boosting
模型定义:
在传统GTB模型中添加了正则项,为了控制模型整体的复杂度和叶子结点权值分数。
XGBoost对GTB的优化:
- 目标函数近似
模型的目标函数用传统的方法很难在欧式空间进行优化,XGBoost使用近似的方法解决。
泰勒公式 是一个用函数某点的信息描述其附近取值的公式,如果函数曲线足够平滑,则可通过某点的各阶导数值构建一个多项式来近似表示函数在该点的邻域的值。
XGBoost目标函数与GTB对比:
- 最优目标函数叶子权重
切分点查找算法
XGBoost在每轮训练生成新的树模型时,首先要计算所有特征在所有切分点分裂前后的Objsplit值,然后选取最大的特征及切分点作为最优特征和最优切分点,XGBoost提供了多种切分点查找算法。
-
精确贪心算法
-
基于直方图的近似算法
-
快速直方图算法
-
加权分位数概要算法
-
稀疏感知切分点查找算法
XGBoost处理稀疏数据的方法是给每棵树指定一个默认方向,即当特征值缺失时,该样本会被划分到默认方向的节点上。XGBoost通过稀疏感知切分点查找算法来选择默认方向。
XGBoost中的排序学习
DART
Dropout技术+MART=DART
具体来说,DART在MART上做了两处优化:
- 计算梯度时,从现有模型的所有树中随机选择一个子集
- 对新增加的树进行标准化,防止模型超出拟合目标
是介于MART和RF之间的一种权衡实现。
树模型的可解释性
除了利用weight、cover和gain等特征重要性的评估方法,还有一些单个样本的个性化评估,XGBoost集成了Saabas和SHAP方法。
XGBoost中的线性模型
系统优化
- 基于列存储数据块的并行学习
CSC格式并行计算。在训练之前对所有特征值进行一次排序,方便复用。 - 缓存感知访问
- 外存块计算