准确率、召回率与精确率#
在分类阈值与混淆矩阵那一节,我们介绍了真正例(TP)、假正例(FP)、真负例(TN)、假负例(FN)这4个量化指标。它们可以组合出若干有用的模型评估指标。具体哪些指标最有意义,取决于具体的模型、具体的任务、不同误分类的代价,以及数据集是均衡的还是不均衡的。
关于阈值的说明: 本节中所有指标都是在某个固定阈值下计算的——一旦阈值改变,指标值也会跟着变。实际工作中,通常会通过调节阈值来优化其中某一个指标。
关于本节内容更加详细的是介绍还可以参见文章 「分类评估指标:准确率、召回率与F-score解析」 中的内容。
准确率(Accuracy)#
准确率(Accuracy) 是所有分类结果中被正确分类的比例——无论是正例还是负例。它的数学定义为:
$$\text{Accuracy} = \frac{\text{正确分类数}}{\text{总分类数}} = \frac{\text{TP} + \text{TN}}{\text{TP} + \text{TN} + \text{FP} + \text{FN}}$$在垃圾邮件分类的例子中,准确率衡量的是「所有邮件中被正确分类的比例」。
一个完美的模型,假正例和假负例都为 0,因此准确率为 1.0,也就是 100%。
由于准确率同时纳入了混淆矩阵里的4种结果(TP、FP、TN、FN),在数据集中正负例数量大致相当的均衡场景下,准确率可以作为衡量模型质量的一个粗粒度指标。正因如此,准确率往往是通用或未指明模型、通用或未指明任务下的默认评估指标。
但是,当数据集不均衡、或者某一类错误(FN 或 FP)的代价远高于另一类时——这在大多数真实应用中都是常态——最好去优化其他指标,而不是依赖准确率。
对于严重不均衡的数据集(假设正例只占 1%),一个永远预测为负例的模型依然能拿到 99% 的准确率,可它实际上毫无用处。
说明: 在机器学习(ML)中,recall、precision、accuracy 等词都有具体的数学定义,可能与日常用语中的含义有所区别或更为严格。
召回率 / 真正例率(Recall, True Positive Rate)#
真正例率(True Positive Rate, TPR),也叫作召回率(Recall),是所有真实正例中被正确分类为正例的比例。召回率的数学定义为:
$$\text{Recall (or TPR)} = \frac{\text{被正确分类的真实正例数}}{\text{所有真实正例数}} = \frac{\text{TP}}{\text{TP} + \text{FN}}$$分母里之所以会出现 $\text{FN}$,是因为 $\text{FN}$ 表示被错误地归为负例的真实正例——这些是被漏掉的「真正正例」。在垃圾邮件分类的例子中,召回率衡量的是「所有垃圾邮件中被正确识别为垃圾邮件的比例」。这也是为什么召回率又叫「检出率(Probability of Detection)」的原因——它回答的问题正是「这个模型能检测出多少比例的垃圾邮件」。
一个理论上的完美模型,假负例为 0,因此召回率(TPR)为 1.0,也就是 100% 的检出率。
当数据集不均衡且真实正例数非常少时,召回率比准确率更有意义,因为它直接衡量模型把所有正例找出来的能力。在疾病预测这类应用中,正确识别正例至关重要:漏掉一个正例(FN)往往比错判一个负例(FP)后果严重得多。
假正例率(False Positive Rate)#
假正例率(False Positive Rate, FPR)是所有真实负例中被错误地分类为正例的比例,也叫「误报率(Probability of False Alarm)」。它的数学定义为:
$$\text{FPR} = \frac{\text{被错误分类的真实负例数}}{\text{所有真实负例数}} = \frac{\text{FP}}{\text{FP} + \text{TN}}$$分母里之所以会出现 $\text{FP}$,是因为 $\text{FP}$ 表示被错误地归为正例的真实负例——这些是「错报」。在垃圾邮件分类的例子中,FPR 衡量的是「所有正常邮件中被错误地识别为垃圾邮件的比例」,也就是模型的误报率。
一个完美的模型,假正例为 0,因此 FPR 为 0.0,也就是 0% 的误报率。
对于不均衡数据集,FPR 通常比准确率更有信息量。但是,如果真实负例的数量非常少,FPR 可能不是最佳选择,因为它波动较大。例如,如果数据集中只有 4 个真实负例,一次错误分类就会让 FPR 跳到 25%,再错一个就会跳到 50%。在这种情况下,下文将要介绍的「精确率」可能是更稳定的衡量误报影响的指标。
MLWM: 这里我们可以发现 TPR 衡量的是对真正例的召回情况,而 FPR 衡量的则是对假正例的召回情况。
精确率(Precision)#
精确率(Precision) 是模型预测为正例的所有样本中,实际为正例的比例。它的数学定义为:
$$\text{Precision} = \frac{\text{被正确分类的真实正例数}}{\text{所有被预测为正例的样本数}} = \frac{\text{TP}}{\text{TP} + \text{FP}}$$在垃圾邮件分类的例子中,精确率衡量的是「所有被判为垃圾邮件的邮件中,实际确实是垃圾邮件的比例」。
一个理论上的完美模型,假正例为 0,因此精确率为 1.0。
当数据集严重不均衡且真实正例极少时(比如总共只有 1 到 2 个),精确率作为评估指标的意义和可用性就会变差。
精确率随假正例减少而提升,召回率随假负例减少而提升。但从前一节可以看出,提高分类阈值倾向于减少假正例、增加假负例,而降低阈值则恰好相反。因此精确率和召回率之间常常呈现出此消彼长的反向关系——改善其中一个,往往会牺牲另一个。
请动手滑动阈值试一试:
关于指标里出现 NaN 的说明
NaN 即「Not a Number」,通常出现在除以 0 的情形下——上述任何一个指标的计算都可能发生。例如,当 TP 和 FP 同时为 0 时,精确率的分母为 0,就会得到 NaN。在某些场景下,NaN 可能代表模型表现完美,可以替换成 1.0;但它也可能来自一个实际毫无用处的模型。例如,一个永远不预测为正例的模型,TP 和 FP 都为 0,计算精确率就会得到 NaN。
指标的选择与权衡#
在评估模型、选择阈值时应当优先优化哪个指标,取决于具体问题的代价、收益和风险。以垃圾邮件分类为例,通常会优先考虑召回率(不漏掉任何垃圾邮件)、精确率(确保被标为垃圾邮件的邮件确实是垃圾邮件),或者在某个最低准确率水平之上追求两者的某种平衡。
| 指标 | 选择建议 |
|---|---|
| 准确率 | 在均衡数据集上用作训练进度 / 收敛的粗略指示;评估模型表现时务必与其他指标搭配使用;不推荐用于不均衡数据集,建议换用其他指标。 |
| 召回率 | 当假负例的代价高于假正例时优先使用。 |
| 假正例率 | 当假正例的代价高于假负例时优先使用。 |
| 精确率 | 当正例预测必须非常准确时优先使用。 |
F1 分数(F1 Score)[可选、进阶]
F1 分数(F1 Score)是精确率与召回率的调和平均数(一种均值形式)。
数学上定义为:
$$\text{F1} = 2 \cdot \frac{\text{precision} \times \text{recall}}{\text{precision} + \text{recall}} = \frac{2 \cdot \text{TP}}{2 \cdot \text{TP} + \text{FP} + \text{FN}}$$该指标同时兼顾了精确率与召回率的重要性,对类别不均衡的数据集比准确率更合适。当精确率与召回率都达到完美值 1.0 时,F1 也是 1.0。更一般地,当精确率与召回率数值接近时,F1 也会接近它们的值;当两者差距较大时,F1 会更接近其中较差的那个。
巩固理解#
-
某模型的输出为 5 个 TP、6 个 TN、3 个 FP、2 个 FN。它的召回率是多少?
-
A. 0.714
-
B. 0.455
-
C. 0.625
-
-
某模型的输出为 3 个 TP、4 个 TN、2 个 FP、1 个 FN。它的精确率是多少?
-
A. 0.6:
-
B. 0.75
-
C. 0.429
-
-
你正在构建一个二分类器,用于检查虫情陷阱的照片中是否出现某种危险的入侵物种。如果模型检测到该物种,就会通知值班的昆虫学家。早期发现这种昆虫对于防止大规模暴发至关重要。误报(假正例)很容易处理:昆虫学家看到照片后发现分类错了,标记一下即可。假设在准确率可接受的前提下,应该针对哪个指标优化模型?
-
A. 召回率
-
B. 假正例率(FPR)
-
C. 精确率
-
关键术语:
- 准确率(Accuracy)
- 假正例率(False Positive Rate, FPR)
- 精确率(Precision)
- 召回率(Recall)
小结
准确率:刻画整体分类正确的比例,但严重不均衡时会被「永远预测多数类」的模型「灌水」,不能反映真实表现。
召回率(Recall / TPR):关心「所有真实正例中找回了多少」,适合漏报代价高的场景;精确率(Precision)关心「所有预测为正例中实际对了多少」,适合错报代价高的场景。
FPR 衡量「错报率」,与召回率互补二者在不均衡数据集上波动较大,要结合具体负例数量判断是否可用。
精确率与召回率常常此消彼长,背后是分类阈值对 FP / FN 的反向影响。F1 分数作为两者的调和平均,提供一个兼顾两者的单值指标,对不均衡数据集尤其合适。
实际工程中,指标的选择没有标准答案,要根据业务的代价、收益与风险综合决定——本节末尾的决策表就是一个常用的起点。