分类模型不能只看“猜对多少”。在垃圾短信、疾病筛查和风险识别中,漏掉一个正例和误判一个正常样本,代价可能完全不同。
理解分类指标,最好先从混淆矩阵开始。
混淆矩阵记录四种结果
以“垃圾短信”为正类:
| 真实情况 / 预测结果 | 预测垃圾 | 预测正常 |
|---|---|---|
| 实际垃圾 | TP | FN |
| 实际正常 | FP | TN |
TP:垃圾短信被正确识别;TN:正常短信被正确放行;FP:正常短信被误判为垃圾;FN:垃圾短信被漏掉。
Accuracy:整体猜对多少
Accuracy = (TP + TN) / 全部样本
类别比较均衡时,准确率很直观。但如果 1000 条短信中只有 10 条垃圾短信,模型把所有短信都判断为正常,也有 99% 的准确率,却完全没有识别能力。
Precision:预测为正的结果有多可靠
Precision = TP / (TP + FP)
精确率高,说明模型一旦说“这是垃圾短信”,通常是可信的。误判正常短信代价很高时,应重点关注精确率。
Recall:真正的正例找回了多少
Recall = TP / (TP + FN)
召回率高,说明真正的垃圾短信很少漏掉。疾病筛查、安全风险检测等不希望漏判的任务,通常更关注召回率。
F1:平衡 Precision 和 Recall
F1 = 2 × Precision × Recall / (Precision + Recall)
F1 是二者的调和平均。只有 Precision 和 Recall 都比较好时,F1 才会高,适合类别不均衡且两种错误都需要考虑的场景。
指标必须对应业务代价
没有一个指标永远最好。选择指标前应该问:
- 漏掉一个正例的代价是什么?
- 错判一个负例的代价是什么?
- 类别是否严重不均衡?
- 是否需要分别观察每个类别?
这一课先记住什么
Accuracy 看整体,Precision 关注误判,Recall 关注漏判,F1 在两者之间取平衡。评价模型时不要只报一个数字。
下一课会讨论模型最常见的两种学习问题:过拟合和欠拟合。
留言讨论