增加训练数据对整体系统准确性有什么影响?

机器算法验证 机器学习 分类 数据集 精确召回
2022-01-18 13:42:53

有人可以用可能的例子为我总结一下,在什么情况下增加训练数据可以改善整个系统?我们什么时候发现添加更多的训练数据可能会过度拟合数据并且不能在测试数据上提供良好的准确性?

这是一个非常不具体的问题,但是如果您想针对特定情况回答它,请这样做。

4个回答

在大多数情况下,数据越多越好过度拟合本质上是学习训练数据中出现的虚假相关性,而不是现实世界中的相关性。例如,如果您只考虑我的同事,您可能会学会将“名叫马特”与“有胡子”联系起来。当只考虑在地板上工作的一小群人时,它是 100% 有效的(!),但总的来说这显然不是真的。增加数据集的大小(例如,到整个建筑物或城市)应该会减少这些虚假的相关性并提高学习者的表现。n=4

也就是说,更多数据无济于事(甚至可能会造成伤害)的一种情况是,如果您的额外训练数据嘈杂或与您尝试预测的任何内容不匹配。我曾经做过一个实验,我将不同的语言模型 [*] 插入到声控餐厅预订系统中。我改变了训练数据的数量及其相关性:在一个极端情况下,我有一个经过精心策划的小型预订表集合,与我的应用程序完美匹配。另一方面,我有一个从大量经典文献中估计出来的模型,一个更准确的语言模型,但与应用程序的匹配度要差得多。令我惊讶的是,小但相关的模型大大优于大但不相关的模型。


当训练集的大小接近模型参数的数量时,也会出现一种令人惊讶的情况,称为 **double-descent**。在这些情况下,测试风险首先随着训练集大小的增加而降低,当添加更多的训练数据时会暂时*增加*,最后随着训练集的继续增长再次开始降低。这种现象在神经网络文献中被报道了 25 年(参见 Opper,1995),但也出现在现代网络中([Advani and Saxe,2017][1])。有趣的是,即使是线性回归也会发生这种情况,尽管 SGD 适合 ([Nakkiran, 2019][2])。这种现象尚未完全理解,主要是理论上的兴趣:我当然不会
[*]语言模型只是看到给定单词序列的概率,例如它们对于构建体面的语音/字符识别器至关重要。 P(wn='quick', wn+1='brown', wn+2='fox')

请注意:通过添加更多数据(行或示例,而不是列或特征),您过度拟合的机会会减少而不是增加。

两段摘要是这样的:

  • 添加更多示例,增加多样性。它减少了泛化错误,因为您的模型通过在更多示例上进行训练而变得更加通用。
  • 添加更多输入特征或列(对于固定数量的示例)可能会增加过度拟合,因为更多特征可能无关紧要或多余,并且有更多机会使模型复杂化以适合手头的示例。

有一些简单的标准来比较模型的质量。AICBIC为例。

他们都表明,添加更多数据总是会使模型变得更好,而增加超出最优值的参数复杂性会降低模型质量。

增加训练数据总是会增加信息,应该会提高拟合度。如果您随后仅在用于拟合的训练数据上评估分类器的性能,就会出现困难。这会产生乐观偏见的评估,这也是使用留一法交叉验证或引导程序的原因。

理想情况下,一旦你有更多的训练样本,你就会有更低的测试错误(模型的方差减少,这意味着我们更少过度拟合),但理论上,更多的数据并不总是意味着你会有更准确的模型,因为高偏差模型不会从更多的训练示例中受益。

请参阅此处:在机器学习中,更好的是:更多数据或更好的算法

高方差——一个模型可以很好地表示训练集,但有过度拟合嘈杂或不具代表性的训练数据的风险。

高偏差- 一个更简单的模型,不会过度拟合,但可能会欠拟合训练数据,无法捕捉重要的规律。