分类问题常用评估指标:准确率、精确率、召回率、F1

咱们直接进入正题。做分类模型,光看模型输出了什么还不够,你得有尺子去量它好不好。这把尺子,就是评估指标。选错了指标,模型可能在跑分时很好看,上线就崩。这坑我踩过不止一次,今天把几个最常用的指标讲透。

准确率:最直观,也最容易骗人

准确率(Accuracy)是所有分类问题里最直觉的指标。很简单:预测对的样本数除以总样本数。

Accuracy = (TP + TN) / (TP + TN + FP + FN)

这里的 TP、TN、FP、FN 分别是真正例、真负例、假正例、假负例。准确率高,说明模型整体判断正确的比例高。

但我个人习惯,不会单看准确率。为什么?因为样本不平衡时,准确率会给你假象。举个例子:一个数据集里 95% 是负样本,5% 是正样本。你的模型什么都不做,直接全部预测为负样本,准确率也有 95%。这模型完全没用,但准确率看着还不错。

注意:准确率只在正负样本相对均衡时才有参考价值。不平衡数据集下,准确率会严重失真。我曾在医疗诊断项目中遇到过,模型准确率 98%,结果把所有病人都判为健康——这就是准确率陷阱。

精确率与召回率:一对相爱相杀的指标

项目的业务场景不同,你关注的点也不同。我一般会问自己一个问题:「犯错」的代价是什么?

精确率:宁可漏判,不可错判

精确率(Precision)关注的是:在所有被判为正类的样本中,有多少是真正例。

Precision = TP / (TP + FP)

精确率高,意味着模型不太会乱认正类。适合的场景:垃圾邮件过滤、用户异常行为检测。这些场景下,误判一个正常样本为正类的成本很高,比如把重要邮件丢进垃圾箱。

我记得之前做风控产品时,业务方就非常看重精确率。模型宁可漏掉一些风险用户,也不能把正常用户的交易拦截了——那体验太差了。

召回率:宁可错判,不可漏判

召回率(Recall)关注的是:所有真正例中,有多少被模型正确找出来了。

Recall = TP / (TP + FN)

召回率高,意味着模型不容易漏掉正类。适合的场景:癌症筛查、故障检测、安全监控。在这些场景下,漏过一个真正例可能造成严重后果。比如肿瘤检测,错过一个患者,后果很严重。

指标 关注点 适合场景 常见代价
精确率 被判为正类的样本中有多少是真的 垃圾邮件、风控、内容审核 FP 成本高(误判)
召回率 真正的正类中有多少被找出来了 疾病筛查、故障检测、安防 FN 成本高(漏判)

核心思路:精确率和召回率是矛盾的。提升精确率通常会让召回率下降,反之亦然。你需要根据业务场景来权衡。

F1 值:调和精密与召回

既然精确率和召回率互相拉扯,那就需要一个平衡两者的指标。这就是 F1 值。

F1 是精确率和召回率的调和平均数。调和平均的特点是对小值更敏感,这保证了两个指标都不能太低。

F1 = 2 * (Precision * Recall) / (Precision + Recall)

你看这个公式,如果精确率或召回率中有一个很低,F1 也会很低。只有两者都高,F1 才会高。我建议在多分类项目中,如果不知道优先关注哪个指标,先用 F1 作为主要评估参考。

举个例子:

情况 A:Precision=0.9, Recall=0.9 → F1=0.9
情况 B:Precision=0.99, Recall=0.1 → F1=0.18

算术平均对情况 B 会给出 0.545 的高分
但调和平均老实告诉你:B 的方案不行

调 F1 的妙处就在这里——它不会让你用召回率极低的模型来自欺欺人。

实用技巧:做二分类时,我会先算混淆矩阵,再看精确率和召回率的具体值。如果业务方没有明确偏好,我就直接拿 F1 去跟基线模型对比。

一张图看懂四指标关系

说了这么多,下面这张图把它们之间的关系理清楚。这些指标不是孤立的,它们都来自混淆矩阵的四个基本值。

分类评估指标知识体系 混淆矩阵 TP | TN FP | FN 正负例分布 准确率 精确率 召回率 F1 值 每个指标都源自混淆矩阵,选择时需结合业务场景权衡

图中梳理得很清楚:从混淆矩阵出发,就能算出准确率、精确率、召回率,再进一步得到 F1。每个指标都有自己的用途,没有万能的单一指标。你想想看,如果业务方只告诉你「我要模型最好」,那你就需要多问一句:「好」的标准是什么?

实践中的选择策略

我在实际项目中,一般会快速做这么几步:

  1. 看数据分布:先做 EDA,看看正负样本比例。如果严重不平衡,直接放弃准确率。
  2. 明确犯错成本:和业务方对齐——FP 和 FN 哪个更贵?
  3. 选择主指标:如果两者都贵,用 F1;如果偏重精确率,用 Precision;如果偏重召回率,用 Recall。
  4. 做多指标对比:不仅在验证集上看,还会在测试集上看 IOU、混淆矩阵、ROC-AUC 等作为辅助参考。

一句话总结:准确率看全局,精确率看假阳性,召回率看假阴性,F1 看综合平衡。 没有最好的指标,只有最合适的指标。

嗯,这四个指标完全够你应对大部分分类场景了。下一个章节,咱们会深入另一个方向的指标——相关系数,专门用来评估回归模型。到时候我还会带上具体的代码跑一遍,让你上手就能用。