# 如何知道您的机器学习模型是否具有良好的表现

> 原文： [https://machinelearningmastery.com/how-to-know-if-your-machine-learning-model-has-good-performance/](https://machinelearningmastery.com/how-to-know-if-your-machine-learning-model-has-good-performance/)

在为预测性建模问题开发机器学习模型之后，您如何知道模型的表现是否良好？

这是初学者提出的一个常见问题。

作为初学者，您经常寻求这个问题的答案，例如：你希望有人告诉你`x`％的准确度或`x`的错误分数是否良好。

在这篇文章中，您将发现如何为自己明确回答这个问题，并了解您的模型技能是否良好。

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

*   可以使用基线模型来发现您的问题的表现基础，通过该基础模型可以评估所有其他模型。
*   鉴于数据和算法的随机性，所有预测模型都包含错误，并且在实践中不可能得到满分。
*   应用机器学习的真正工作是探索可能模型的空间，并发现相对于特定数据集的基线，良好的模型分数是什么样的。

让我们开始吧。

![How To Know if Your Machine Learning Model Has Good Performance](img/fce679779921d9c17fdfb72087ac2a38.jpg)

如何知道您的机器学习模型是否具有良好的表现
照片来自 [dr_tr](https://www.flickr.com/photos/dr_tr/5418520924/) ，保留一些权利。

## 概观

这篇文章分为4部分;他们是：

1.  模范技巧是相对的
2.  基线模型技巧
3.  什么是最好的分数？
4.  发现模型技能的极限

## 模范技巧是相对的

您的预测性建模问题是独一无二的。

这包括您拥有的特定数据，您正在使用的工具以及您将获得的技能。

您的预测性建模问题以前没有得到解决。因此，我们无法知道一个好的模型是什么样的，或者它可能具有什么样的技能。

您可能会根据域的知识了解熟练模型的外观，但您不知道这些技能分数是否可实现。

我们能做的最好的事情是将您的特定数据的机器学习模型的表现与同样数据训练的其他模型进行比较。

机器学习模型的表现是相对的，并且良好模型可以实现什么分数的想法才有意义，并且只能在同样数据训练的其他模型的技能分数的上下文中进行解释。

## 基线模型技巧

由于机器学习模型的表现是相对的，因此开发稳健的基线至关重要。

基线是一种简单且易于理解的程序，用于对预测性建模问题做出预测。该模型的技能为您的特定数据集上的机器学习模型的最低可接受表现提供了基础。

基线模型的结果提供了可以评估所有其他模型训练数据的技能的点。

基线模型的三个示例包括：

*   预测回归问题的平均结果值。
*   预测分类问题的模式结果值。
*   将输入预测为单变量时间序列预测问题的输出（称为持久性）。

然后可以将问题的基线表现用作衡量所有其他模型进行比较和评估的标准。

如果模型达到低于基线的表现，则出现问题（例如，存在错误）或模型不适合您的问题。

## 什么是最好的分数？

如果您正在处理分类问题，最高分是100％准确率。

如果您正在处理回归问题，则最佳得分为0.0错误。

这些分数不可能达到上/下限。所有预测性建模问题都有预测误差。期待它。该错误来自一系列来源，例如：

*   数据样本不完整。
*   数据中的噪音。
*   建模算法的随机性。

您无法获得最佳分数，但最好知道您所选择的度量的最佳表现。您知道真正的模型表现将落在基线和最佳分数之间的范围内。

相反，您必须在数据集上搜索可能模型的空间，并发现好坏分数的样子。

## 发现模型技能的极限

获得基线后，您可以在预测性建模问题上探索模型表现的范围。

事实上，这是项目的艰苦工作和目标：找到一个可以证明可靠的模型，可以很好地对特定数据集做出预测。

这个问题有很多策略;您可能希望考虑的两个是：

*   **开始高**。选择一种复杂且已知可在一系列预测模型问题上表现良好的机器学习方法，例如随机森林或梯度提升。评估问题的模型并将结果用作近似的高端基准，然后找到实现类似表现的最简单模型。
*   **详尽搜索**。评估您可以在问题上考虑的所有机器学习方法，并选择相对于基线实现最佳表现的方法。

“_开始高_”方法很快，可以帮助您定义模型技能的界限以期待问题并找到可以获得类似结果的简单（例如Occam Razor）模型。它还可以帮助您快速找出问题是否可解决/可预测，这很重要，因为并非所有问题都是可预测的。

“_穷举搜索_”速度很慢，非常适合长期运行的项目，其中模型技能比几乎任何其他问题更重要。我经常对这种方法进行各种类似方法的批量测试，并称之为[现场检查](https://machinelearningmastery.com/why-you-should-be-spot-checking-algorithms-on-your-machine-learning-problems/)方法。

这两种方法都会为您提供一组模型表现分数，您可以将其与基线进行比较。

你会知道一个好的分数是什么样的，坏分数是什么样的。

## 进一步阅读

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

*   [如何使用Python进行时间序列预测的基线预测](https://machinelearningmastery.com/persistence-time-series-forecasting-with-python/)
*   [如何使用Python从零开始实现基线机器学习算法](https://machinelearningmastery.com/implement-baseline-machine-learning-algorithms-scratch-python/)
*   [机器学习表现改进备忘单](https://machinelearningmastery.com/machine-learning-performance-improvement-cheat-sheet/)

## 摘要

在这篇文章中，您发现您的预测性建模问题是唯一的，并且只能相对于基准表现知道良好的模型表现分数。

具体来说，你学到了：

*   可以使用基线模型来发现您的问题的表现基础，通过该基础模型可以评估所有其他模型。
*   鉴于数据和算法的随机性，所有预测模型都包含错误，并且在实践中不可能获得完美分数。
*   应用机器学习的真正工作是探索可能模型的空间，并发现相对于特定数据集的基线，良好的模型分数是什么样的。

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