文章

准确率(Accuracy)|查准率(Precision)|查全率(Recall)

在机器学习中,对于一个模型的性能评估是必不可少的。准确率(Accuracy)、查准率(Precision)、查全率(Recall)是常见的基本指标。

为了方便说明,假设有以下问题场景:

一个班有50人,在某场考试中有40人及格,10人不及格。 现在需要根据一些特征预测出所有及格的学生。


某一模型执行下来,给出了39人,其中37人确实及格了,剩下2人实际上不及格。

<!-- more -->

样本

要了解这些指标的含义,首先需要了解两种样本:

  • **正样本:**即属于某一类(一般是所求的那一类)的样本。在本例中是及格的学生
  • **负样本:**即不属于这一类的样本。在本例中是不及格的学生

识别结果

于是我们可以得到下面一张表:

正类 父类
被检索 True Positive False Positive
未检索 False Negative True Negative
  • TP: 被检索到正样本,实际也是正样本(正确识别) 在本例表现为:预测及格,实际也及格。
  • FP: 被检索到正样本,实际是负样本(一类错误识别) 在本例表现为:预测及格,实际不及格。
  • FN: 未被检索到正样本,实际是正样本。(二类错误识别) 在本例表现为:预测不及格,实际及格了。
  • TN: 未被检索到正样本,实际也是负样本。(正确识别) 在本例表现为:预测不及格,实际也不及格。

指标计算

有了上述知识,就可以计算各种指标了。

Accuracy(准确率)

分类正确的样本数 与 样本总数之比。即:(TP + TN) / ( ALL ).

在本例中,正确分类了45人(及格37 + 不及格8),所以 Accuracy = 45 / 50 = 90%.

Precision(精确率、查准率)

被正确检索的样本数 与 被检索到样本总数之比。即:TP / (TP + FP).

在本例中,正确检索到了37人,总共检索到39人,所以 Precision = 37 / 39 = 94.9%.

Recall (召回率、查全率)

被正确检索的样本数 与 应当被检索到的样本数之比。即:TP / (TP + FN).

在本例中,正确检索到了37人,应当检索到40人,所以 Recall = 37 / 40 = 92.5%.

为什么要不同的指标

根据上边公式的不同,可以借此理解不同指标的意义。

准确率是最常用的指标,可以总体上衡量一个预测的性能。但是某些情况下,我们也许会更偏向于其他两种情况。

「宁愿漏掉,不可错杀」

在识别垃圾邮件的场景中可能偏向这一种思路,因为我们不希望很多的正常邮件被误杀,这样会造成严重的困扰。 因此,Precision 将是一个被侧重关心的指标。

「宁愿错杀,不可漏掉」

在金融风控领域大多偏向这种思路,我们希望系统能够筛选出所有有风险的行为或用户,然后交给人工鉴别,漏掉一个可能造成灾难性后果。 因此,Recall 将是一个被侧重关心的指标。

综合评价 (F-Score)

更多时候,我们希望能够同时参考 Precision 与 Recall,但又不是像 Accuracy 那样只是泛泛地计算准确率,此时便引入一个新指标 F-Score,用来综合考虑 Precision 与 Recall.

其中 β 用于调整权重,当 β=1 时两者权重相同,简称为 F1-Score. 若认为 Precision 更重要,则减小 β,若认为 Recall 更重要,则增大 β.