经典论文(2)——XGBoost

经典论文(2)——XGBoost

 

xgboost是基于梯度提升的树,公式如下:

经典论文(2)——XGBoost

其中经典论文(2)——XGBoost为CART回归树,每个叶子都有一个连续分数,拟合最终目标的loss函数如下,经典论文(2)——XGBoost为预测值,经典论文(2)——XGBoost为真实值,T为叶子节点个数,经典论文(2)——XGBoost为叶子节点权重平方和。
经典论文(2)——XGBoost
 

其中经典论文(2)——XGBoost

将loss进行泰勒公式展开,可以得到:

经典论文(2)——XGBoost

最终得到每个叶子节点的权重为经典论文(2)——XGBoost,而对应第t棵树的loss为经典论文(2)——XGBoost,其中G为所有样本在该叶子节点的loss的一阶导数之和,H为所有样本在该叶子节点的loss的二阶导数之和。

通常采用遍历得到树的结构,每次分裂的loss reduction:经典论文(2)——XGBoost

XGBoost在贪心全局扫描的基础上提出了加快寻找分裂点的方案:

  • 特征预排序+缓存:在训练之前,对每个特征按照特征值大小进行排序保存为block结构,后续每次迭代重复利用该结构减少计算量。

  • 分位点近似点:对每个特征按照特征值大小排序后,采用类似分位点选取的方法,选出常数个特征值作为该特征的候选分割点并选出最优的。

  • 并行查找:由于已存block结构,支持利用多个线程并行计算每个特征的最佳分割点。

XGBoost相对于GBDT的不同:

  • 基分类器:XGBoost不仅支持CART,还支持线性分类器,相当于带L1和L2正则化项的logistic回归或者线性回归;

  • 导数信息:XGBoost对损失函数进行了二阶泰勒展开,损失函数一阶、二阶可导即可,GBDT仅用了一阶导数信息;

  • 列抽样:XGBoost支持列抽样,用于过拟合;

  • 缺失值处理:对树中的每个非叶子节点,XGBoost可以自动学习它的默认分裂方向;

  • 并行化:XGBoost预先将每个特征按照特征值大小排序存储为block结构,分裂时通过多线程并行查找每个特征的最佳分裂点;

上一篇:AJAX 和 JSON


下一篇:XGBoost原理和调参