在 boosting 中,为什么学习者“弱”?

机器算法验证 机器学习 数理统计 助推
2022-01-18 23:12:09

另请参阅stats.SE 上的类似问题

诸如AdaBoostLPBoost之类的增强算法中,众所周知,要组合的“弱”学习者只需表现得比机会有用,就可以了,来自 Wikipedia:

它使用的分类器可能很弱(即显示出很大的错误率),但只要它们的性能不是随机的(导致二元分类的错误率为 0.5),它们就会改进最终模型。即使是错误率高于随机分类器预期的分类器也是有用的,因为它们在分类器的最终线性组合中具有负系数,因此表现得像它们的逆。

  • 使用弱学习器而不是强学习器有什么好处?(例如,为什么不使用“强”学习方法来提升——我们是否更容易过度拟合?)

  • 弱学习者是否有某种“最佳”强度?这与集合中的学习者数量有关吗?

是否有任何理论来支持这些问题的答案?

3个回答

因此,boosting 是一种学习算法,它可以使用另一种算法作为子程序来生成高精度预测,而这种算法又可以有效地生成假设,只是比随机猜测稍微好一点(通过逆多项式)。

它的主要优点是速度。

当 Schapire 在 1990 年提出它时,它是一个突破,因为它表明,生成误差略小于 1/2 的假设的多项式时间学习器可以转换为生成具有任意小误差的假设的多项式时间学习器。

因此,支持您的问题的理论在“弱可学习性的力量”pdf)中,他基本上表明“强”和“弱”学习是等价的。

也许原始问题的答案是,“当你可以更便宜地构建弱学习器时,构建强学习器毫无意义”。


从相对较新的论文中,有“关于弱可学习性和线性可分性的等效性:新的松弛和有效的提升算法”pdf),我不明白,但它似乎相关,并且可能对受过更多教育的人感兴趣:)

我将通过更直观的解释来解决尚未提到的过度拟合问题。你的第一个问题是:

使用弱学习器而不是强学习器有什么好处?(例如,为什么不使用“强”学习方法来提升——我们是否更容易过度拟合?)

据我了解,主要原因是:

  • Speed,正如其他答案中所涵盖的那样;
  • 准确度提升:如果你已经有一个很强的学习者,那么提升的好处就不那么重要了;
  • 如您所料,避免过度拟合这样想:

boosting 所做的是将假设空间中的许多不同假设结合起来,以便我们最终得到一个更好的最终假设。因此,boosting 的强大力量来自于假设的多样性相结合。

如果我们使用强学习器,这种多样性往往会降低:每次迭代后不会有很多错误(因为模型很复杂),这不会使 boosting 对新假设产生太大影响。假设非常相似,集成将与单个复杂模型非常相似,这反过来又会过度拟合!

在 boosting 中,我们主要使用弱学习器,因为与强学习器相比,它们的训练速度更快。想想看。如果我使用多层神经网络作为学习器,那么我需要训练很多。另一方面,决策树可能要快得多,然后我可以训练很多。

假设我使用 100 个学习者。我在 100 秒内训练 NN,在 10 秒内训练决策树。我第一次使用 NN 提升需要 100*100 秒,而使用决策树进行第二次提升需要 100*10 秒。

也就是说,我看过一些文章,这些文章使用强大的学习者来提升。但在我看来,在那个问题上,学习能力强的人很快。

我尝试使用 Weka 在 KDD99 入侵检测数据集(4+ 百万)上训练 MLP。在我的机器上花了超过 72 小时。但是提升(AdaBoostM1 with Decision Tree - Decision Stump)只用了 3 个小时。在这个问题中,很明显我不能对强学习器使用提升,这是一个需要太多时间的学习器。