如何知道模型已经开始过拟合?

数据挖掘 神经网络 过拟合
2021-09-19 04:13:15

我希望以下摘录能够深入了解我的问题。这些来自这里

然后学习逐渐减慢。最后,在 epoch 280 左右,分类准确度几乎停止提高。后面的 epoch 仅在 epoch 280 的准确度值附近看到小的随机波动。与之前的图表对比,与训练数据相关的成本继续平稳下降。如果我们只看这个成本,我们的模型似乎仍在变得“更好”。但测试准确度结果表明,这种提高是一种假象。就像费米不喜欢的模型一样,我们的网络在 epoch 280 之后学到的东西不再推广到测试数据。所以这不是有用的学习。我们说网络在 280 纪元之后过度拟合或过度训练。

我们正在训练一个神经网络,并且成本(在训练数据上)一直下降到 400 纪元,但在 280 纪元之后分类精度变得静态(除了一些随机波动),因此我们得出结论,模型在 280 纪元后对训练数据过度拟合。

我们可以看到测试数据的成本在 epoch 15 左右之前有所提高,但在那之后它实际上开始变得更糟,尽管训练数据的成本继续变得更好。这是我们的模型过度拟合的另一个迹象。然而,它提出了一个难题,即我们是否应该将 epoch 15 或 epoch 280 视为过度拟合将主导学习的点?从实际的角度来看,我们真正关心的是提高测试数据的分类准确率,而测试数据的成本只不过是分类准确率的一个代理。因此,将 epoch 280 视为在我们的神经网络中过度拟合主导学习的点是最有意义的。

与之前的测试数据分类准确性与训练成本相比,我们现在将测试数据的成本与训练成本相比较。

然后这本书继续解释为什么 280 是过度拟合开始的正确时期。这就是我的问题。我无法解决这个问题。

我们要求模型最小化成本,因此成本是它用来衡量其自身正确分类强度的指标。如果我们认为 280 是开始过度拟合的正确时期,我们是否没有以某种方式创建一个有偏差的模型,该模型虽然是特定测试数据的更好分类器,但仍然以低置信度做出决策,因此更容易偏离从测试数据上显示的结果?

4个回答

假设我们想预测一个学生是否会根据她的简历进行工作面试。

现在,假设我们从 10,000 份简历及其结果的数据集中训练一个模型。

接下来,我们在原始数据集上试用该模型,它以 99% 的准确率预测结果……哇!

但现在坏消息来了。

当我们在一个新的(“看不见的”)简历数据集上运行模型时,我们只能得到 50% 的准确率……呃,哦!

我们的模型不能很好地从我们的训练数据泛化到看不见的数据。

这被称为过度拟合,它是机器学习和数据科学中的常见问题。

过拟合 V/s 欠拟合

通过查看相反的问题,欠拟合,我们可以更好地理解过拟合。

当模型太简单(特征太少或正则化太多)时,就会出现欠拟合,这使得从数据集中学习变得不灵活。

简单的学习者在预测中的方差往往较小,但对错误结果的偏见更大(请参阅:偏差-方差权衡)。

另一方面,复杂的学习者往往在他们的预测中有更多的变化。

偏差和方差都是机器学习中预测误差的形式。

通常,我们可以减少偏差带来的误差,但结果可能会增加方差带来的误差,反之亦然。

太简单(高偏差)与太复杂(高方差)之间的权衡是统计和机器学习中的一个关键概念,并且会影响所有监督学习算法。

我学到的东西是绘制学习曲线,我知道,这并不像编写机器学习代码本身那样有趣,但它是直观地理解正在发生的事情的基础。

经验法则的定义是,当您的训练准确度不断提高而您的验证准确度停止提高(甚至开始变得更糟)时,就会发生过度拟合。

避免过度拟合的最简单解决方案是提前停止(一旦情况看起来不好就停止训练),当然,最简单的解决方案是有代价的:它不是最好的解决方案。正则化和辍学是争夺拟合的好工具,但那是另一回事:)

希望能帮助到你

正如您引用的消息来源所说,“测试数据的成本只不过是分类准确性的代表。” 你可能会问,为什么要使用代理,为什么不直接使用准确率呢?答案是您需要最小化权重和偏差的成本函数。因此,它必须是权重和偏差的可微函数。精度不是可微分函数,因此不能直接使用。但是由于最终您关心准确性,正如您自己上面所说明的那样(...请注意,分类准确度在第一个实例中是 100%,但成本更高...),您可以根据测试的准确度确定过度拟合放。

要了解过度拟合的含义以及它如何影响模型的准确性,您需要了解偏差 - 方差权衡。

欠拟合和过拟合是两个与偏差方差问题直接相关的不同问题。了解三个不同因素之间的关系以及这些因素如何与偏差-方差(过拟合-欠拟合)问题相关联始终很重要:

1-模型的大小。参数数量

2- 可用于训练的数据量。训练样本数。

3-迭代次数。训练迭代。

将这些因素中的任何一个与过度拟合-欠拟合问题直接联系起来而不查看其他因素总是会导致错误的结论。

由于了解这些因素并通过使用数学方程来避免过拟合和欠拟合问题联系主题是一项艰巨的任务,更多的是依赖于任务,人们使用简单的方法来发现和避免过拟合。简单的方法是将数据分成三个不同的部分,训练、验证和测试。测试不应该被触及。使用训练集训练网络,使用验证集在每次迭代或多次迭代后测试网络。从理论上讲,您会看到验证集上的误差在前 N 次迭代中逐渐减小,然后在极少数迭代中保持稳定,然后开始增加。当错误开始增加时,您的网络开始过度拟合训练数据并且应该停止训练过程。

注意:值 N 与我上面列出的三个因素非常相关。拥有一个演示训练集并使用不同的模型、训练数据进行测试始终是一个好习惯。您会看到模型越大 - 训练数据越少 N 越小。模型越小 - 训练数据越多 N 越大。注意:使用具有欠拟合问题的小型模型时要小心。