# 机器学习算法的过拟合和欠拟合

> 原文： [https://machinelearningmastery.com/overfitting-and-underfitting-with-machine-learning-algorithms/](https://machinelearningmastery.com/overfitting-and-underfitting-with-machine-learning-algorithms/)

机器学习中表现不佳的原因是过拟合或数据不合适。

在这篇文章中，您将发现机器学习中的泛化概念以及随之而来的过拟合和欠拟合的问题。

让我们开始吧。

![Overfitting and Underfitting With Machine Learning Algorithms](img/43775ef011665c4c6739d4399389477a.jpg)

使用机器学习算法进行过拟合和欠拟合
[Ian Carroll](https://www.flickr.com/photos/iancarroll/5058330466/) 的照片，保留一些权利。

## 近似于机器学习中的目标函数

有监督的机器学习最好被理解为近似将输入变量（X）映射到输出变量（Y）的目标函数（f）。

Y = f（X）

该表征描述了分类和预测问题的范围以及可用于解决它们的机器算法。

从训练数据中学习目标函数的一个重要考虑因素是模型对新数据的概括性。泛化很重要，因为我们收集的数据只是一个样本，它是不完整和嘈杂的。

## 获取免费算法思维导图

![Machine Learning Algorithms Mind Map](img/2ce1275c2a1cac30a9f4eea6edd42d61.jpg)

方便的机器学习算法思维导图的样本。

我已经创建了一个由类型组织的60多种算法的方便思维导图。

下载，打印并使用它。

## 机器学习的泛化

在机器学习中，我们描述了从训练数据到归纳学习的目标函数的学习。

归纳是指从特定的例子中学习一般概念，这正是监督机器学习问题旨在解决的问题。这与其他方式的演绎不同，并试图从一般规则中学习具体的概念。

泛化指的是机器学习模型学习的概念在学习时对模型没有看到的具体例子的适用程度。

良好的机器学习模型的目标是从训练数据到问题域的任何数据很好地概括。这使我们可以在未来对模型从未见过的数据做出预测。

当我们谈论机器学习模型如何学习和推广到新数据时，机器学习中使用了一个术语，即过拟合和欠拟合。

过拟合和欠拟合是导致机器学习算法表现不佳的两个主要原因。

## 统计拟合

在统计中，拟合指的是您对目标函数的近似程度。

这是用于机器学习的好术语，因为有监督的机器学习算法试图在给定输入变量的情况下逼近输出变量的未知底层映射函数。

统计量通常描述拟合优度，其指的是用于估计函数的近似与目标函数的匹配程度的度量。

这些方法中的一些在机器学习中是有用的（例如，计算残差），但是这些技术中的一些假设我们知道我们正在近似的目标函数的形式，这在机器学习中不是这种情况。

如果我们知道目标函数的形式，我们将直接使用它来做出预测，而不是试图从嘈杂的训练数据样本中学习近似值。

## 机器学习中的过拟合

过拟合是指对训练数据进行过模拟的模型。

当模型学习训练数据中的细节和噪声时，会发生过拟合，从而对模型在新数据上的表现产生负面影响。这意味着训练数据中的噪声或随机波动被模型拾取并作为概念学习。问题是这些概念不适用于新数据，并对模型概括的能力产生负面影响。

对于非参数和非线性模型，在学习目标函数时具有更大灵活性的过拟合更有可能。因此，许多非参数机器学习算法还包括限制和约束模型学习细节的参数或技术。

例如，决策树是非参数机器学习算法，其非常灵活并且受到过拟合训练数据的影响。这个问题可以通过在学习树之后修剪树来解决，以便删除它已经拾取的一些细节。

## 机器学习中的不合适

欠拟合指的是既不能对训练数据建模也不能推广到新数据的模型。

欠适应机器学习模型不是合适的模型，并且将是显而易见的，因为它将在训练数据上具有差的表现。

通常不讨论欠配合，因为在给定良好的表现指标的情况下容易检测。补救措施是继续前进并尝试其他机器学习算法。然而，它确实提供了与过拟合问题的良好对比。

## 适合机器学习

理想情况下，您希望在欠拟合和过拟合之间的最佳位置选择模型。

这是目标，但在实践中很难做到。

为了理解这个目标，我们可以在学习训练数据时随时查看机器学习算法的表现。我们可以绘制训练数据的技能和我们从训练过程中阻止的测试数据集的技能。

随着时间的推移，当算法学习时，训练数据上模型的误差会下降，测试数据集上的误差也会下降。如果我们训练时间过长，训练数据集的表现可能会继续下降，因为模型过拟合并且在训练数据集中学习不相关的细节和噪声。同时，随着模型的推广能力降低，测试集的误差再次开始上升。

最佳点是在测试数据集上的错误开始增加之前的点，其中模型在训练数据集和看不见的测试数据集上具有良好的技能。

您可以使用自己喜欢的机器学习算法执行此实验。这在实践中通常不是有用的技术，因为通过使用测试数据集上的技能选择训练的停止点，这意味着测试集不再是“看不见的”或独立的客观测量。关于该数据的一些知识（许多有用的知识）已经泄漏到训练过程中。

您可以使用另外两种技术来帮助在实践中找到最佳点：重采样方法和验证数据集。

## 如何限制过拟合

过拟合和欠配合都会导致模型表现不佳。但到目前为止，应用机器学习中最常见的问题是过拟合。

过拟合是一个问题，因为机器学习算法对训练数据的评估不同于我们最关心的评估，即算法对看不见的数据的执行情况。

在评估机器学习算法以限制过拟合时，您可以使用两种重要技术：

1.  使用重采样技术来估计模型准确率。
2.  阻止验证数据集。

最流行的重采样技术是k折交叉验证。它允许您在不同的训练数据子集上训练和测试模型k次，并建立机器学习模型在看不见的数据上的表现估计。

验证数据集只是训练数据的一个子集，您可以从机器学习算法中保留，直到项目结束。在训练数据集上选择并调整机器学习算法后，您可以评估验证数据集上的学习模型，以最终客观地了解模型对未见数据的执行情况。

使用交叉验证是应用机器学习的黄金标准，用于估计未见数据的模型准确率。如果您有数据，使用验证数据集也是一种很好的做法。

## 进一步阅读

如果您希望了解有关机器学习中的泛化，过拟合和欠拟合的更多信息，本节列出了一些推荐的资源。

*   维基百科上的[泛化](https://en.wikipedia.org/wiki/Generalization)
*   [在维基百科上过拟合](https://en.wikipedia.org/wiki/Overfitting)
*   维基百科上的[归纳推理](https://en.wikipedia.org/wiki/Inductive_reasoning)
*   [维基百科上的归纳问题](https://en.wikipedia.org/wiki/Problem_of_induction)
*   维基百科上的[适合度](https://en.wikipedia.org/wiki/Goodness_of_fit)
*   [过拟合的直观解释是什么？ Quora上的](https://www.quora.com/What-is-an-intuitive-explanation-of-overfitting)

## 摘要

在这篇文章中，您发现机器学习是通过归纳法解决问题。

您了解到，泛化是对模型学习的概念应用于新数据的程度的描述。最后，您了解了过拟合和欠拟合的机器学习中泛化的术语：

*   **过拟合**：训练数据表现良好，对其他数据的遗传性较差。
*   **欠拟合**：训练数据表现不佳，对其他数据的概括性差

您对过拟合，不合适或这篇文章有任何疑问吗？发表评论并提出您的问题，我会尽力回答。