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

分类评估指标:准确率、精确度、召回率、F1分数、Roc详解

分类任务可以分为以下两类:

  • 二分类:类别数为二,例如垃圾邮件分类,分为垃圾邮件和非垃圾邮件两类。
  • 多分类:类别数大于二,例如将人口按年龄分类:少年、青年、中年、老年。

下面以垃圾邮件分类的二分类任务为例,介绍各个指标。我们的任务是将电子邮件列表分为两类:垃圾邮件或非垃圾邮件。我们将用整数 1(或正数)表示垃圾邮件,用 0(或负数)表示非垃圾邮件。我们的数据集里包含20个电子邮件,其中3个垃圾邮件,17个正常邮件。

准确率

准确率(Accuracy) : 准确率是分类正确的样本数占总样本数的比例。我们有20封邮件,模型正确地识别出了15封邮件的真实类别(不管是垃圾邮件还是非垃圾邮件),那么准确率就是75%。

准确性通常被用作分类性能的衡量标准,因为它计算简单且易于解释,然而在处理正负样本不平衡的数据时,它可能会产生误导。回到我们的数据集,假设分类器没有学习任何内容,只是将所有输出分类为 0(不是垃圾邮件),20个邮件里有17个都能被正确分类,这意味着 85% 的极高准确度!显然,我们不能说模型的性能很好。

优点:

  • 直观易懂,用于度量分类正确的样本与总样本数之比。
  • 对于均衡数据集(每个类的样本数相近)很有用。

缺点:

  • 在不平衡数据集上可能会产生误导性的高分数,即使模型对少数类别预测效果很差。
  • 不适合评估需要对某一类别更敏感的任务

混淆矩阵

精确率(查准率)

精确度(Precision) : 模型预测为正类的样本中,实际为正类的比例

它反映了模型预测为正类(垃圾邮件)的结果的可信度。在信息检索领域,precision也被称为“查准率

 在我们的例子中,我们有20封邮件,模型预测了4封邮件是垃圾邮件,但实际上只有1封是垃圾邮件,那么精确度就是1/4或25%。

优点:

  • 关注模型在预测为正类(例如,患病)的样本中有多少是正确的。
  • 适合在误报(false positives)成本高的情况下使用,例如垃圾邮件检测中将非垃圾邮件预测为垃圾邮件,这就是误报的成本很高,需要减少误报(FP),来提高精确率。在推荐系统中,如果系统频繁推荐用户不喜欢的产品,将导致用户体验下降

缺点:

  • 不考虑被错误分类为负类(false negatives)的正类样本。
  • 可能会忽略实际正类样本中的很大一部分。

召回率(查全率)

召回率(Recall) : 实际为正类的样本中,被模型正确预测为正类的比例。。它反映了模型捕获正类样本的能力。在信息检索领域,recall也被称为“查全率”。

优点:

  • 关注在所有实际正类样本中,有多少被模型正确预测。
  • 适合在漏报(遗漏真正的正例,即FN)代价很高的情况下使用,如疾病筛查

缺点:

  • 不考虑错误分类为正类的负类样本(false positives)。
  • 可能导致模型过分关注正类而忽略负类的预测精度。

F1分数

精确率和召回率的调和平均值,综合两者的表现。

 

适用场景:当精确率和召回率同等重要时,F1 分数是一个很好的指标,尤其是在数据不平衡的情况下。F1 分数能够平衡模型的精确性和召回率,避免过度关注某一指标。 

适用总结:

  • 准确率:数据集正负样本平衡时可用。
  • 精确率:当误判正类样本代价较高时使用(正常邮件被误分类为垃圾邮件)。
  • 召回率:当漏判正类样本代价较高时使用(疾病检测中,不希望漏筛病例)。
  • F1 分数:当需要在精确率和召回率之间取得平衡时使用,尤其适合样本类别不均衡的情况。

ROC曲线

ROC 曲线。平面的横坐标是false positive rate(FPR),纵坐标是true positive rate(TPR)。对某个分类器而言,我们可以根据其在测试样本上的表现得到一个TPR和FPR点对。这样,此分类器就可以映射成ROC平面上的一个点。

真阳率(TPR):又称召回率(Recall),表示实际为正类的样本中被模型正确预测为正类的比例。

假阳率(FPR):表示实际为负类的样本中被模型错误预测为正类的比例。

理想情况下,ROC 曲线越靠近左上角(TPR 高、FPR 低),模型性能越好,意味着模型在保持较低假阳率的情况下,能够有较高的召回率。一般情况下,这个曲线都应该处于(0, 0)和(1, 1)连线的上方。因为(0, 0)和(1, 1)连线形成的ROC曲线实际上代表的是一个随机分类器。

AUC(Area Under roc Curve)值就是处于ROC 曲线下方的那部分面积的大小。用于量化模型的总体分类能力。通常,AUC的值介于0.5到1.0之间,较大的AUC代表了较好的性能。AUC评判标准可参考如下

  • 0.5-0.7:效果较低。
  • 0.7-0.85:效果一般。
  • 0.85-0.95:效果很好。
  • 0.95-1:效果非常好。

ROC 曲线适合用于以下场景:

  1. 不平衡数据集:当数据集中正负类样本比例不均衡时,ROC 曲线仍然能反映模型在不同阈值下的表现。ROC曲线有个很好的特性:当测试集中的正负样本的分布变化的时候,ROC曲线能够基本保持不变,而P-R曲线会剧烈震荡。
  2. 阈值选择:如果你需要为模型选择最佳的分类阈值,ROC 曲线能够帮助找到能平衡 TPR 和 FPR 的最优点。

多分类任务评测

在多类别分类问题中,宏平均(Macro Average)和微平均(Micro Average)是两种常用的方法来计算整体的精确率、召回率和F1分数。这两种方法考虑了类别不平衡的情况,即不同类别的样本数量可能不同。

参考链接:

https://juejin.cn/post/7330655456882950155

什么是ROC曲线?为什么要使用ROC?以及 AUC的计算-腾讯云开发者社区-腾讯云

详解准确率、精确率、召回率、F1值等评价指标的含义-腾讯云开发者社区-腾讯云


http://www.kler.cn/news/310294.html

相关文章:

  • 单片机(Microcontroller)原理及应用
  • git拉取大文件
  • Spring 源码解读:手动实现Spring的资源管理机制
  • 图像处理与OCR识别的实践经验(1)
  • React框架搭建,看这一篇就够了,看完你会感谢我
  • 思通数科开源产品:免费的AI视频监控卫士安装指南
  • 【C++】模拟实现vector
  • Aegisub字幕自动化及函数篇(图文教程附有gif动图展示)(一)
  • 如何在 CentOS 6 上使用 RVM 安装 Ruby on Rails
  • C语言自定义类型结构体(24)
  • JAVA基础面试题(第二十二篇)MYSQL---锁、分库分表!
  • Shell篇之编写MySQL启动脚本
  • 9.17日常记录
  • 深度学习-14-深入理解BERT的基本思想和如何训练BERT模型
  • Golang | Leetcode Golang题解之第416题分割等和子集
  • golang学习笔记28——golang中实现多态与面向对象
  • 微信getUserProfile不弹出授权框
  • 编写第一个hadoop3.3.6的mapreduce程序
  • 解决 npm ERR! node-sass 和 gyp ERR! node-gyp 报错问题
  • 第十一章 【后端】商品分类管理微服务(11.4)——spring-boot-devtools
  • play-with-docker使用指南
  • 不想一直走前端,试试产品吧
  • 【AIGC半月报】AIGC大模型启元:2024.09(下)
  • 无人机之控制距离篇
  • CloudFlare问题与CDN问题
  • uni-data-select 使用 localdata 传入数据出现 不回显 | 下拉显示错误的 解决方法
  • 初识ZYNQ——FPGA学习笔记15
  • 观察者模式,回调函数,事件调度
  • K近邻算法_分类鸢尾花数据集
  • 海康威视摄像机和录像机的监控与回放