GBDT
提升树利用加法模型与前向分布算法实现学习的优化过程。当损失函数是平方损失和指数损失函数时,每一步优化是很简单的。但是对一般损失函数而言,往往每一步优化并不是那么容易。针对这一问题,Freidman提出了梯度提升算法。这是利用最速下降法的近似方法,其关键是利用损失函数在当前模型的值:
算法第1步初始化,估计使损失函数极小化的常数值,它是只有一个根节点的树,第2(a)步计算损失函数的负梯度在当前模型的值,将它作为残差的估计,对于平方损失函数,它就是通常所说的残差;对于一般损失函数,它就是残差的近似值,第2(b)步估计回归树叶节点区域,以拟合残差的近似值。第2©步利用线性搜索估计叶节点区域的值,使损失函数极小化。第2(d)步更新回归树,第3步得到输出的最终模型。
XGBoost
GBDT和XGBoost的不同点
- GBDT是机器学习算法,XGBoost是该算法的工程实现。
- 在使用CART作为基分类器的时候,XGBoost显式地加入了正则项来控制模型的复杂度,有利于防止过拟合,从而提高模型的泛化能力。
- GBDT在模型训练时只使用了代价函数的一阶导数信息,XGBoost对代价函数进行二阶泰勒展开,可以同时使用一阶和二阶导数。
- 传统的GBDT采用CART作为基分类器,XGBoost支持多种类型的基分类器,比如线性分类器。
- 传统的GBDT在每轮迭代时使用全部的数据,XGBoost则采用了与随机森林相似的策略,支持对数据进行采样。
- 传统的GBDT没有设计对缺失值进行处理,XGBoost能够自动学习出缺失值的处理策略。