机器学习中的精确率与召回率

2025年6月18日 | 阅读 7 分钟

在构建任何机器学习模型时,我们首先想到的就是如何构建一个准确且“拟合良好”的模型,以及在此过程中会遇到哪些挑战。精确率(Precision)和召回率(Recall)是机器学习中最重要但又最容易混淆的两个概念。精确率和召回率是用于机器学习中模式识别和分类的性能指标。 这些概念对于构建一个能提供更精确、更准确结果的完美机器学习模型至关重要。一些机器学习模型需要更高的精确率,而另一些模型需要更高的召回率。因此,了解精确率和召回率之间的平衡,或者简单地说,精确率-召回率权衡(precision-recall trade-off)非常重要。

Precision and Recall in Machine Learning

在本文中,我们将理解机器学习中这两个最令人困惑但又最重要的概念:精确率和召回率,许多专业人士在整个数据科学和机器学习职业生涯中都会遇到它们。但在开始之前,我们首先需要理解混淆矩阵(Confusion Matrix)的概念。那么,让我们从机器学习中混淆矩阵的快速介绍开始。

机器学习中的混淆矩阵

混淆矩阵有助于我们展示模型的性能,或者模型在机器学习中的预测方式。

混淆矩阵帮助我们可视化模型在区分两个类别时感到困惑的点。这可以通过一个 2x2 的矩阵来很好地理解,其中行代表实际的真实标签,列代表预测的标签

Precision and Recall in Machine Learning

这个矩阵包含 4 个主要元素,它们显示了计算正确和错误预测数量的各种指标。每个元素都有两个词,要么如下

  • True 或 False
  • 正面(Positive)或负面(Negative)

如果预测标签和真实标签匹配,则预测被认为是正确的;但是,当预测标签和真实标签不匹配时,预测就被认为是错误的。此外,正面和负面表示矩阵中的预测标签。

混淆矩阵中有四种指标组合,如下所示

  • 真阳性(True Positive,TP):此组合告诉我们模型在多大程度上正确地将一个阳性样本分类为阳性?
  • 假阴性(False Negative,FN):此组合告诉我们模型在多大程度上错误地将一个阳性样本分类为阴性?
  • 假阳性(False Positive,FP):此组合告诉我们模型在多大程度上错误地将一个阴性样本分类为阳性?
  • 真阴性(True Negative,TN):此组合告诉我们模型在多大程度上正确地将一个阴性样本分类为阴性?

因此,我们可以使用混淆矩阵在二元分类问题中计算总共 7 个预测。

现在我们可以理解精确率和召回率的概念了。

什么是精确率?

精确率定义为正确分类的阳性样本数(真阳性)与分类为阳性的总样本数(包括正确和错误分类)之比

  • TP - 真阳性
  • FP - 假阳性
  • 当以下值较低时,机器学习模型的精确率将较低:
  • 当以下值较高时,机器学习模型的精确率将较高:

因此,精确率有助于我们可视化机器学习模型在将模型分类为阳性时的可靠性

计算机器学习模型中精确率的示例

以下是一些计算机器学习中精确率的示例

案例 1 - 在下面的场景中,模型正确分类了两个阳性样本,同时错误地将一个阴性样本分类为阳性。因此,根据精确率公式;

Precision and Recall in Machine Learning

精确率 = TP / (TP + FP)

精确率 = 2 / (2 + 1) = 2/3 = 0.667

案例 2 - 在这个场景中,我们有三个被正确分类的阳性样本,以及一个被错误分类的阴性样本。

将 TP = 3 和 FP = 1 代入精确率公式,我们得到;

Precision and Recall in Machine Learning

精确率 = TP / (TP + FP)

精确率 = 3 / (3 + 1) = 3/4 = 0.75

案例 3 - 在这个场景中,我们有三个被正确分类的阳性样本,但没有将任何阴性样本错误分类。

将 TP = 3 和 FP = 0 代入精确率公式,我们得到;

精确率 = TP / (TP + FP)

精确率 = 3 / (3 + 0) = 3/3 = 1

因此,在最后一个场景中,当所有阳性样本都被分类为阳性,并且没有任何阴性样本被错误分类时,我们的精确率值为 1 或 100%。

什么是召回率?

召回率计算为正确分类为阳性的阳性样本数与所有阳性样本总数之比。召回率衡量模型检测阳性样本的能力。召回率越高,检测到的阳性样本越多。

  • TP - 真阳性
  • FN - 假阴性
  • 当以下值较低时,机器学习模型的召回率将较低:
    (TP + FN)(分母) > TP(分子)
  • 当以下值较高时,机器学习模型的召回率将较高:
    TP(分子) > (TP + FN)(分母)

与精确率不同,召回率独立于负样本分类的数量。此外,如果模型将所有阳性样本都分类为阳性,则召回率将为 1。

计算机器学习模型中召回率的示例

以下是一些计算机器学习中召回率的示例,如下所示

示例 1 - 让我们通过四个不同的案例来理解召回率的计算,每个案例的召回率均为 0.667,但在负样本分类方面有所不同。看看如何

Precision and Recall in Machine Learning

在这个场景中,每个案例中负样本的分类都不同。案例 A 有两个负样本被分类为负,案例 B 有两个负样本被分类为负;案例 C 只有一个负样本被分类为负,而案例 D 没有将任何负样本分类为负。

然而,召回率独立于模型中负样本的分类方式;因此,我们可以忽略负样本,只计算所有被分类为阳性的样本。

Precision and Recall in Machine Learning

在上图中,我们只有两个阳性样本被正确分类为阳性,而只有一个负样本被正确分类为负。

因此,真阳性率为 2,假阴性率为 1。那么召回率将是

召回率 = TP / (TP + FN)

=2/(2+1)

=2/3

=0.667

注意:这意味着模型只正确分类了 0.667% 的阳性样本。

示例-2

现在,我们有了另一个场景,其中所有阳性样本都被正确分类为阳性。因此,真阳性率为 3,假阴性率为 0。

Precision and Recall in Machine Learning

召回率 = TP / (TP + FN) = 3 / (3 + 0) = 3/3 = 1

如果召回率为 100%,则表明模型已将所有阳性样本检测为阳性,而不考虑模型中所有负样本的分类方式。然而,模型可能仍然有许多被分类为阴性的样本,但召回率只是忽略了这些样本,这导致模型中出现很高的假阳性率。

注意:这意味着模型已正确分类 100% 的阳性样本。

示例-3

在这个场景中,模型没有识别出任何被分类为阳性的阳性样本。所有阳性样本都被错误地分类为阴性。因此,真阳性率为 0,假阴性率为 3。那么召回率将是

召回率 = TP / (TP + FN) = 0 / (0 + 3) = 0/3 = 0

这意味着模型没有正确分类任何阳性样本。

机器学习模型中精确率与召回率的区别

精度召回率
它帮助我们衡量模型中分类阳性样本的能力。它帮助我们衡量机器学习模型正确分类了多少阳性样本。
在计算模型的精确率时,我们应该同时考虑被分类的阳性和阴性样本。在计算模型的召回率时,我们只需要考虑所有阳性样本,而忽略所有阴性样本。
当一个模型正确地将大多数阳性样本分类为阳性,但同时也产生了很多假阳性样本时,该模型被认为是召回率高但精确率低的模型。当一个模型将一个样本分类为阳性,但它只能正确分类很少的阳性样本时,该模型被认为是准确率和精确率高但召回率低的模型。
机器学习模型的精确率取决于阳性和阴性样本。机器学习模型的召回率取决于阳性样本,而与阴性样本无关。
在精确率中,我们应该考虑所有被正确或错误地分类为阳性的阳性样本。召回率关注正确分类所有阳性样本。它不考虑任何阴性样本是否被分类为阳性。

为什么要在机器学习模型中使用精确率和召回率?

这个问题在所有机器学习工程师和数据研究人员中都非常普遍。精确率和召回率的使用取决于所解决问题的类型。

  • 如果要求将所有阳性样本和阴性样本都分类为阳性,无论它们是正确还是错误分类,则使用精确率。
  • 另一方面,如果我们的目标是只检测所有阳性样本,则使用召回率。在这里,我们不应关心负样本如何被正确或错误地分类。

结论

在本教程中,我们讨论了机器学习模型二元分类问题的各种性能指标,如混淆矩阵、精确率和召回率。此外,我们还通过各种示例计算了机器学习模型的精确率和召回率,以及何时应使用精确率,何时应使用召回率。