当前位置: 首页 > news >正文

准确率、精确率、召回率和 F1 到底怎么看?

分类模型不能只看“猜对多少”。在垃圾短信、疾病筛查和风险识别中,漏掉一个正例和误判一个正常样本,代价可能完全不同。

理解分类指标,最好先从混淆矩阵开始。

视频讲解:在官网观看本课视频

混淆矩阵记录四种结果

以“垃圾短信”为正类:

真实情况 / 预测结果预测垃圾预测正常
实际垃圾TPFN
实际正常FPTN
  • 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 如何描述不同问题。

from sklearn.metrics import accuracy_score, confusion_matrix, precision_recall_fscore_support ​ y_true = [1, 1, 1, 1, 0, 0, 0, 0] y_pred = [1, 1, 0, 0, 1, 0, 0, 0] p, r, f1, _ = precision_recall_fscore_support(y_true, y_pred, average="binary") print("混淆矩阵:\n", confusion_matrix(y_true, y_pred)) print(f"Accuracy={accuracy_score(y_true, y_pred):.3f}") print(f"Precision={p:.3f} Recall={r:.3f} F1={f1:.3f}")

运行结果:

混淆矩阵: [[3 1] [2 2]] Accuracy=0.625 Precision=0.667 Recall=0.500 F1=0.571

模型预测为正的 3 个样本里有 2 个正确,因此 Precision 为 2/3;真实正例有 4 个,只找回 2 个,因此 Recall 为 1/2。

常见误区

  1. Accuracy 高就代表模型好。类别极不平衡时,全猜多数类也可能很高。

  2. Precision 和 Recall 可以同时随意提高。固定模型下二者通常受阈值影响,需要按业务代价取舍。

动手练习

把第三个预测从0改成1,重新计算指标,并解释为什么 Recall 上升。

这一课先记住什么

Accuracy 看整体,Precision 关注误判,Recall 关注漏判,F1 在两者之间取平衡。评价模型时不要只报一个数字。

下一课会讨论模型最常见的两种学习问题:过拟合和欠拟合


本文首发于「去你想去的地方」: https://bestsdz.xyz/posts/classification-metrics/

完整学习路线、视频版和后续更新请访问原文。

http://www.jsqmd.com/news/1076509/

相关文章:

  • IDM激活脚本完整指南:3步实现永久免费下载加速方案
  • 搜狗输入法,三步变干净
  • RoI Align 的提出和思想#
  • 【IDEA安装黑盒解密】:基于JetBrains官方源码级文档(v2024.1.3 Build #IU-241.14494.242)还原安装流程与签名验证机制
  • 3步免费解锁Microsoft 365完整功能:终极Office激活钩子工具详解
  • 3步轻松搞定知网文献批量下载:告别繁琐手动操作的高效方案
  • 终极网盘下载加速指南:LinkSwift直链助手让文件传输飞起来
  • 后端别再卷CRUD了,强烈建议直接转Agent开发
  • 面向 IVD 医疗设备精密液体输送的运动物理量反馈速度补偿控制技术研究与工程实现
  • AI危险自信的本质与四步事实校验法
  • WebMCP:面向AI Agent的语义化Web交互协议栈
  • 从大偏差原理到玻色气体自由能:环路与交织图像解析
  • Linux 磁盘管理完整指南:从 Disk 到 Mount
  • Python毕设项目:基于 Echarts+Python 的图书销售预警监测系统设计与实现 基于 Echarts+Python 的图书经营可视化监测平台 (源码+文档,讲解、调试运行,定制等)
  • Airsonic:自托管音乐流媒体服务器
  • Flink SQL联结与集合操作详解
  • 昇腾950适配DeepSeek V4-Pro推理实战:CUDA转CANN避坑指南
  • 深度解析Sunshine游戏串流服务器的架构设计与技术实践
  • Java实习面试必备:核心知识点全解析
  • 计算机毕业设计之基于微信小程序主持接单程序的设定
  • AI代理命令注入漏洞剖析:从WS MCP协议风险到企业级三层防护方案
  • 告别刮削难题:MetaShark让Jellyfin中文影视库焕然一新
  • Mythos推理增强中间件:可验证AI推理的工程化实践
  • 【限时公开】JetBrains内部文档节选:IDEA中文语言包加载优先级规则(含intl.properties手动注入技巧)
  • 便携手电电源优化:FP6291 升压 IC 适配 9V 灯珠设计方案,单节锂电升压驱动 9V 高压 LED 手电筒电路设计详解
  • ROS2 SHM 零拷贝 40~50μs 完整延迟拆解
  • 猫抓浏览器扩展:免费强大的资源嗅探工具使用完全指南
  • 大屏数字人智能交互新方案:语音通话问答 + 一键调取后台数据,重塑线下大屏数字化体验
  • 智能运维2.0:从范式跃迁到落地实操——理论框架与实施指南
  • 六种扩散模型控制技术实战指南:从提示词到潜空间操作