← 返回题目列表

混淆矩阵、精确率、召回率、F1 分别是什么?

高频 中等 第 5 / 25 题 更新于 2026/07/28
模型评估混淆矩阵精确率召回率F1

简化版

混淆矩阵 是分类结果的 2×2 表,把预测和真实交叉统计成四格:TP(真正例)、FP(假正例)、FN(假负例)、TN(真负例)。基于它定义:精确率(Precision)= TP/(TP+FP)——「预测为正的里面,真正为正的比例」,衡量查准召回率(Recall)= TP/(TP+FN)——「真正为正的里面,被找出来的比例」,衡量查全。两者常此消彼长。F1 = 精确率和召回率的调和平均 = 2PR/(P+R),综合两者、当二者都要兼顾时用。选哪个看业务:宁可错杀怕误报用精确率(如垃圾邮件),宁可多查怕漏报用召回率(如疾病筛查)。

详细版

混淆矩阵(正类为关注类):

                预测正      预测负
真实正         TP          FN        (FN=漏报)
真实负         FP          TN
              (FP=误报)

核心指标:

指标公式含义
精确率 PrecisionTP/(TP+FP)预测为正中真正正的比例(查准)
召回率 RecallTP/(TP+FN)真实正中被找出的比例(查全)
F12PR/(P+R)精确率召回率的调和平均
准确率 Accuracy(TP+TN)/总数整体分对比例(不平衡时失真)

记忆关键:

  • 精确率分母含 FP(误报)——不想误报就提精确率。
  • 召回率分母含 FN(漏报)——不想漏报就提召回率。
  • 精确率↑ 常导致 召回率↓(调高阈值更谨慎→查准但漏得多),反之亦然。
  • F1 用调和平均:只有 P、R 都高 F1 才高,任一很低 F1 就被拉低。

完整版教学

一、从混淆矩阵说起——四个基本量

评估分类模型,先把预测结果和真实标签交叉统计成混淆矩阵。以「正类」为我们关注的类别(如「有病」「欺诈」「垃圾邮件」),四个格子是:

  • TP(True Positive,真正例):真实为正、预测也为正——正确抓到
  • FP(False Positive,假正例):真实为负、却预测为正——误报(虚惊一场)。
  • FN(False Negative,假负例):真实为正、却预测为负——漏报(放过了)。
  • TN(True Negative,真负例):真实为负、预测也为负——正确排除

记忆技巧:第二个字母是预测(P=预测正/N=预测负),第一个字母是预测对不对(T=对/F=错)。FP 是误报、FN 是漏报——这两个错误的代价往往不同,正是精确率和召回率要分别刻画的。

二、精确率:预测为正的「查准率」

精确率(Precision)= TP / (TP + FP)

分母是「所有被预测为正的样本」,分子是其中「真正为正的」。它回答:「模型说是正的,有多少真的是正的?」 衡量查准误报少不少

  • 分母含 FP(误报):误报越多,精确率越低。
  • 当误报代价高时看精确率。例:垃圾邮件过滤——把正常邮件误判为垃圾(FP)很糟糕(用户漏看重要邮件),所以要高精确率,宁可放过一些垃圾也别误杀正常邮件。

三、召回率:真实为正的「查全率」

召回率(Recall)= TP / (TP + FN)

分母是「所有真实为正的样本」,分子是其中「被模型找出来的」。它回答:「所有真正的正例,模型找出了多少?」 衡量查全漏报少不少

  • 分母含 FN(漏报):漏报越多,召回率越低。
  • 当漏报代价高时看召回率。例:癌症筛查——漏诊一个真病人(FN)后果严重,所以要高召回率,宁可多误报几个(让健康人复查)也别漏掉真病人。

四、精确率和召回率的矛盾——此消彼长

精确率和召回率通常不能兼得,靠调整分类阈值(判为正类的概率门槛)来权衡:

阈值调高(更谨慎才判正)→ 预测正的少而准 → 精确率↑、召回率↓(漏得多)
阈值调低(宽松就判正)  → 预测正的多而滥 → 召回率↑、精确率↓(误报多)

极端例子:只把最有把握的 1 个判为正,很可能对(精确率高),但漏掉了其他所有正例(召回率极低);反过来把所有样本都判为正,召回率 100%(一个不漏)但精确率极低(全是误报)。所以要在两者间找平衡——这就需要一个综合指标。

五、F1:精确率和召回率的调和平均

F1 = 2 · P · R / (P + R)——精确率和召回率的调和平均数

为什么用调和平均而不是算术平均?因为调和平均更偏向较小值:只有当 P 和 R 都比较高时 F1 才高;任意一个很低,F1 就被拉得很低。这正是我们想要的——不能靠一个指标很高、另一个很低来「蒙混」。

  • 例:P=1.0、R=0.01,算术平均=0.505(看着还行),但 F1=2×1×0.01/(1.01)≈0.02(暴露了 R 太低的问题)。
  • F1 适合精确率和召回率都要兼顾、且类别不平衡的场景。

Fβ 推广Fβ = (1+β²)PR / (β²P + R),β>1 更重视召回率,β<1 更重视精确率,可按业务侧重调。

六、和准确率的关系——为什么不平衡时别只看准确率

准确率(Accuracy)= (TP+TN)/总数,是最直观的「整体分对比例」。但在类别不平衡时会严重误导:若 99% 是负类,模型「全预测负」准确率就有 99%,看着很高,却一个正例都没抓到(召回率=0)——毫无价值。所以不平衡场景要用精确率、召回率、F1、AUC 而非准确率(详见准确率局限专题)。

平衡准确率 (TPR+TNR)/2 给两个真实类别相同权重,在类别不均衡时比普通准确率更有解释力。F1 完全忽略 TN,因此若正确排除负类也有重要价值,不能只报 F1。

指标使用信息典型盲点
AccuracyTP、TN、FP、FN多数类可能主导
F1TP、FP、FN忽略 TN
Balanced AccuracyTPR、TNR不表达错误成本

七、常见追问

  • 精确率和召回率怎么记? 精确率分母含 FP(管误报、查准);召回率分母含 FN(管漏报、查全)。
  • 什么时候重精确率/召回率? 误报代价高→精确率(垃圾邮件、推荐);漏报代价高→召回率(疾病、欺诈、安全)。
  • F1 为什么用调和平均? 偏向小值,P、R 都高才高,防止一高一低蒙混。
  • 多分类怎么算 P/R/F1? 每类分别算,再用 macro/micro/weighted 平均(详见多分类评估专题)。
  • 阈值怎么选? 按业务对精确率/召回率的侧重,看 P-R 曲线选合适阈值。

八、用一张混淆矩阵把指标全部算出来

设测试集中 TP=72,FP=18,FN=8,TN=902,总样本 1000。Precision=72/(72+18)=0.80,Recall=72/(72+8)=0.90,F1=2×0.8×0.9/(0.8+0.9)≈0.847;Specificity=902/(902+18)≈0.980。同一矩阵同时揭示正类捕获与负类误报,不能只抄一个 F1。

指标分母是谁数值
Precision所有预测正0.800
Recall/TPR所有真实正0.900
Specificity/TNR所有真实负0.980
NPV所有预测负约 0.991
真实正 80  → TP 72 + FN 8
真实负 920 → FP 18 + TN 902
预测正 90  → 其中 80% 真正

精确率和召回率随阈值常呈权衡,但 Precision 本身不保证随阈值严格单调;离散分数和局部排序会让它上下波动。应在验证集上枚举实际候选阈值,并报告置信区间或样本量。

易错点:先声明谁是正类,再写分母;正类一换,TP/FP/FN/TN 和所有指标都会重算。

九、常见误区与追问

  • 误区:F1 高就代表负类也表现好。 F1 只由正类 Precision/Recall 构成,不使用 TN。
  • 误区:提高阈值时 Precision 数学上必然上升。 召回通常不增,但 Precision 可因分数排序和离散点出现局部下降。
  • 追问:Specificity 是什么? 它是 TN/(TN+FP),衡量真实负类被正确排除的比例。
  • 追问:Fβ 中 β 大于 1 表示什么? 召回的权重更高,但具体 β 仍应与业务成本对应。
  • 追问:样本权重下怎么计算? 四格改为权重和而非简单计数,公式结构不变。

十、加强记忆

混淆矩阵四格:TP 正确抓到、FP 误报、FN 漏报、TN 正确排除精确率 = TP/(TP+FP)——预测为正中真正的比例(查准,分母含 FP 误报,误报代价高时用,如垃圾邮件);召回率 = TP/(TP+FN)——真实正中被找出的比例(查全,分母含 FN 漏报,漏报代价高时用,如疾病筛查)。两者随阈值通常需要权衡,但 Precision 不保证逐阈值严格单调。F1 = 2PR/(P+R)调和平均P、R 都高才高、任一低就拉低,兼顾两者且不被大量 TN 直接主导,但仍受正类率影响。准确率在类别不平衡时失真(全预测多数类也很高),不平衡要看 P/R/F1/AUC。