GBM and Xgboost

GBDT概述

与Adaboost不同,GBM虽然也是加性模型,但它却是通过不断拟合残差来逐步提高模型效果。

需要强调的是,融合模型融合的是函数空间,而不是参数空间!!!*

梯度提升

t轮迭代的损失函数为:
\begin{split} J_t = L(y,F_t(x)) = L(y,\sum_{t=0}^t h_t(x))\end{split}

通过梯度下降法优化损失函数:
\begin{split} F_{t+1}(x) := F_t(x) - \rho_t \frac{\partial J_t}{\partial F_t(x)} \end{split}
注意,这里直接优化的是分类器!$\rho$是加法模型的系数(类似于adaboost的系数),利用牛顿法最小化$J_{t+1}$求得。[TBC]学习率真的是这样??

注意shrinkage与学习率是两个不同概念,它是在得到新拟合出的模型之后通过乘以收缩率去控制过拟合,类似于动量。也就是说,最终应该有:
\begin{split} F_{t+1}(x) = (1 - \text{shrinkage})F_t(x) - \text{shrinkage } \rho_t \frac{\partial J_t}{\partial F_t(x)} \end{split}
[TBC]??是每次迭代之后都直接使用shinkage,还是建好模型以后统一使用shrinkage?

GBM用的都是回归树! 应该是为了计算方便和更加精确。如果是分类问题,最后再对结果进行转换。

Xgboost

相较于GBM,引入了L2正则项,将叶节点数和叶节点得分作为罚项显化,并且利用泰勒展开进行优化求解。

利用得分增益进行树的分裂。

references

GBDT(梯度提升决策树)

Greedy function approximation: a gradient boosting machine

A Gentle Introduction to Gradient Boosting

Xgboost

一步一步理解GB、GBDT、xgboost