Adaboost 与梯度提升

数据挖掘 算法 相似 集成建模 助推
2021-09-27 23:02:42

AdaBoost 与 Gradient Boosting 算法有何不同,因为它们都使用了 Boosting 技术?

从理论的角度来看,我无法弄清楚这两种算法之间的实际区别。

1个回答

AdaBoost 和 Gradient Boosting 都以顺序方式构建弱学习器。最初,AdaBoost 的设计方式是在每一步都调整样本分布,以便对错误分类的样本赋予更多的权重,而对正确分类的样本赋予更少的权重。最终的预测是所有弱学习者的加权平均值,其中更多的权重放在更强的学习者身上。

后来发现,AdaBoost 也可以用具有特定损失函数(指数损失)的加法模型的更一般框架来表示。参见(Hastie) ESL中的第 10 章。

加法建模试图解决给定损失函数的以下问题L

minαn=1:N,βn=1:NL(y,n=1Nαnf(x,βn))

其中可能是决策树桩。由于损失函数内部的总和使生活变得困难,表达式可以以线性方式近似,有效地允许将总和移动到损失函数前面,一次迭代地最小化一个子问题:f

minαn,βnL(y,fn1((x)+αnfn(x,βn))

对于任意损失函数,这仍然是一个棘手的问题,因此我们可以通过线搜索应用最速下降来进一步逼近这个问题,即我们通过向负梯度方向迈出一步来fn

为了避免对梯度的过度拟合,梯度被一个新的弱学习器逼近。这为您提供了梯度提升算法:

  1. 从常数模型f0
  2. 将弱学习的负梯度hnfn1
  3. 采取一步使 最小化损失γfn=fn1+γhnL(y,fn(x))

因此,主要区别在于 Gradient Boosting 是一种通用算法,用于寻找加法建模问题的近似解,而 AdaBoost 可以被视为具有特定损失函数的特殊情况。因此,梯度提升更加灵活。

另一方面,AdaBoost 可以从更直观的角度进行解释,并且可以在不参考梯度的情况下通过基于先前学习者的分类重新加权训练样本来实现。

另请参阅此问题以获取更多参考资料(引用):

  • 在梯度提升中,(现有弱学习器的)“缺点”由梯度识别。
  • 在 Adaboost 中,“缺点”由高权重数据点识别。