03 类别不平衡下如何选择评估指标:Accuracy 为什么会失效?
03 类别不平衡下如何选择评估指标Accuracy 为什么会失效在现实数据中类别经常并不平衡。例如信用卡欺诈 正常交易 99.9% 欺诈交易 0.1% 设备故障 正常状态 99% 故障状态 1% 罕见病筛查 健康人 99.5% 患者 0.5%这类问题被称为Imbalanced Classification 类别不平衡分类此时单纯使用 Accuracy 往往非常危险。一、一个 Accuracy 99% 的“垃圾模型”假设总样本10000 正常样本9900 异常样本100现在构造一个最简单的模型永远预测 Normal那么TN 9900 FN 100 TP 0 FP 0Accuracy 为Accuracy9900100000.99Accuracy\frac{9900}{10000}0.99Accuracy100009900​0.99也就是99%但是这个模型一个异常都没有发现因此Recall001000Recall\frac{0}{0100}0Recall01000​0这说明在严重类别不平衡的数据中高 Accuracy 可能完全没有意义。二、选择指标的核心不是“哪个指标最好”真正的问题应该是哪一种错误更加不能接受对于二分类模型最重要的两种错误是FP FN因此指标选择应该从错误代价开始。三、什么时候更加关注 RecallRecall 为RecallTPTPFNRecall\frac{TP}{TPFN}RecallTPFNTP​如果 FN 的代价非常高就应该更加关注 Recall。例如癌症筛查 危险设备故障 欺诈交易初筛 安全风险检测 火灾报警在癌症筛查中FN 患者有病但模型认为没病这可能比FP 健康人被建议进一步检查更加严重。因此通常希望FN 尽可能少 Recall 尽可能高四、什么时候更加关注 PrecisionPrecision 为PrecisionTPTPFPPrecision\frac{TP}{TPFP}PrecisionTPFPTP​如果 FP 的代价非常高就应该更加关注 Precision。例如自动封禁账号 自动删除内容 高成本人工复核 高价值客户营销 刑事风险预警假设模型用于自动封禁用户FP 正常用户被错误封禁那么 FP 的业务成本非常高。此时希望模型只有非常确定时 才预测 Positive也就是强调 Precision。五、Precision vs TPR为什么有时必须看 PrecisionRecall 也叫TPR True Positive Rate公式TPRTPTPFNTPR\frac{TP}{TPFN}TPRTPFNTP​TPR 只关注真实 Positive它并不知道负样本到底有多少。这在类别极度不平衡时会产生问题。六、一个关键例子假设Positive 100 Negative 99900某模型得到TP 90 FN 10 FP 999 TN 98901那么TPR901000.9TPR\frac{90}{100}0.9TPR10090​0.9也就是Recall 90%同时FPR999999000.01FPR\frac{999}{99900}0.01FPR99900999​0.01FPR 只有1%表面上看似乎很好TPR 90% FPR 1%但是 Precision 为Precision9090999≈0.0826Precision\frac{90}{90999}\approx0.0826Precision9099990​≈0.0826只有约 8.3%也就是说模型预测出来的 Positive 中超过 90% 都是假警报。原因就在于Negative 的数量远远超过 Positive即使 FPR 很低也可能产生大量 FP。因此在严重类别不平衡问题中Precision 往往比单独观察 TPR 和 FPR 更直观。七、为什么 ROC 在极端不平衡数据上也要谨慎ROC 使用TPR FPR由于FPRFPFPTNFPR\frac{FP}{FPTN}FPRFPTNFP​当 Negative 数量特别大时即使 FP 数量已经很多FPR 仍然可能很小因此 ROC 曲线可能看起来很好。但是对于“预测出来的正样本到底有多少是真的”这个问题Precision 更直接。所以极端不平衡任务中经常同时关注Precision Recall F1 PR Curve PR-AUC而不是只看 Accuracy 或 ROC-AUC。八、F1 什么时候合适F1 为F12×Precision×RecallPrecisionRecallF12\times\frac{Precision\times Recall}{PrecisionRecall}F12×PrecisionRecallPrecision×Recall​如果Precision 很重要 Recall 也很重要而且希望用一个数综合比较模型可以使用 F1。但是需要注意F1 不考虑 TN。因此当正确识别负样本本身也非常重要时不能只看 F1。九、Specificity 什么时候重要Specificity 为SpecificityTNTNFPSpecificity\frac{TN}{TNFP}SpecificityTNFPTN​它关注真正的 Negative 中有多少被正确排除。在医学检测中经常同时报告Sensitivity Specificity其中Sensitivity → 能不能找到患者 Specificity → 能不能正确排除健康人十、可以从“错误成本”选择指标一个非常实用的思路任务重点更值得关注两类数量接近错误代价类似Accuracy尽量不要漏掉正类Recall / Sensitivity预测为正时必须可靠Precision正类、负类都希望兼顾F1 Specificity Confusion Matrix希望比较阈值变化ROC / PR Curve极度类别不平衡Precision、Recall、F1、PR-AUC医疗筛查Sensitivity Specificity自动高风险动作Precision十一、不要把指标选择和阈值选择混为一谈假设模型输出概率0.91 0.73 0.55 0.42 0.21默认使用threshold 0.5并不意味着0.5 就一定是最佳阈值降低阈值通常会Recall ↑ Precision 可能 ↓提高阈值通常会Precision ↑ Recall 可能 ↓因此真实模型部署中经常需要两步第一步训练模型 第二步根据业务成本选择 threshold十二、推荐的评估思维不要问这个模型 Accuracy 是多少而应该问正类占比是多少 混淆矩阵是什么 FP 和 FN 分别是多少 Precision 是多少 Recall 是多少 Specificity 是多少 模型的 threshold 是多少 这个 threshold 为什么合理这套问题能够大幅减少对分类模型的误判。十三、总结类别不平衡时最重要的原则是不要让多数类别把少数类别的问题“淹没”。尤其是Accuracy 99%并不意味着模型好。真正需要理解的是模型漏掉了多少关键正样本 模型产生了多少假警报 这些错误各自的代价是什么下一篇将进一步讨论 threshold 改变时模型表现如何变化以及 ROC Curve 和 AUC 如何用于模型比较。

相关新闻

深入解析Spring Session分布式会话管理:从HTTP无状态到Redis存储实战

深入解析Spring Session分布式会话管理:从HTTP无状态到Redis存储实战

1. 从一个常见的“灵异”Bug说起最近在帮一个朋友排查一个线上问题,现象非常诡异:用户登录后,操作了几分钟,页面就莫名其妙地跳转回了登录页。查看日志,没有任何报错,用户会话(Session&#xff…

2026/10/6 5:01:01 阅读更多 →
qmc-decoder终极指南:3步快速解密QQ音乐加密音频

qmc-decoder终极指南:3步快速解密QQ音乐加密音频

qmc-decoder终极指南:3步快速解密QQ音乐加密音频 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder qmc-decoder是一款专业高效的音频解密工具,专门用于…

2026/10/1 15:19:59 阅读更多 →
轻松学习Zephyr: 01-学习计划

轻松学习Zephyr: 01-学习计划

我建议把这个平台定位成一个Zephyr 学习平台,而不是一个产品开发平台。你的目标应该是: 3~4 周内,能够独立使用 Zephyr 开发 STM32 和 ESP32 应用,并理解 Zephyr 的架构。 我的硬件条件: - MacBook(剩余约3…

2026/10/9 0:45:02 阅读更多 →

最新新闻

后端接口没就绪?前端用Mock与契约治理实现自救

后端接口没就绪?前端用Mock与契约治理实现自救

做前端的兄弟应该都有过这种经历:排期压到眼前,后端接口却迟迟不来,你能拿到的只有一句话“接口下周给你”,或者一封只有路径没有字段的文档。这几年 Vibe Coding 火起来之后,很多前端同学开始用 AI 助手批量生成对接代…

2026/10/14 6:43:30 阅读更多 →
PS5全能工具箱:截图导出、存档备份、远程游玩与存储扩展实战指南

PS5全能工具箱:截图导出、存档备份、远程游玩与存储扩展实战指南

前几天一位朋友入了新主机,第一件事问我:截图和录屏怎么快速弄到手机里?第二件事是问存档怎么备份比较稳。我当时就意识到,很多人对PS5的使用其实停留在"开机、玩游戏、关机"这个层面,大量日常会用到的高频操…

2026/10/14 6:43:30 阅读更多 →
deepin-boot-maker 启动盘制作工具:从镜像选择到启动盘制作的完整操作指南

deepin-boot-maker 启动盘制作工具:从镜像选择到启动盘制作的完整操作指南

桌面应用 【免费下载链接】deepin-boot-maker 项目地址: https://gitcode.com/gh_mirrors/de/deepin-boot-maker 点击查看 免费下载 deepin-boot-maker(启动盘制作工具)是一款将系统 ISO 镜像写入 U 盘等安装介质的轻量级小工具,…

2026/10/14 6:43:30 阅读更多 →
TCP Keepalive机制详解:原理、配置与高可用实践

TCP Keepalive机制详解:原理、配置与高可用实践

1. 项目概述:为什么TCP连接会“悄无声息地断掉”?你有没有遇到过这样的情况:客户端和服务端明明都还在运行,日志里也看不到任何异常报错,但某次发请求时突然卡住几秒,然后返回“Connection reset by peer”…

2026/10/14 6:43:30 阅读更多 →
AI Agent 面试题 047:Agent的环境建模(Environment Modeling)有哪些常用方法?

AI Agent 面试题 047:Agent的环境建模(Environment Modeling)有哪些常用方法?

🔥 AI Agent 面试题 047:Agent的环境建模(Environment Modeling)有哪些常用方法?摘要:本文深入解析了「Agent的环境建模(Environment Modeling)有哪些常用方法?」这一 AI…

2026/10/14 6:43:30 阅读更多 →
Hadoop+Python打造客服大数据分析与预测平台

Hadoop+Python打造客服大数据分析与预测平台

我前阵子参与了一个把大数据技术用到客服场景里的分析预测项目,数据量一上来,原来的报表工具和人工统计根本顶不住。后来逐步改成了以 Hadoop 做离线存储和清洗、用 Python 写文本分析和预测模型、再配合一套可视化大屏和预警接口的完整平台,…

2026/10/14 6:42:30 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →