文章

提高模型准确性

使用各项指标来调节机器学习模型的性能。

概览

要评估和改善模型,首先应观察它在不同数据集中的表现情况。根据来自每个数据集的指标,可以判断出哪些更改对模型准确性的影响最大。

只通过单一指标无法全面了解模型的表现。要改善你的模型,必须比较训练、验证和测试数据集的指标 (MLClassifierMetrics (英文)MLRegressorMetrics (英文),具体取决于你的模型类型)。例如,“创建图像分类器模型”一文中探讨的准确性是根据每个数据集的 classificationError (英文) 指标而得出的。

在创建模型并加载测试数据后,还可通过编程方式访问这些值:

print("Training Metrics\n", model.trainingMetrics)
print("Validation Metrics\n", model.validationMetrics)

let evaluationMetrics = model.evaluation(on: testData)
print("Evaluation Metrics\n", evaluationMetrics)

在这种情形中,你会看到几个不同指标的输出,包括适用于分类器的 classificationError (英文)precisionRecall (英文)confusion (英文),以及适用于回归元的 maximumError (英文)rootMeanSquaredError (英文)。根据每个数据集的返回值来决定模型在哪些地方需要改进。

提高模型的训练准确性

如果模型的训练准确性偏低,则表示当前模型配置无法捕捉数据的复杂细节。

尝试调整训练参数。在处理图像数据时,可以将 MLImageClassifierBuilder Playground UI 中的最大迭代数 (默认值为 10) 翻倍。

此截屏显示了 MLImageClassifierBuilder Playground UI 中最大迭代数设置至 20。

对于自然语言数据,可以尝试另一种底层算法 (请参阅 MLTextClassifier.ModelAlgorithmType (英文))。对于更常规的任务,可以使用 MLClassifier (英文) (请参阅“支持的分类器类型”(英文)) 或 MLRegressor (英文) (请参阅“支持的回归元类型”(英文)) 所确定类型之外的底层模型。

提高模型的验证准确性

如果使用验证集得出的模型准确性较低,或每次训练模型时准确性高低起伏不定,则需要更多数据。你可以利用已收集的示例生成更多输入数据,这种方法称为“数据增强”。对于图像数据,你可以结合使用裁剪、旋转、模糊和曝光调整等操作,用一张图像制作多个示例。

这张图显示了如何通过裁剪、旋转、模糊和曝光调整将一张大象图像制作成多张图像。

也有可能虽然你有大量数据,但验证准确性仍远远低于训练准确性。在这种情况下,则表示模型“过拟合”,也就是说模型从训练集中学习到过多具体细节,但这些细节通常不适用于其他示例。在这种情况下,你需要减少训练迭代的数量,防止模型从训练数据中学习到过多内容。

提高模型的评估准确性

如果使用测试数据得出的模型准确性低于训练或验证准确性,通常表示训练模型所用的数据类别和用于评估的测试数据类别有明显的差异。

例如,假设你使用多张室内猫咪图像来训练 MLImageClassifier (英文),但却仅使用室外猫咪图像来测试。由于光线、曝光和背景存在差异,因此测试数据不太可能会得出较好的结果。有些图像差异似乎对人类而言十分明显,但模型若没有获得充分的训练数据,就无法解析这些差异。

为纠正这种情况,请在训练集中提供更多样化的数据。一般而言,示例越多,表现越佳,但向模型展示与测试数据一样多样化的示例也同样很重要。

另请参阅

模型准确性