机器学习中什么是过度拟合?

已发表: 2024-10-15

过度拟合是训练机器学习 (ML) 模型时出现的常见问题。它可能会对模型超越训练数据的泛化能力产生负面影响,从而导致在现实场景中的预测不准确。在本文中,我们将探讨什么是过度拟合、它是如何发生的、其背后的常见原因以及检测和预防它的有效方法。

目录

  • 什么是过拟合?
  • 过拟合是如何发生的
  • 过拟合与欠拟合
  • 是什么导致过拟合?
  • 如何检测过度拟合
  • 如何避免过度拟合
  • 过度拟合的例子

使用 Grammarly 更智能地工作
任何有工作要做的人的人工智能写作伙伴

什么是过拟合?

过度拟合是指机器学习模型学习了训练数据中的潜在模式和噪声,从而变得对该特定数据集过于专业化。当模型应用于新的、未见过的数据时,过度关注训练数据的细节会导致性能不佳,因为它无法概括超出其训练数据的范围。

过度拟合是如何发生的?

当模型从训练数据中的特定细节和噪声中学习过多时,就会发生过度拟合,从而使其对对泛化没有意义的模式过于敏感。例如,考虑一个基于历史评估来预测员工绩效的模型。如果模型过度拟合,它可能会过多关注特定的、不可概括的细节,例如前任经理的独特评级风格或过去审核周期中的特定情况。该模型可能难以将其知识应用于新员工或制定评估标准,而不是学习有助于绩效的更广泛、有意义的因素(例如技能、经验或项目成果)。当模型应用于与训练集不同的数据时,这会导致预测不太准确。

过拟合与欠拟合

与过度拟合相反,当模型太简单而无法捕获数据中的潜在模式时,就会发生欠拟合。因此,它在训练和新数据上的表现都很差,无法做出准确的预测。

为了可视化欠拟合和过度拟合之间的差异,想象一下我们正在尝试根据一个人的压力水平来预测运动表现。我们可以绘制数据并显示尝试预测这种关系的三个模型:

三个并排图说明欠拟合、拟合良好的模型和过拟合

1欠拟合:在第一个示例中,模型使用直线进行预测,而实际数据则遵循曲线。该模型过于简单,无法捕捉压力水平和运动表现之间关系的复杂性。因此,即使对于训练数据,预测也大多不准确。这是欠拟合的。

2最佳拟合:第二个示例显示了达到适当平衡的模型。它捕获了数据的潜在趋势,但又不会使其过于复杂。该模型可以很好地推广到新数据,因为它不会尝试适应训练数据中的每个微小变化,而只是适应核心模式。

3过度拟合:在最后一个示例中,模型使用高度复杂的波浪曲线来拟合训练数据。虽然这条曲线对于训练数据非常准确,但它也捕获了不代表实际关系的随机噪声和异常值。该模型过度拟合,因为它对训练数据进行了如此精细的调整,以至于可能对新的、未见过的数据做出糟糕的预测。

过度拟合的常见原因

现在我们知道什么是过度拟合以及为什么会发生过度拟合,让我们更详细地探讨一些常见原因:

  • 训练数据不足
  • 不准确、错误或不相关的数据
  • 大重量
  • 过度训练
  • 模型架构过于复杂

训练数据不足

如果您的训练数据集太小,它可能只代表模型在现实世界中会遇到的一些场景。在训练过程中,模型可以很好地拟合数据。但是,一旦您在其他数据上进行测试,您可能会发现明显的不准确之处。小数据集限制了模型泛化到未见过的情况的能力,使其容易过度拟合。

不准确、错误或不相关的数据

即使您的训练数据集很大,它也可能包含错误。这些错误可能由多种来源引起,例如参与者在调查中提供虚假信息或错误的传感器读数。如果模型试图从这些不准确性中学习,它将适应不反映真实潜在关系的模式,从而导致过度拟合。

大重量

在机器学习模型中,权重是表示在进行预测时分配给数据中特定特征的重要性的数值。当权重变得不成比例地大时,模型可能会过度拟合,对某些特征(包括数据中的噪声)变得过于敏感。发生这种情况是因为模型过于依赖特定特征,这损害了其泛化到新数据的能力。

过度训练

在训练过程中,算法分批处理数据,计算每批的误差,并调整模型的权重以提高其准确性。

尽可能长时间地继续训练是个好主意吗?并不真地!对相同数据的长时间训练可能会导致模型记住特定的数据点,限制其泛化到新的或未见过的数据的能力,这就是过度拟合的本质。这种类型的过度拟合可以通过使用提前停止技术或在训练期间监控模型在验证集上的性能来缓解。我们将在本文后面讨论其工作原理。

模型架构过于复杂

机器学习模型的架构是指其层和神经元的结构以及它们如何交互以处理信息。

更复杂的架构可以捕获训练数据中的详细模式。然而,这种复杂性增加了过度拟合的可能性,因为模型还可能学习捕获噪声或不相关的细节,这些细节无助于对新数据的准确预测。简化架构或使用正则化技术可以帮助降低过度拟合的风险。

如何检测过度拟合

检测过度拟合可能很棘手,因为即使发生了过度拟合,训练期间一切似乎都进展顺利。即使在过度拟合的情况下,损失(或错误)率(衡量模型错误频率的指标)也将继续下降。那么,我们如何知道是否发生了过拟合呢?我们需要一个可靠的测试。

一种有效的方法是使用学习曲线,这是一种跟踪称为损失的度量的图表。损失代表模型所犯错误的大小。然而,我们不仅仅跟踪训练数据的损失;还跟踪训练数据的损失。我们还测量看不见的数据(称为验证数据)的损失。这就是为什么学习曲线通常有两条线:训练损失和验证损失。

如果训练损失继续按预期减少,但验证损失增加,则表明过度拟合。换句话说,该模型对于训练数据变得过于专业化,并且难以推广到新的、看不见的数据。学习曲线可能看起来像这样:

替代文本:图表显示训练损失减少和验证损失增加,表明模型过度拟合

在这种情况下,虽然模型在训练过程中有所改进,但它在未见过的数据上表现不佳。这可能意味着发生了过度拟合。

如何避免过度拟合

可以使用多种技术来解决过度拟合问题。以下是一些最常见的方法:

缩小模型尺寸

大多数模型架构允许您通过更改层数、层大小和其他称为超参数的参数来调整权重数量。如果模型的复杂性导致过度拟合,减小模型的大小会有所帮助。通过减少层数或神经元数量来简化模型可以降低过度拟合的风险,因为模型记住训练数据的机会会减少。

正则化模型

正则化涉及修改模型以阻止大权重。一种方法是调整损失函数,使其测量误差并包含权重的大小。

通过正则化,训练算法可以最大限度地减少误差和权重的大小,从而降低大权重的可能性,除非它们为模型提供了明显的优势。这有助于通过保持模型更加通用来防止过度拟合。

添加更多训练数据

增加训练数据集的大小也有助于防止过度拟合。数据越多,模型就不太可能受到数据集中的噪声或不准确的影响。让模型接触更多不同的示例将使其不太倾向于记住单个数据点,而是学习更广泛的模式。

应用降维

有时,数据可能包含相关特征(或维度),这意味着多个特征以某种方式相关。机器学习模型将维度视为独立的,因此如果特征相关,则模型可能会过于关注它们,从而导致过度拟合。

主成分分析 (PCA) 等统计技术可以减少这些相关性。 PCA 通过减少维数和消除相关性来简化数据,从而降低过度拟合的可能性。通过关注最相关的特征,模型能够更好地泛化到新数据。

过度拟合的实际例子

为了更好地理解过度拟合,让我们探讨不同领域的一些实际示例,在这些示例中过度拟合可能会导致误导性结果。

图像分类

图像分类器旨在识别图像中的对象,例如,图片中是否包含鸟或狗。

其他细节可能与您试图在这些图片中检测到的内容相关。例如,狗照片的背景可能经常有草,而鸟类照片的背景可能经常有天空或树梢。

如果所有训练图像都具有这些一致的背景细节,机器学习模型可能会开始依赖背景来识别动物,而不是关注动物本身的实际特征。因此,当要求模型对栖息在草坪上的鸟的图像进行分类时,它可能会错误地将其分类为狗,因为它与背景信息过度拟合。这是对训练数据过度拟合的情况。

财务建模

假设您在业余时间交易股票,并且您认为可以根据 Google 搜索某些关键字的趋势来预测价格走势。您使用数千个单词的 Google 趋势数据建立了机器学习模型。

由于单词太多,有些单词可能纯粹是偶然地与您的股票价格显示出相关性。该模型可能会过度拟合这些巧合的相关性,从而对未来数据做出糟糕的预测,因为这些词不是股票价格的相关预测因子。

在构建金融应用模型时,了解数据关系的理论基础非常重要。在没有仔细选择特征的情况下将大型数据集输入模型可能会增加过度拟合的风险,特别是当模型识别出训练数据中纯粹偶然存在的虚假相关性时。

体育迷信

尽管与机器学习并不严格相关,但体育迷信可以说明过度拟合的概念,特别是当结果与逻辑上与结果无关的数据相关联时。

在 2008 年欧洲足球锦标赛和 2010 年 FIFA 世界杯期间,一只名叫保罗的章鱼被用来预测德国队的比赛结果。 2008 年,保罗的 6 个预测中有 4 个是正确的,2010 年则有 7 个预测全部正确。

如果您只考虑保罗过去预测的“训练数据”,那么与保罗选择一致的模型似乎可以很好地预测结果。然而,这个模型不能很好地推广到未来的比赛,因为章鱼的选择是比赛结果的不可靠预测因素。