02 Accuracy、Precision、Recall、Specificity 与 F1-score 02 Accuracy、Precision、Recall、Specificity 与 F1-score有了 TP、FP、TN、FN 之后就可以定义分类任务中最常见的一组评估指标Accuracy Precision Recall / Sensitivity Specificity F1-score这些指标不是互相替代的关系。它们回答的是不同问题。一、Accuracy整体预测有多准Accuracy 中文通常称为准确率定义为AccuracyTPTNTPTNFPFNAccuracy\frac{TPTN}{TPTNFPFN}AccuracyTPTNFPFNTPTN​它回答的问题是所有样本中有多少被模型预测正确例如TP 80 TN 890 FP 10 FN 20则Accuracy808908089010200.97Accuracy\frac{80890}{808901020}0.97Accuracy80890102080890​0.97即Accuracy 97%这看起来很好。但是 Accuracy 有一个非常重要的问题当类别不平衡时Accuracy 可能具有欺骗性。这个问题将在下一篇重点讨论。二、Precision预测为 Positive 的样本有多可信Precision 中文常称为精确率 查准率公式为PrecisionTPTPFPPrecision\frac{TP}{TPFP}PrecisionTPFPTP​它回答在所有被模型预测为 Positive 的样本中有多少是真的 Positive例如模型预测 100 个样本为 Positive 其中 80 个是真的 Positive 20 个其实是 Negative则Precision8080200.8Precision\frac{80}{8020}0.8Precision802080​0.8因此Precision 80%可以理解为模型只要说“这是正类”它有多大概率是可信的三、Recall真正的 Positive 被找出了多少Recall 中文常称为召回率 查全率公式为RecallTPTPFNRecall\frac{TP}{TPFN}RecallTPFNTP​Recall 也叫Sensitivity True Positive Rate TPR因此SensitivityRecallTPRSensitivityRecallTPRSensitivityRecallTPR它回答的问题是所有真正的 Positive 中有多少被模型成功发现例如真实有 100 个 Positive 模型发现了 80 个 漏掉了 20 个则Recall8080200.8Recall\frac{80}{8020}0.8Recall802080​0.8即Recall 80%四、Specificity真正的 Negative 被正确排除了多少Specificity 中文通常称为特异度 真负率公式为SpecificityTNTNFPSpecificity\frac{TN}{TNFP}SpecificityTNFPTN​它也叫True Negative Rate TNR因此SpecificityTNRSpecificityTNRSpecificityTNR它回答所有真正的 Negative 中有多少被模型正确识别为 Negative例如真实有 900 个 Negative 模型正确识别 870 个 错误报警 30 个则Specificity870870300.9667Specificity\frac{870}{87030}0.9667Specificity87030870​0.9667即Specificity ≈ 96.67%五、Precision 和 Recall 最容易混淆这两个指标的分子都是 TPPrecisionTPTPFPPrecision\frac{TP}{TPFP}PrecisionTPFPTP​RecallTPTPFNRecall\frac{TP}{TPFN}RecallTPFNTP​区别只在分母。Precision 的分母是所有预测为 Positive 的样本也就是TPFPTPFPTPFPRecall 的分母是所有真实 Positive也就是TPFNTPFNTPFN因此可以用下面的方式理解Precision → 我说是 Positive 的有多少真的是 Positive Recall → 真正的 Positive我找到了多少六、为什么 Precision 和 Recall 经常冲突假设一个模型通过概率进行分类P(Positive) threshold → Predict Positive如果降低 threshold0.8 → 0.5 → 0.3模型会把更多样本判断为 Positive。这样通常会Recall ↑因为漏掉的 Positive 更少。但是同时也可能导致FP ↑ Precision ↓反过来提高 threshold0.3 → 0.5 → 0.8模型会更加谨慎地预测 Positive。通常Precision ↑ Recall ↓这就是经典的Precision-Recall Trade-off七、F1-scorePrecision 和 Recall 的折中如果我们既关注 Precision又关注 Recall可以使用 F1-score。公式为F12×Precision×RecallPrecisionRecallF12\times\frac{Precision\times Recall}{PrecisionRecall}F12×PrecisionRecallPrecision×Recall​F1 使用的是调和平均数而不是普通平均数。为什么假设Precision 1.0 Recall 0.1普通平均数为1.00.120.55\frac{1.00.1}{2}0.5521.00.1​0.55但这个模型其实 Recall 极差。F1 为F12×1.0×0.11.00.1≈0.182F12\times\frac{1.0\times0.1}{1.00.1}\approx0.182F12×1.00.11.0×0.1​≈0.182因此 F1 会对特别低的一项进行明显惩罚。八、F-score 不只有 F1F1 默认认为Precision 和 Recall 同等重要如果希望给予 Recall 更高权重可以使用F-beta score公式为Fβ(1β2)Precision×Recallβ2×PrecisionRecallF_{\beta}(1\beta^2)\frac{Precision\times Recall}{\beta^2\times PrecisionRecall}Fβ​(1β2)β2×PrecisionRecallPrecision×Recall​其中β 1 → F1 β 1 → 更强调 Recall β 1 → 更强调 Precision例如F2通常会比 F1 更重视 Recall。九、不同指标分别关注什么指标关注的问题Accuracy总体有多少预测正确Precision预测为正的样本有多可信Recall真正的正样本找出了多少Specificity真正的负样本排除了多少F1Precision 与 Recall 的综合表现十、一个完整例子假设TP 40 FP 10 TN 930 FN 20则Accuracy4093010000.97Accuracy\frac{40930}{1000}0.97Accuracy100040930​0.97Precision4040100.8Precision\frac{40}{4010}0.8Precision401040​0.8Recall404020≈0.667Recall\frac{40}{4020}\approx0.667Recall402040​≈0.667Specificity93093010≈0.989Specificity\frac{930}{93010}\approx0.989Specificity93010930​≈0.989F12×0.8×0.6670.80.667≈0.727F12\times\frac{0.8\times0.667}{0.80.667}\approx0.727F12×0.80.6670.8×0.667​≈0.727此时可以发现Accuracy 很高97% 但是 Recall 只有约 66.7%也就是说虽然模型整体看起来非常准确但它仍然漏掉了约三分之一的正样本。这也是为什么实际任务中不能只看 Accuracy。十一、总结分类指标的选择本质上取决于FP 的代价有多高 FN 的代价有多高 正负类别是否平衡 模型最终如何被使用因此Accuracy 高并不一定意味着模型真的好下一篇将专门讨论当数据集类别不平衡时应该如何选择 Accuracy、Precision、Recall、Specificity 和 F1。

相关新闻

最新新闻

详解INSERTION-SORT执行过程及与冒泡、选择排序的对比(Python实现)

详解INSERTION-SORT执行过程及与冒泡、选择排序的对比(Python实现)

详解 INSERTION-SORT 执行过程及与冒泡、选择排序的对比(Python 实现) 目录 前言:排序算法与插入排序核心思想 一、INSERTION-SORT(插入排序)深度解析 2.1 算法核心原理 2.2 Python 代码实现(含逐行详细注释) 2.3

2026/8/13 13:54:41
构建个人智能系统:从信息管理到认知复利的AGI协同工作流

构建个人智能系统:从信息管理到认知复利的AGI协同工作流

上周,我花了一个下午,试图整理过去半年里散落在各个角落的“好东西”——那些偶然读到、觉得醍醐灌顶的文章,随手记下的代码片段,项目复盘时总结的几条经验,甚至是一些模糊的、关于某个技术趋势的直觉。结果发现&#…

2026/8/13 13:54:41
Another Redis Desktop Manager:Windows平台Redis可视化管理的保姆级指南

Another Redis Desktop Manager:Windows平台Redis可视化管理的保姆级指南

1. 项目概述:为什么我们需要一个趁手的Redis可视化工具? 如果你和我一样,日常开发、测试或者维护系统时,经常要和Redis打交道,那你肯定有过这样的体验:面对黑漆漆的命令行,敲着 KEYS * 、 GE…

2026/8/13 13:54:41
Python编程入门:从基础语法到项目实战的完整学习路径

Python编程入门:从基础语法到项目实战的完整学习路径

1. 从“Hello, World!”到独立编程:为什么Python基础值得你花时间 “学Python,从入门到放弃”,这句话在技术圈流传甚广,很多人兴致勃勃地打开教程,却在变量、循环、函数这些看似枯燥的基础概念前败下阵来。我见过太多新…

2026/8/13 13:54:41
AI测试工程师视角:RAG系统架构、测试策略与实战避坑指南

AI测试工程师视角:RAG系统架构、测试策略与实战避坑指南

1. 项目概述:从AI测试视角看RAG的价值 最近在跟几个做AI应用测试的朋友聊天,发现大家聊到RAG(检索增强生成)时,态度挺两极分化的。一部分人觉得这玩意儿不就是“搜索生成”,没啥新意;另一部分人…

2026/8/13 13:54:41
【聊天记录导出】终极攻略:3步实现微信记录永久保存,新手零门槛上手

【聊天记录导出】终极攻略:3步实现微信记录永久保存,新手零门槛上手

【聊天记录导出】终极攻略:3步实现微信记录永久保存,新手零门槛上手 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/…

2026/8/13 13:49:40