# 为什么机器学习算法会处理以前从未见过的数据？

> 原文： [https://machinelearningmastery.com/what-is-generalization-in-machine-learning/](https://machinelearningmastery.com/what-is-generalization-in-machine-learning/)

机器学习的超级大国是概括。

我最近得到了一个问题：

> “机器学习模型如何能够准确预测以前从未见过的数据？”

答案是概括，这是我们在将机器学习应用于具有挑战性的问题时所寻求的能力。

在这篇文章中，您将发现泛化，机器学习的超级大国

阅读这篇文章后，你会知道：

*   机器学习算法都试图学习从输入到输出的映射。
*   更简单熟练的机器学习模型更容易理解，更强大。
*   机器学习只适用于问题需要概括的情况。

让我们开始吧。

![Why Do Machine Learning Algorithms Work on Data They Have Not Seen?](img/a0a13e414d94b316c6f5bf963f6b008e.jpg)

为什么机器学习算法会处理他们没有看到的数据？
照 [gnuckx](https://www.flickr.com/photos/gnuckx/4836339101/) ，保留一些权利。

## 机器学习算法有什么作用？

当我们适合机器学习算法时，我们需要一个训练数据集。

该训练数据集包括一组输入模式和相应的输出模式。机器学习算法的目标是学习从输入模式到输出模式的映射的合理近似。

以下是一些具体的例子：

*   从电子邮件映射到垃圾邮件分类是否为垃圾邮件。
*   房屋销售价格回归从房屋细节到房屋销售价格的映射。
*   从照片到文本的映射来描述照片标题生成中的照片。

这份名单可以继续使用。

我们可以总结这种映射，即机器学习算法学习作为函数（f）预测给定输入（X）的输出（y），或重述：

```
y = f(X)
```

我们在拟合机器学习算法时的目标是为我们的目的获得最好的 f（）。

我们正在训练模型，以便在我们没有输出的情况下输入预测。输出未知的地方。这要求算法一般地学习如何从域中进行观察并做出预测，而不仅仅是训练数据的细节。

这称为泛化。

## 泛化很难，但很强大

机器学习算法必须从训练数据推广到域中所有看不见的观察的整个域，以便在使用模型时可以做出准确的预测。

这真的很难。

这种泛化方法要求我们用于训练模型（X）的数据是我们希望算法学习的映射中的观察的良好且可靠的样本。质量越高，代表性越高，模型越容易学习从输入到输出的未知和潜在的“真实”映射。

概括意味着从特定的东西到广泛的东西。

这是人类学习的方式。

*   当我们学会驾驶时，我们不会记住特定的道路;我们学会驾驶，以便我们可以在任何道路或条件下驾驶。
*   在学习编码时，我们不会记住特定的计算机程序;我们将学习解决问题的一般方法，以解决可能出现的任何商业案例。
*   我们不记忆自然语言中的特定词序;我们学习单词的一般含义，并根据需要将它们组合在一起。

The list could go on.

机器学习算法是从历史观察中自动推广的过程。他们可以推广比人类更多的数据，比人类可以考虑的更快。

这些自动化通用机器的运行速度和规模是机器学习领域令人兴奋的。

## 我们更喜欢更简单的模型

机器学习模型是称为机器学习算法的自动化泛化过程的结果。

该模型可以说是从训练输入到训练输出的映射的概括。

可能有很多方法将输入映射到特定问题的输出，我们可以通过测试不同的算法，不同的算法配置，不同的训练数据等来导航这些方式。

我们无法预先知道哪种方法会产生最熟练的模型，因此我们必须测试一套方法，配置和问题框架，以便在选择最终模型之前发现哪些方法有效以及学习的限制是什么使用。

模型在做出预测时的技能决定了概括的质量，并可以在模型选择过程中作为指导。

在数以百万计的可能映射中，我们更喜欢比复杂映射更简单的映射。换句话说，我们更喜欢解释数据的最简单的假设。这是选择模型的一种方式，来自[奥卡姆剃刀](https://en.wikipedia.org/wiki/Occam%27s_razor)。

更简单的模型通常（但并不总是）更容易理解和维护，并且更加健壮。在实践中，您可能希望选择表现最佳的最简单模型。

## 机器学习并非适用于所有问题

通过泛化自动学习的能力是强大的，但不适合所有问题。

*   有些问题需要精确的解决方案，例如银行账户余额的算术。
*   一些问题可以通过泛化来解决，但是存在更简单的解决方案，例如计算正数的平方根。
*   有些问题看起来可以通过泛化来解决，但是没有结构化的底层关系可以从数据中推广，或者这样的函数太复杂，例如预测安全价格。

有效使用机器学习的关键是学习它能够和不能（或不应该）使用的地方。

有时这很明显，但往往不是。同样，您必须使用经验和实验来帮助弄清楚问题是否适合通过泛化来解决。

## 进一步阅读

如果您希望深入了解，本节将提供有关该主题的更多资源。

*   [机器学习算法的工作原理](https://machinelearningmastery.com/how-machine-learning-algorithms-work/)
*   [什么是机器学习？](https://machinelearningmastery.com/what-is-machine-learning/)
*   [维基百科上的泛化（学习）](https://en.wikipedia.org/wiki/Generalization_(learning))
*   [Ockham 在维基百科上的剃刀](https://en.wikipedia.org/wiki/Occam%27s_razor)

## 摘要

在这篇文章中，您发现了泛化，这是构成所有受监督机器学习算法的关键功能。

具体来说，你学到了：

*   机器学习算法都试图学习从输入到输出的映射。
*   更简单熟练的机器学习模型更容易理解，更强大。
*   机器学习只适用于问题需要概括的情况。

你有任何问题吗？
在下面的评论中提出您的问题，我会尽力回答。