AI 入门 101
什么是过拟合?

什么是过拟合?
当你训练一个神经网络时,你必须避免过拟合。 过拟合 是机器学习和统计学中一个问题,即模型过于完美地学习了训练数据集的模式,完美地解释了训练数据集,但无法将其预测能力推广到其他数据集。
换句话说,在过拟合模型的情况下,它通常在训练数据集上显示出极高的准确率,但在未来收集和运行模型的数据上显示出低准确率。这是对过拟合的快速定义,但让我们更详细地了解过拟合的概念。让我们来看看过拟合是如何发生的以及如何避免它。
理解“拟合”和欠拟合
讨论过拟合时,了解欠拟合和“拟合”的概念是有帮助的。当我们训练一个模型时,我们试图开发一个能够预测数据集中项目的性质或类别的框架,基于描述这些项目的特征。一个模型应该能够解释数据集中的一个模式,并根据该模式预测未来数据点的类别。模型解释训练集特征之间的关系越好,我们的模型就越“拟合”。

蓝线代表了一个欠拟合模型的预测,而绿线代表了一个更好地拟合的模型。图片来源:Pep Roca via Wikimedia Commons,CC BY SA 3.0,(https://commons.wikimedia.org/wiki/File:Reg_ls_curvil%C3%ADnia.svg)
一个模型如果不能很好地解释训练数据特征之间的关系,并且因此无法准确地分类未来数据示例,则被认为是欠拟合训练数据。如果你将欠拟合模型的预测关系图与实际特征和标签的交点进行比较,预测将会偏离实际值。如果我们有一个带有实际值的图表,一个严重欠拟合的模型将会大大地偏离大多数数据点。一个更好地拟合的模型可能会穿过数据点的中心,个别数据点仅略微偏离预测值。
欠拟合通常发生在数据不足以创建一个准确的模型时,或者当尝试使用线性模型设计非线性数据时。更多的训练数据或更多的特征通常可以帮助减少欠拟合。
那么,为什么我们不创建一个能够完美地解释每个训练数据点的模型呢?难道完美的准确率不是理想的吗?创建一个过于完美地学习了训练数据的模型就是过拟合的原因。训练数据集和你将来运行模型的其他数据集不会完全相同。它们可能在很多方面非常相似,但也会在某些关键方面有所不同。因此,设计一个完美地解释训练数据集的模型意味着你最终会得到一个关于特征之间关系的理论,这个理论不能很好地推广到其他数据集。
理解过拟合
过拟合发生在模型过于完美地学习了训练数据集的细节时,导致模型在对外部数据进行预测时出现问题。这可能发生在模型不仅学习了数据集的特征,还学习了数据集中的随机波动或噪声时,模型会将这些随机或不重要的事件作为重要因素。
过拟合更容易发生在非线性模型中,因为它们在学习数据特征时更加灵活。非参数机器学习算法通常具有各种参数和技术,可以应用于限制模型对数据的敏感性,从而减少过拟合。例如,决策树模型对过拟合非常敏感,但可以使用一种称为剪枝的技术来随机删除模型学习到的某些细节。
如果你将模型在X和Y轴上的预测图出来,你将会得到一条来回波动的预测线,这反映了模型试图过于完美地拟合数据集中的所有点的事实。
控制过拟合
当我们训练一个模型时,我们理想地希望模型不犯任何错误。当模型的性能趋向于在所有训练数据点上做出正确的预测时,模型的拟合度就会变得更好。一个拟合度好的模型能够解释几乎所有的训练数据而不发生过拟合。
随着模型的训练,其性能会随着时间的推移而改善。模型的错误率会随着训练时间的推移而降低,但它只会降低到一定程度。模型的性能在测试集上开始再次上升的点通常是过拟合发生的点。为了获得模型的最佳拟合度,我们希望在训练集上的损失最低的点停止训练模型,在错误开始再次增加之前。最佳停止点可以通过绘制模型在训练时间上的性能图来确定,并在损失最低时停止训练。然而,使用这种方法控制过拟合的一个风险是,基于测试性能指定训练的终点意味着测试数据在某种程度上被包含在训练过程中,并且它失去了作为“未接触”数据的状态。
有几种方法可以用来对抗过拟合。减少过拟合的一种方法是使用重采样策略,它通过估计模型的准确率来运作。你也可以使用一个验证数据集,除了测试集,并将训练准确率与验证集而不是测试数据集进行比较。这可以保持测试数据集的“未接触”状态。一个流行的重采样方法是K折交叉验证。这种技术可以让你将数据分成子集,模型在这些子集上进行训练,然后分析模型在这些子集上的性能,以估计它在外部数据上的表现。
使用交叉验证是估计模型在未见数据上的准确率的最佳方法之一,当与验证数据集结合使用时,过拟合通常可以最小化。
