---
description: "三个指标的区别只在分母：全部西瓜、模型挑出的好瓜、真正的好瓜"
---

# 用西瓜搞懂准确率、精确率和召回率

三个指标的区别，主要在**分母看的是哪堆西瓜**：准确率看全部西瓜，精确率看模型挑出的好瓜，召回率看真正的好瓜。

![黑色马克笔随手画下的一块西瓜](assets/watermelon-marker-doodle.webp)

## 先把「好瓜」定成正类

假设有 100 个西瓜，人工切开后确认：

- 20 个是好瓜
- 80 个不是好瓜

模型先看外观，再把它们分成「好瓜」和「非好瓜」。结果如下：

| 真实情况 \ 模型判断 | 判为好瓜 | 判为非好瓜 | 合计 |
|---|---:|---:|---:|
| 真正的好瓜 | 15（TP） | 5（FN） | 20 |
| 真正的非好瓜 | 10（FP） | 70（TN） | 80 |
| 合计 | 25 | 75 | 100 |

四个缩写不用死背。**正、负说模型判成哪一类；真、假说这个判断对不对。**

- TP：好瓜被模型挑出来了
- FP：不是好瓜，却被模型挑成好瓜
- FN：是好瓜，却被模型漏掉了
- TN：不是好瓜，也被模型正确排除了

## 准确率看全部西瓜

![准确率把全部西瓜的正确与错误一起计算](assets/accuracy-marker-doodle.webp)

准确率（Accuracy）回答：**100 个西瓜里，模型一共判断对了多少个？**

模型正确挑出 15 个好瓜，又正确排除 70 个非好瓜，所以：

$$
\text{准确率} =
\frac{TP + TN}{TP + FP + FN + TN}
=
\frac{15 + 70}{100}
= 85\%
$$

准确率给的是全局成绩。它把「挑对好瓜」和「排对非好瓜」都算作正确。

## 精确率看模型挑出的好瓜

![精确率只看模型挑进篮子的西瓜](assets/precision-marker-doodle.webp)

精确率（Precision，也叫查准率）回答：**模型说是好瓜的那些西瓜里，真好瓜占多少？**

模型一共挑出 25 个「好瓜」，其中 15 个是真的：

$$
\text{精确率} =
\frac{TP}{TP + FP}
=
\frac{15}{15 + 10}
= 60\%
$$

精确率高，表示模型的「好瓜」招牌比较可信。把模型挑出的瓜装进高价礼盒时，这个指标很重要——误放一个坏瓜，代价就不小。

## 召回率看真正的好瓜

![召回率关注真正的好瓜有没有被漏在圈外](assets/recall-marker-doodle.webp)

召回率（Recall，也叫查全率）回答：**所有真正的好瓜里，模型找到了多少？**

实际有 20 个好瓜，模型找到了 15 个：

$$
\text{召回率} =
\frac{TP}{TP + FN}
=
\frac{15}{15 + 5}
= 75\%
$$

召回率高，表示漏掉的好瓜少。要先尽量找全候选瓜，再交给人工复检时，召回率通常比精确率更重要。

## 85% 准确率不等于模型很会挑好瓜

这个模型的准确率有 85%，精确率却只有 60%。原因就在 80 个非好瓜上：模型正确排除了其中 70 个，它们把准确率抬高了；但模型挑出的 25 个「好瓜」里，有 10 个其实不是好瓜。

类别越不均衡，准确率越容易让人误判。假如 100 个瓜里只有 5 个坏瓜，一个模型把所有瓜都说成好瓜，准确率仍有 95%，但它一个坏瓜也没找出来。若把「坏瓜」定为正类，它的召回率就是 0%。

!!! note "正类必须先说清楚"
    指标不会自动知道哪一类更重要。挑礼盒时可以把「好瓜」当正类；做食品安全筛查时，更适合把「坏瓜」当正类。正类一换，TP、FP、FN、TN 都要跟着重算。

## 三句话记住

| 指标 | 它问的问题 | 本例结果 |
|---|---|---:|
| 准确率 | 全部西瓜里，判断对了多少？ | 85% |
| 精确率 | 模型挑出的好瓜里，真好瓜有多少？ | 60% |
| 召回率 | 真正的好瓜里，模型找到了多少？ | 75% |

先圈出分母，就不容易混：**全部、模型挑出、实际拥有**。
