Skip to content
清晨的一缕阳光
返回

机器学习速成·分类(2/4):准确率、召回率、精确率与 F1

机器学习速成·分类(2/4):准确率、召回率、精确率与 F1

本文参考 Google 机器学习速成课程 - 分类:准确率、召回率、精确率和相关指标 模块撰写,承接上一篇的混淆矩阵,讲清四个最常用的分类评估指标:准确率、召回率、假正例率、精确率,以及它们怎么选。


一、四大指标总览

上篇的混淆矩阵(TP/FP/FN/TN)可以计算出多个有用的指标。所有指标都基于一个固定阈值计算,且会随阈值变化。 哪一个最有意义,取决于任务、错误代价和数据是否平衡。

指标回答的问题公式
准确率所有分类中,对了多少?$\frac{TP+TN}{TP+TN+FP+FN}$
召回率(TPR)所有真实正例中,逮到了多少?$\frac{TP}{TP+FN}$
假正例率(FPR)所有真实负例中,误报了多少?$\frac{FP}{FP+TN}$
精确率所有”预测为正”中,真有几成是正的?$\frac{TP}{TP+FP}$

二、准确率(Accuracy):最直观,但最容易骗人

准确率 = 所有正确分类占总分类的比例(包含正负两类都算)。

在垃圾邮件例子里,准确率衡量的是所有被正确分类的邮件占比。理想模型没有 FP/FN,准确率 = 1.0。

什么时候好用:

什么时候会骗人:

⚠️ 注意:ML 中”准确率/召回率/精确率”有精确的数学定义,可能和日常用词的含义不同。


三、召回率(Recall)= 真正例率(TPR):“逮住坏蛋”的能力

召回率 = 所有真实正例中,被正确分类为正例的比例,也叫检测概率

在垃圾邮件例子里,召回率回答的是:“模型逮到的垃圾邮件,占全部垃圾邮件的百分之几?”

理想模型没有 FN,召回率 = 1.0(100% 检测率)。

什么时候更看重召回率:


四、假正例率(FPR):“误报概率”

FPR = 所有真实负例中,被错误分类为正例的比例,也叫误报概率

在垃圾邮件例子里,FPR 衡量的是合法邮件被误判为垃圾的比例。理想模型没有 FP,FPR = 0.0。

注意它的波动性:


五、精确率(Precision):“预测为正”的可信度

精确率 = 所有被预测为正例的分类中,实际确实是正例的比例

在垃圾邮件例子里,精确率回答的是:“被丢进垃圾文件夹的邮件里,真有几成是垃圾?” 理想模型没有 FP,精确率 = 1.0。

什么时候更看重精确率:

精确率 vs 召回率的反比关系

指标出现 NaN 怎么办?

除数为 0 时指标为 NaN。例如 TP 和 FP 都为 0 时,精确率分母为 0:


六、F1 得分(可选进阶):精确率与召回率的调和平均

F1 得分 = 精确率和召回率的调和平均值

$$\text{F1} = 2 \times \frac{\text{precision} \times \text{recall}}{\text{precision} + \text{recall}} = \frac{2\text{TP}}{2\text{TP} + \text{FP} + \text{FN}}$$

情况F1 的表现
精确率 = 召回率 = 1.0F1 = 1.0(满分)
精确率 ≈ 召回率F1 接近它们的值
精确率、召回率相差很大F1 偏向较差的那个(调和平均的特性)

类别不平衡的数据集,F1 通常比准确率更可取。


七、指标选择指南

指标什么时候用
准确率平衡数据集的粗略进度指标;避免用于不平衡数据集
召回率假负例代价 > 假正例时(如疾病检测、入侵物种预警)
假正例率假正例代价 > 假负例时
精确率正类别预测的准确性非常重要时
F1需要同时平衡精确率与召回率时

实战案例:入侵物种检测

假设一个二元分类器用于检查昆虫诱捕器照片中是否出现危险入侵物种,检到就通知昆虫学家。

结论:应针对召回率优化——尽可能逮住所有正例,宁可多误报几次。


总结

指标一句话把握何时优先
准确率所有分类里对的比例平衡数据集粗略评估
召回率真实正例逮到多少漏报代价高时
FPR真实负例误报多少误报代价高时
精确率预测为正的可信多少正预测必须准
F1精确率×召回率调和平均类别不平衡、两者都要

一句话:准确率看全局但对不平衡数据会骗人;召回率追问”漏没漏”,精确率追问”准不准”,FPR 追问”误不误”;而 F1 是精确率与召回率的”平均”,偏向差的那一端。


分享这篇文章到:

上一篇文章
机器学习速成·分类(3/4):ROC 曲线与 AUC——看穿所有阈值
下一篇文章
机器学习速成·分类(1/4):简介、分类阈值与混淆矩阵