多少次 AdaBoost 迭代?

机器算法验证 收敛 助推 adaboost
2022-04-11 11:05:18

在一个 R 包中ada,主 AdaBoost 拟合函数(也称为ada)接受一个参数,指定要执行的提升迭代次数,默认值为 50。

我应该使用多少次迭代?这个问题以前有人问过,没有答案。我也知道有关该主题的论文,但我不确定如何应用结果(例如,我该如何选择ϵ)?

1个回答

答案似乎取决于问题以及您如何解释 AdaBoost 算法。

Mease 和 Wyner (2008)认为 AdaBoost 应该运行很长时间,直到它收敛,并且 1,000 次迭代应该足够了。这篇论文的主要观点是,从Friedman、Hastie 和 Tibshirani (2000)的“提升的统计观点”中获得的直觉可能是不正确的,这适用于他们使用ν参数和早期停止时间。他们的结果表明,作为基础学习器的长运行时间、无正则化和深度树利用了 AdaBoost 的优势。

Bennett 对那篇论文的回应表明,当使用更深的树时,AdaBoost 收敛得更快,并且更能抵抗过度拟合。贝内特得出结论

对于缓慢收敛的问题,AdaBoost 会经常通过提前停止来正则化

然后

对于更快速收敛的问题,AdaBoost 将收敛并进入过度训练阶段

其中“过度训练”并不意味着“过度拟合”,而是“进一步提高收敛后的样本外性能”。

Friedman、Hastie 和 Tibshirani 对 Mease 和 Wyner 的回应是,证明带有决策树桩、收缩和提前停止的 AdaBoost 可以比深度树执行得更好,没有收缩和运行直到收敛,但他们的论点取决于无论如何运行算法来收敛. 也就是说,即使 100 或 10 次迭代是最优的,也需要运行数百次迭代才能找出正确的停止点应该在哪里。正如用户 Matthew Drury 在评论中指出的那样,这只需要一次长时间的算法运行。

论文本身,以及对 Bickel 和 Ritov 回应的反驳,都强调在低维问题中,AdaBoost 确实严重过度拟合,需要提前停止;似乎十个维度足以让这不再是一个问题。

Buja 和 Stuetzle 的回应提出了这样的可能性,即 AdaBoost 的前几次迭代减少了偏差,后面的迭代减少了方差,并提供了 Mease 和 Wyner 方法,即从相对无偏见但高方差的基础学习器开始,如 8-出于这个原因,节点树是有意义的。因此,如果需要低方差预测,则更长的运行时间可能是有用的。

因此,要做的是对以下网格进行交叉验证:

  • ν{0.1,1.0}
  • tree depth{1,2,3,4}
  • iterations{1,,1000}(但只适合 1000 次迭代)

基本上,我正在研究这两种方法。这部分是因为它们看起来都是有效的,部分是因为我的许多预测变量都是离散的,在这种情况下,“统计观点”显然更直接适用(尽管我希望我对如何以及为什么有更好的理解)。