我正在使用 SPSS Statistics Base 20。使用分析回归自动线性建模我输入了大约 50 个变量。
不使用 boosting 时,模型报告的准确率为 21%。不过,该软件并没有告诉我准确性是什么意思。
然后,当我启用 boosting 并将集合的数量设置为 400 时,计算大约需要半小时,最后我得到一个模型,其中所有变量都使用了大约 70% 的准确度。
这种准确性的提高是否可能是由于过度拟合,还是这种提升技术真的让我的模型更准确?
我正在使用 SPSS Statistics Base 20。使用分析回归自动线性建模我输入了大约 50 个变量。
不使用 boosting 时,模型报告的准确率为 21%。不过,该软件并没有告诉我准确性是什么意思。
然后,当我启用 boosting 并将集合的数量设置为 400 时,计算大约需要半小时,最后我得到一个模型,其中所有变量都使用了大约 70% 的准确度。
这种准确性的提高是否可能是由于过度拟合,还是这种提升技术真的让我的模型更准确?
首先,让我们确定你所说的过度拟合是什么意思。我假设您的意思是该算法已经学习了太多训练数据的细微差别,并且当您将其应用于以前从未见过的新数据(来自类似人群)时,它的表现不佳。这也被称为泛化能力差。
所有机器学习算法,包括提升,都可能过拟合。当然,由于 Stein 现象,标准多元线性回归保证过拟合。如果您关心过度拟合并想解决这个问题,您需要确保并“规范化”您应用的任何算法。对于正则回归,最简单且通常是最好的正则化方法是脊。
特别是对于提升:对抗过度拟合通常就像使用交叉验证来确定要采取多少提升步骤一样简单。在更微妙的层面上,您可能希望确保并使用足够小的学习率。非常小的学习率可能需要永远过度拟合(采取大量步骤),因此更难搞砸它们。但是,对于纯粹的准确性,您希望使用尽可能小的学习率并将提升步骤向上推,直到它开始过度拟合,因此,如果您真的很在意,您需要找到可行的最小学习率“底部出去”。我相信gbmR 也会为每个步骤打包一个样本,尽管我不确定它是否真的能像它在训练数据中传播学习一样多地对抗过度拟合。
因此,对于您的具体问题,我们无法真正知道 400 个合奏是否太多。实际上,您真正可以做到的唯一方法是通过交叉验证或保留集(或者,如果您的提升算法确实在每个步骤中进行装袋,则为一种 OOB 估计)。如果每个步骤中的基础学习器太强或学习率太高,那么这 400 个集成很容易成为严重的过拟合。除了 21% 到 70% 的增益外,没有其他数据,我倾向于过度拟合。
Boosting 技术的过度拟合是一个理论上尚未理解的话题,但经验结果表明,Boosting 似乎对过度拟合非常稳健。
对这种现象的通常解释如下:在一次迭代中被错误预测的样本在下一次迭代中将具有更高的权重。因此,孤立和错误标记的点往往会强烈地迫使分类器创建复杂的假设来拟合它们,我们称之为过度拟合。然而,由于几个分类器(集合)的组合,假设是非常非线性的,围绕这些问题点的假设非常狭窄,实际上不可能存在另一个点。
例如,在下面的示例中,我们可以看到一个数据点被错误标记。生成的假设(绿线)将围绕该点创建一个狭窄的圆圈,但测试数据中的另一个点不太可能恰好位于同一位置。

引用帕特里克·H·温斯顿在麻省理工学院的人工智能讲座:这种 [提升] 似乎并不过分。这是一个实验结果,文献对此感到困惑,无法提供解释。所以,这个东西已经在各种问题上进行了尝试,比如手写识别、理解语音,各种东西都使用了 boosting,并且由于某种原因与其他方法不同,但还没有完全理解,它似乎并没有过度拟合。[...] 总之,这很神奇,你总是想使用它,它适用于任何分类器。
我认为查看是否过度拟合的一个好方法是查看集成中各个节点之间的一致性。如果您获得 95% 的非常高的一致性,则您的模型很有可能预测目标变量的准确度非常低。这绝对是一个高指标,表明您的模型已经过度训练并且无法很好地泛化。