在 Model Builder 中训练和评估模型

已完成

本单元将介绍如何在 Model Builder 中训练和评估机器学习模型。

在训练过程中,Model Builder 会将算法应用于数据。 通过使用特定场景的评估指标,可以衡量模型的性能。

在 Model Builder 中训练

选择了场景和训练环境,并加载数据后,现在可以开始训练模型了。 训练包含将所选场景的算法应用于数据集,以便找到最佳模型。 接下来将在评估步骤中介绍“最佳”的含义。

在大多数情况下,若要在 Model Builder 中训练机器学习模型,仅需提供要用于训练的时间。

训练时长应为多长时间?

较长的训练周期让 Model Builder 能够使用更广泛的设置来探索更多模型。

下表总结了在本地计算机上使用 CPU 时一组示例数据集获得良好性能所需的平均时间:

数据集大小 训练的平均时间
0 MB 到 10 MB 10 秒
10 MB 到 100 MB 10 分钟
100 MB 到 500 MB 30 分钟
500 MB 到 1 GB 60 分钟
1 GB 以上 3 小时以上

这些数字仅用于指南。 训练的确切时长取决于:

  • 用作模型输入的特征(列)的数量。
  • 列类型。
  • 机器学习任务。
  • 用于训练的计算机的 CPU、GPU、磁盘和内存性能。

提示

使用的数据集应超过 100 行。 如果小于该行数,则可能不会生成任何结果。

Model Builder 如何找出最佳模型?

你可能听说过机器学习涉及复杂的数学。 那么,如果你只提供了一种场景、一个数据集,以及需要 Model Builder 用于训练的时间,Model Builder 可如何训练机器学习模型呢?

Model Builder 使用自动化机器学习 (AutoML) 来识别一组转换,以准备用于训练的数据、选择算法并优化算法的设置(也称为超参数)。 通过使用特定于所选机器学习任务的评估指标,Model Builder 可确定哪种模型在使用你的数据时会实现最佳性能。

训练和使用代码

完成模型训练后,Model Builder 会生成以下文件并将其添加到项目。 这些文件嵌套在 .mbconfig 文件下。

  • <MODEL-NAME>.zip:机器学习模型的项目。 此文件包含模型的序列化版本。
  • <MODEL-NAME>.training.cs:此文件包含模型训练管道。 模型训练管道包含用于训练机器学习模型的数据转换和算法。 有关详细信息,请参阅数据转换以及如何选择 ML.NET 算法
  • <MODEL-NAME>.consumption.cs:此文件包含定义模型输入和输出架构的类。 它还包含 Predict 方法,该方法使用模型创建 PredictionEngine API 并进行预测。 PredictionEngine 是一个便捷 API,便于对单个数据实例执行预测。

评估模型

现在,你已找到适用于数据的最佳模型,不妨测试其预测效果。 评估模型性能的一种方式是使用指标。

评估指标特定于模型所执行的机器学习任务的类型。 对于每项任务,可查看各种指标来确定模型的性能。

此表显示了 Model Builder 用于根据方案选择最佳模型的评估指标:

场景 评估指标 期望
数据分类 二元(准确度)/多类 (MicroAccuracy) 越接近 1.00 越好
值预测 R 平方值 越接近 1.00 越好
图像分类 精确度 越接近 1.00 越好
建议 R 平方值 越接近 1.00 越好
对象检测 精确度 越接近 1.00 越好

有关 ML.NET 评估指标的详细信息,请参阅模型评估指标

选择具有最高指标的模型

你的模型已达到理想评估指标。 这是否意味着你拥有了理想的模型? 不完全是。 事实上,如果最终得到的是评估指标指定的“理想”模型,你应持怀疑态度。

在机器学习中,有一个称为“过度拟合”的概念,你应注意这一点。 过度拟合是指模型在学习训练数据集中的模式时过于优秀。 在你尝试将模型用于新数据时,模型无法提供准确的结果。

以下场景可帮助说明过度拟合。 假设你正在为考试复习。 你通过某种方式已提前掌握了考试的问题和答案。 在为考试复习时,你侧重于记住问题的答案。 挡你参加考试并收到成绩后,你将发现得了高分。 高分可能表明你很了解题目。 但是,如果向你提出一个没有直接在考试中出现的题目,你可能会答错,因为你不了解这个题目,只是背过答案。 过度拟合的工作方式类似。

改进你的模型

如果对模型的评估指标不满意,可以尝试以下方法来改进模型:

  • 提供更多具有代表性的数据观察:经验是最好的老师。 这一概念同样适用于机器学习。 你可以提供的数据观察越多,模型可以识别的模式集就越广泛。
  • 提供更多上下文:添加为数据增添上下文的列有助于模型识别模式。 例如,假设你尝试预测房价,唯一的数据点是房间数。 通过这一点可能无法获取太多信息。 但是,如果你知道房屋位于主城区以外的郊区,家庭平均收入为 80,000 美元,学校排在前 20%,该怎么办? 现在你有了更多信息,有助于为模型的决策提供依据。
  • 使用有意义的数据和特征:虽然更多的数据示例和特征可以帮助提高模型的准确性,但也可能带来干扰,因为并非所有数据和特征都有意义。 务必要了解哪些特征对算法的决策影响最大。
  • 浏览更多算法:为 Model Builder 提供更多的时间,使其能够探索更多算法和超参数,这可能有助于改进模型。

下一单元将介绍如何使用 Model Builder 来训练机器学习模型。