机器学习算法系列(14)梯度提升决策树

Photo by Nicolas Picard on Unsplash

Photo by Nicolas Picard on Unsplash

1. 提升树

在前面的文章中,我们了解到了一种提升方法 —— AdaBoost,它是一类能够从训练数据中学习一组弱分类器,并将弱分类器组合成强分类器的算法。提升树(Boosting tree)是提升方法中的另一种,特殊之处在于它的基分类器是决策树(分类树或回归树),提升树可以看做是多颗决策树的线性组合。

Photo by Eric Welch on Unsplash

Photo by Eric Welch on Unsplash

AdaBoost 与提升树同为提升方法,两者有什么关系呢?可以这样说,如果限定提升树的基分类器为分类树,那么此时的提升树 = AdaBoost。下面讨论回归问题的提升树算法,其实相比分类问题,回归问题更好计算,没有 AdaBoost 那一套复杂的权重更新过程,只需要拟合残差即可!残差是什么?残差是实际值与预测值之差:

\[r = y_i - f(x_i)\]

回归问题的提升树算法有两个值得关注的点,一、寻找使得残差最小的切分节点;二、平方损失误差 \(L\) 达到要求后即可停止。

2. 梯度提升(Gradient Boosting)

上面一节中,可以知道,平方损失函数的情形很简单,但是对于更一般的损失函数,优化就没有那么简单了。关键是计算其负梯度在当前模型的值,并将该值作为近似的残差,最后根据残差拟合一个回归树。

\[-\left[ \frac{\partial L(y^{(i)}, f(x^{(i)}))} {\partial f(x^{(i)})} \right]_{f(x) = f_{k-1}(x)} \approx r_{m,i}\]

推荐阅读

  1. 机器学习中的算法(1)-决策树模型组合之随机森林与GBDT
  2. chentianqi: XGBoost 与 Boosted Tree
觉得还不错?请我喝杯啤酒吧:)