机器学习中的过拟合

2025年6月8日 | 阅读 6 分钟

在现实世界中,存在的数据集永远不会是干净完美的。这意味着每个数据集都包含杂质、噪声数据、异常值、缺失数据或不平衡数据。由于这些杂质,会出现各种问题,影响模型的准确性和性能。机器学习中的过拟合就是其中一个问题。过拟合是模型可能表现出的一种问题。

如果统计模型无法很好地泛化到未见过的数据,则称该模型已过拟合。

在理解过拟合之前,我们需要了解一些基本术语,它们是:

噪声:噪声是数据集中存在的无意义或无关数据。如果不删除,它会影响模型的性能。

偏差:偏差是由于过度简化机器学习算法而在模型中引入的预测误差。或者它是预测值与实际值之间的差异。

方差:如果机器学习模型在训练数据集上表现良好,但在测试数据集上表现不佳,则会出现方差。

泛化:它显示了模型在预测未见过的数据方面的训练效果。

什么是过拟合?

Overfitting in Machine Learning
  • 过拟合和欠拟合是机器学习模型中的两个主要错误/问题,它们会导致机器学习性能不佳。
  • 当模型拟合了比需要更多的数据时,就会发生过拟合,它会试图捕捉输入给它的每一个数据点。因此,它开始捕捉数据集中的噪声和不准确数据,从而降低了模型的性能。
  • 过拟合的模型在测试/未见过的数据集上无法准确运行,也无法很好地泛化。
  • 过拟合模型被认为具有低偏差和高方差。

理解过拟合的例子

我们可以用一个普遍的例子来理解过拟合。假设有三名学生 X、Y 和 Z,他们都在为考试做准备。X 只学习了书本的三个章节,而忽略了其他所有章节。Y 的记忆力很好,因此记住了整本书。第三名学生 Z 学习并练习了所有问题。因此,在考试中,只有当考试问题与第三章相关时,X 才能解决这些问题。只有当问题与书本上的完全相同时,学生 Y 才能解决问题。学生 Z 将能够以正确的方式解决所有考试问题。

机器学习也是如此;如果算法从一小部分数据中学习,它就无法捕捉到所需的数据点,因此会欠拟合。

假设模型像 Y 学生一样学习训练数据集。它们在已见过的数据集上表现非常好,但在未见过的数据或未知实例上表现不佳。在这种情况下,模型被认为过拟合。

如果模型像 Z 学生一样,在训练数据集和测试/未见过的数据集上都表现良好,则认为它是拟合良好的。

如何检测过拟合?

模型的过拟合只能在你测试数据后才能检测到。为了检测这个问题,我们可以执行训练/测试分割

在数据集的训练-测试分割中,我们可以将数据集划分为随机的测试和训练数据集。我们使用大约占总数据集 80% 的训练数据集来训练模型。训练模型后,我们使用占总数据集 20% 的测试数据集进行测试。

Overfitting in Machine Learning

现在,如果模型在训练数据集上表现良好,但在测试数据集上表现不佳,则它很可能存在过拟合问题。

例如,如果模型在训练数据上显示 85% 的准确率,在测试数据集上显示 50% 的准确率,这意味着模型性能不佳。

Overfitting in Machine Learning

防止过拟合的方法

尽管过拟合是机器学习中会降低模型性能的错误,但我们可以通过多种方式来防止它。使用线性模型可以避免过拟合;然而,许多现实世界的问题是非线性的。重要的是要防止模型过拟合。以下是可用于防止过拟合的几种方法:

  1. 提前停止
  2. 用更多数据训练
  3. 特征选择
  4. 交叉验证
  5. 数据增强
  6. 正则化

提前停止

在此技术中,在模型开始学习模型中的噪声之前,训练会暂停。在此过程中,在迭代训练模型时,在每次迭代后测量模型的性能。继续进行一定数量的迭代,直到新的迭代提高模型的性能。

在此之后,模型开始过拟合训练数据;因此,我们需要在学习器通过该点之前停止该过程。

在模型开始从数据中捕捉噪声之前停止训练过程称为早停

Overfitting in Machine Learning

然而,如果过早暂停训练,此技术可能导致欠拟合问题。因此,找到欠拟合和过拟合之间的“最佳点”非常重要。

用更多数据训练

增加训练集并包含更多数据可以提高模型的准确性,因为它提供了更多发现输入和输出变量之间关系的机会。

它可能并不总是能防止过拟合,但这种方式有助于算法更好地检测信号以减少错误。

当模型被馈入更多训练数据时,它将无法过拟合所有数据样本,并被迫进行良好的泛化。

但在某些情况下,额外的数据可能会给模型增加更多噪声;因此,在将数据输入模型之前,我们需要确保数据是干净且没有不一致之处。

特征选择

在构建 ML 模型时,我们有许多用于预测结果的参数或特征。然而,有时其中一些特征对于预测是冗余的或不太重要的,因此应用了特征选择过程。在特征选择过程中,我们识别训练数据中最重要的特征,并移除其他特征。此外,此过程有助于简化模型并减少数据中的噪声。某些算法具有自动特征选择功能,如果没有,我们可以手动执行此过程。

交叉验证

交叉验证是防止过拟合的强大技术之一。

在一般的 k 折交叉验证技术中,我们将数据集分成 k 个大小相等的子集;这些子集称为折。

数据增强

数据增强是一种数据分析技术,它是通过添加更多数据来防止过拟合的替代方法。在此技术中,不是添加更多训练数据,而是将现有数据的稍作修改的副本添加到数据集中。

数据增强技术使得数据样本在每次被模型处理时都可以呈现出稍微不同的外观。因此,每个数据集在模型看来都是唯一的,并防止过拟合。

正则化

如果当模型过于复杂时发生过拟合,我们可以减少特征的数量。然而,即使是更简单的模型,特别是线性模型,也可能发生过拟合,而在这种情况下,正则化技术会更有帮助。

正则化是防止过拟合最流行的技术。它是一组迫使学习算法简化模型的方法。应用正则化技术可能会略微增加偏差,但会略微降低方差。在此技术中,我们通过添加惩罚项来修改目标函数,该惩罚项对于更复杂的模型具有更高的值。

最常用的两种正则化技术是 L1 正则化和 L2 正则化。

集成方法

在集成方法中,来自不同机器学习模型的预测被组合起来以识别最受欢迎的结果。

最常用的集成方法是Bagging 和 Boosting

在 Bagging 中,单个数据点可以被选择多次。收集了几个样本数据集后,这些模型会独立训练,并且根据任务类型(即回归或分类),使用这些预测的平均值来预测更准确的结果。此外,Bagging 降低了复杂模型过拟合的风险。

在 Boosting 中,大量弱学习器按顺序排列,以使序列中的每个学习器都能从前一个学习器的错误中学习。它将所有弱学习器组合起来,形成一个强学习器。此外,它提高了简单模型的预测灵活性。