

我们不再更新 Amazon Machine Learning 服务，也不再接受新用户使用该服务。本文档可供现有用户使用，但我们不会再对其进行更新。有关更多信息，请参阅[什么是 Amazon Machine Learning](https://docs.aws.amazon.com/machine-learning/latest/dg/what-is-amazon-machine-learning.html)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 评估 ML 模型
<a name="evaluating_models"></a>

您应该始终*评估模型*，以确定该模型能够针对新数据和未来数据出色地预测目标。由于未来实例具有未知的目标值，您需要针对已知目标答案的数据检查 ML 模型的准确性指标，并将这项评估作为未来数据的预测准确性的代理。

要正确评估模型，您需要留存来自训练数据源并已用目标（基本实际情况）进行标记的数据示例。使用已用于训练的相同数据评估 ML 模型的预测准确性并没有用，因为它会奖励可以“记住”训练数据的模型，而不是通过它进行归纳。完成 ML 模型的训练之后，即可向模型发送已知目标值的留存观察。然后，您可以将 ML 模型返回的预测结果与已知目标值进行比较。最后，计算汇总指标，您可以通过该指标了解预测值和实际值的一致程度。

在 Amazon ML 中，您可以通过*创建评估*来评估 ML 模型。要为 ML 模型创建评估，您需要一个待评估的 ML 模型，还需要未用于训练的已标记数据。首先，创建一个用于评估的数据源，具体方法是使用留存数据创建 Amazon ML 数据源。评估所用数据必须与训练所用数据具有相同的架构，并且包含目标变量的实际值。

如果您的所有数据都位于单个文件或目录中，您可以使用 Amazon ML 控制台来拆分数据。“Create ML Model”向导的默认路径会拆分输入数据源，并将前 70% 的数据用于训练数据源，将剩余 30% 的数据用于评估数据源。您也可以使用“创建 ML 模型”向导中的**自定义**选项来自定义拆分比率，您可以在向导中选择 70% 的随机样本用于训练，剩余 30% 的数据用于评估。要进一步指定自定义拆分比率，请使用[创建数据源](https://docs.aws.amazon.com/machine-learning/latest/APIReference/API_CreateDataSourceFromS3.html) API 中的数据重新排列字符串。有了评估数据源和 ML 模型之后，就可以创建评估并审查评估的结果。

**Topics**
+ [ML 模型洞察](ml-model-insights.md)
+ [二进制模型洞察](binary-model-insights.md)
+ [多类别模型洞察](multiclass-model-insights.md)
+ [回归模型洞察](regression-model-insights.md)
+ [防止过度拟合](#overfitting)
+ [交叉验证](cross-validation.md)
+ [评估警报](evaluation-alerts.md)

## 防止过度拟合
<a name="overfitting"></a>

创建和训练 ML 模型时，目的是选择能够提供最佳预测的模型，这意味着要选择具有最佳设置（ML 模型设置或超级参数）的模型。在 Amazon Machine Learning 中，您可以设置四个超级参数：扫描次数、正则化、模型大小和随机类型。不过，如果您选择可为评估数据生成“最佳”预测性能的模型参数设置，您可能会过度拟合模型。当模型记住了在训练数据源和评估数据源中出现的模式，但未能在数据中归纳这些模式时，会出现过度拟合。这种情况通常在训练数据包含所有用于评估的数据时出现。过度拟合的模型在评估阶段表现很好，但无法对未见过的数据提供准确的预测。

为避免选择过度拟合模型作为最佳模型，您可以预留更多数据，以验证 ML 模型的性能。例如，您可以按照以下比例拆分数据：60% 的数据用于训练，20% 的数据用于评估，还有 20% 的数据用于验证。选择非常适合评估数据的模型参数之后，您可以使用验证数据再次进行评估，查看 ML 模型在运行验证数据时的表现。如果模型运行验证数据时的表现满足您的预期，就表示此模型没有过度拟合数据。

使用第三个数据集进行验证有助于您选择合适的 ML 模型参数来防止过度拟合。但是，将训练过程使用的数据预留用于评估和验证会减少可用于训练的数据。当数据集较小时，这个问题尤其明显，因为使用尽可能多的数据进行训练始终是最好的。要解决这个问题，您可以执行交叉验证。有关交叉验证的信息，请参阅[交叉验证](cross-validation.md)。