查准率与查全率
查准率 (Precision) 和 **查全率 (Recall)**。
这两个指标主要用于评估 分类模型 的性能,尤其是在处理 类别不平衡 的数据集时,它们比单纯的“准确率 (Accuracy)”要重要得多。
一、为什么需要查准率和查全率?(准确率的陷阱)
在解释它们之前,我们先看看只用“准确率”有什么问题。
准确率 (Accuracy) = (预测正确的样本数) / (总样本数)
假设有一个癌症预测任务,数据集中有 1000 个人,其中:
- 990 人是健康的 (负类 Negative)
- 10 人是癌症患者 (正类 Positive)
现在我们有一个很“懒”的模型,它不管输入是什么,一律预测为“健康”。它的预测结果是:
- 正确预测了 990 个健康的人。
- 错误地将 10 个癌症患者也预测为“健康”。
这个模型的准确率是多少?
Accuracy = 990 / 1000 = 99%
看!准确率高达 99%,但这个模型 毫无用处,因为它一个真正的癌症患者都找不出来。
这个例子说明,在类别不平衡(一个类的样本远多于另一个类)的情况下,准确率会产生严重的误导。这时,我们就需要查准率和查全率来更精细地评估模型。
二、基础:混淆矩阵 (Confusion Matrix)
要理解查准率和查全率,必须先理解混淆矩阵。混淆矩阵是一个表格,它展示了模型预测结果与真实标签之间的对比。
我们还是用上面的例子,把“癌症患者”定义为 **正类 (Positive)**,“健康人”定义为 **负类 (Negative)**。
预测为正类 (癌症) | 预测为负类 (健康) | |
---|---|---|
实际为正类 (癌症) | TP (True Positive) 真阳性 |
FN (False Negative) 假阴性 |
实际为负类 (健康) | FP (False Positive) 假阳性 |
TN (True Negative) 真阴性 |
- TP (True Positive):真实的正类,被模型正确地预测为正类。(本来是癌症,预测也是癌症)
- FN (False Negative):假的负类,即真实是正类,但被模型错误地预测为负类。(本来是癌症,漏报了,预测为健康)
- FP (False Positive):假的正类,即真实是负类,但被模型错误地预测为正类。(本来是健康,误报了,预测为癌症)
- TN (True Negative):真实的负类,被模型正确地预测为负类。(本来是健康,预测也是健康)
三、查准-率 (Precision)
查准率,又称 精确率。它回答的问题是:
“在所有被模型预测为‘正类’的样本中,有多少是真正的‘正类’?”
公式:Precision = TP / (TP + FP)
- 分母 (TP + FP):所有被模型预测为正类的样本总数(即模型“认为”是癌症的人)。
- **分子 (TP)**:其中预测对的部分。
直观理解:
查准率衡量的是你预测的“准不准”。如果你的模型预测了10个人是癌症患者 (TP+FP=10),但其中只有 8 个是真的癌症患者 (TP=8),那么查准率就是 80%。它反映了模型避免误报 (FP) 的能力。
一个比喻:
你用渔网撒网捕鱼。“查准率”就好比:在你捞上来的所有东西(鱼、虾、水草、靴子)里,鱼的比例有多高? 查准率高,意味着你捞上来的大部分都是鱼,没捞太多垃圾。
何时看重查准率?
当你希望预测为正类的结果尽可能准确时。因为“误报”的代价很高。
- 垃圾邮件过滤:你不想把重要的邮件错误地标记为垃圾邮件 (FP),宁愿放过一些垃圾邮件 (FN)。
- 股票推荐系统:推荐用户购买的股票必须是大概率上涨的,如果推荐错了 (FP),用户会亏钱。
四、查全率 (Recall)
查全率,又称 召回率。它回答的问题是:
“在所有真实为‘正类’的样本中,有多少被模型成功地找出来了?”
公式:Recall = TP / (TP + FN)
- 分母 (TP + FN):数据集中所有真实为正类的样本总数(即总共有多少癌症患者)。
- **分子 (TP)**:其中被你找出来的部分。
直观理解:
查全率衡量的是你找得“全不全”。如果总共有 10 个癌症患者 (TP+FN=10),你的模型找出了 7 个 (TP=7),那么查全率就是 70%。它反映了模型避免漏报 (FN) 的能力。
一个比喻:
还是用捕鱼的比喻。“查全率”就好比:池塘里总共有 100 条鱼,你这一网捞上来了多少条? 查全率高,意味着你把大部分鱼都捞起来了,没漏掉多少。
何时看重查全率?
当你希望尽可能地找出所有正类样本时。因为“漏报”的代价很高。
- 癌症诊断:你绝不想漏掉任何一个真正的癌症患者 (FN),宁愿误诊一些健康人 (FP) 让他们再去做进一步检查。
- 金融欺诈检测:宁愿错杀一千(将正常交易误判为欺诈),也不可放过一个(漏掉真正的欺诈交易)。
五、查准率和查全率的权衡 (Trade-off)
这两个指标通常是相互制约的。
想象一下模型的决策**门槛 (Threshold)**:
- 提高门槛(变得更“严格”):模型只有在非常有把握时才预测为“正类”。
- 结果:FP 会减少(更少误报),所以 查准率 (Precision) 会上升。
- 代价:FN 会增加(更多漏报),因为一些不太明显的正类被放过了,所以 查全率 (Recall) 会下降。
- 降低门槛(变得更“宽松”):模型稍微有点怀疑就预测为“正类”。
- 结果:FN 会减少(更少漏报),所以 查全率 (Recall) 会上升。
- 代价:FP 会增加(更多误报),因为很多模棱两可的负类被误判了,所以 查准-率 (Precision) 会下降。
这种权衡关系可以用 P-R 曲线 (Precision-Recall Curve) 来可视化。
六、F1 分数 (F1-Score):一个综合指标
既然两者相互制约,我们有时需要一个能同时兼顾两者的综合指标。F1 分数 就是查准率和查全率的 调和平均数。
公式:
$$F1 = 2 * (P * R) / (P + R)$$
- 特点:F1 分数会同时考虑 Precision 和 Recall。只有当两者都比较高时,F1 分数才会高。如果其中一个特别低,F1 分数也会被拉得很低。
- 用途:当你想在查准率和查全率之间寻求一个平衡时,F1 分数是一个很好的参考指标。
总结
指标 | 关注点 | 公式 | 通俗解释 | 适用场景 |
---|---|---|---|---|
查准率(Precision) | 预测的准确性 | TP / (TP + FP) |
在你挑出来的瓜里,保熟的比例有多高? | 误报代价高(垃圾邮件、股票推荐) |
查全率(Recall) | 查找的全面性 | TP / (TP + FN) |
瓜田里所有熟的瓜,你挑出来了多少? | 漏报代价高(疾病诊断、金融反欺诈) |
F1 分数(F1-Score) | 两者的平衡 | 调和平均数 | 保熟率和检出率的综合得分 | 需要平衡二者时 |