【分类评价指标】如何评估多(二)分类算法的性能:Acc、Precision、Recall、F1等

news2024/11/26 18:36:07

【分类评价指标】如何评估多(二)分类算法的性能:Acc、Precision、Recall、F1等

文章目录

  • 【分类评价指标】如何评估多(二)分类算法的性能:Acc、Precision、Recall、F1等
    • 1. 前言
    • 2. 二分类任务
      • 2.1 混淆矩阵
      • 2.2 Accuracy、Precision、Recall、F1 Score
        • 2.2.1 准确率(Accuracy)
        • 2.2.2 精确率(Precision)
        • 2.2.3 召回率(Recall)
        • 2.2.4 F1 Score
          • 2.2.4.1 例子1
          • 2.2.4.2 例子2
          • 2.2.4.3 解决办法
      • 2.3 P-R曲线和AP
        • 2.3.1 P-R曲线
        • 2.3.2 AP(Average-Precision)
      • 2.4 ROC曲线和AUC
        • 2.4.1 ROC的由来(例子3)
        • 2.4.2 先验概念
        • 2.4.3 ROC曲线
        • 2.4.4 AUC
      • 2.5 二分类指标小结
    • 3. 多分类任务
      • 3.1 准确率
      • 3.2 各个类别的P、R、F1、AP
      • 3.3 mAP
        • 4. 参考

1. 前言

评价指标是针对模型性能优劣的一个定量指标。一种评价指标只能反映模型一部分性能,如果选择的评价指标不合理,那么可能会得出错误的结论,故而应该针对具体的数据、模型选取不同的评价指标。

本文将介绍分类任务中的常用评价指标。

  • 二分类任务:混淆矩阵(Confuse Matrix)、准确率Acc(Accuracy)、精确率P(Precision)、召回率R(Recall)、F1 Score、P-R曲线(Precision-Recall Curve)、AP(Average-Precision)、ROC、AUC等;
  • 多分类任务:Acc、各个类别的(P、R、F1、AP)、mAP(mean-Average-Precision)等。

2. 二分类任务

2.1 混淆矩阵

针对一个二分类问题,即将实例分成正类(positive)或负类(negative),在实际分类中会出现以下四种情况:

  • 若一个实例是正类,并且被预测为正类,即为真正类TP(True Positive)
  • 若一个实例是正类,但是被预测为负类,即为假负类FN(False Negative)
  • 若一个实例是负类,但是被预测为正类,即为假正类FP(False Positive)
  • 若一个实例是负类,并且被预测为负类,即为真负类TN(True Negative)

简单记忆:阳性(Positive)代表了预测为真,阴性(Negative)代表了预测为假;True代表真实值与预测值匹配,False代表真实值与预测值不匹配。
在这里插入图片描述

2.2 Accuracy、Precision、Recall、F1 Score

有了混淆矩阵之后,我们便可以求对应的准确率(Accuracy)、精确率(Precision)、召回率(Recall)和F1 Score。

2.2.1 准确率(Accuracy)

该指标计算的是:预测正确的样本数量占总量的百分比,具体的公式如下:

A c c u r a r y = T P + T N T P + T N + F P + F N Accurary = \frac{TP+TN}{TP+TN+FP+FN} Accurary=TP+TN+FP+FNTP+TN

  • 缺点:当数据的样本不均衡,这个指标是不能评价模型的性能优劣的。
    假如一个测试集有正样本99个,负样本1个。模型把所有的样本都预测为正样本,那么模型的Accuracy为99%,看评价指标,模型的效果很好,但实际上模型没有任何预测能力。

2.2.2 精确率(Precision)

又称为查准率,是针对预测结果为正类的一个评价指标。在模型预测为正样本的结果中,真正是正样本所占的百分比,具体公式如下:

P r e c i s i o n = T P T P + F P Precision = \frac{TP}{TP+FP} Precision=TP+FPTP

  • 精准率的含义:在预测为正样本的结果中,有多少是准确的。这个指标比较谨慎,分类阈值较高。

2.2.3 召回率(Recall)

又称为查全率,是针对原始样本而言的一个评价指标。在实际为正样本中,被预测为正样本所占的百分比。具体公式如下:

R e c a l l = T P T P + F N Recall = \frac{TP}{TP+FN} Recall=TP+FNTP

  • 尽量检测数据,不遗漏数据,所谓的宁肯错杀一千,不肯放过一个,分类阈值较低。

2.2.4 F1 Score

精准率和召回率都有其自己的缺点:

  • 如果阈值较高,那么精准率会高,但是会漏掉很多数据;
  • 如果阈值较低,召回率高,但是预测的会很不准确。
2.2.4.1 例子1

假设总共有10个好苹果,10个坏苹果。针对这20个数据,模型只预测了1个好苹果,对应结果如下表:
在这里插入图片描述

  • 虽然精确率很高,但是这个模型的性能并不好。
2.2.4.2 例子2

同样总共有10个好苹果,10个坏苹果。针对这20个数据,模型把所有的苹果都预测为好苹果,对应结果如下表:
在这里插入图片描述

  • 虽然召回率很高,但是这个模型的性能并不好。
2.2.4.3 解决办法

从上述例子中,可以看到精确率和召回率是此消彼长的,如果要兼顾二者,就需要F1 Score。

F 1 = 2 ⋅ P r e c i s i o n × R e c a l l P r e c i s i o n + R e c a l l F1 =2 \cdot \frac{Precision \times Recall}{Precision + Recall} F1=2Precision+RecallPrecision×Recall

可以看出F1 Score实际上是一种调和平均数。

  • 此外还有 F β F_\beta Fβ score和 G score,也是用于平衡精确率和召回率的:

    F β = ( 1 + β 2 ) ⋅ P r e c i s i o n × R e c a l l ( β 2 ⋅ P r e c i s i o n ) + R e c a l l F_\beta = (1+{\beta}^2) \cdot \frac{Precision \times Recall}{{(\beta}^2 \cdot Precision) + Recall} Fβ=(1+β2)(β2Precision)+RecallPrecision×Recall

    G = P r e c i s i o n ⋅ R e c a l l G = \sqrt{Precision \cdot Recall} G=PrecisionRecall

2.3 P-R曲线和AP

2.3.1 P-R曲线

P-R曲线是描述精确率和召回率变化的曲线。

如何绘制:通过设置不同的阈值,模型进行预测,计算对应的精准率和召回率,然后进行绘制。
在这里插入图片描述

  • 模型与坐标轴围成的面积越大,则模型的性能越好。但一般来说,曲线下的面积是很难进行估算的。
  • 所以衍生出了“平衡点”(Break-Event Point,简称BEP),即当P=R时的取值,平衡点的取值越高,性能更优

2.3.2 AP(Average-Precision)

P-R曲线对于单个类别的结果评价是比较完善的,但并没有数值那样直观,AP能够解决这个问题,AP值的含义是P-R曲线下的均值(P-R曲线的纵坐标即为Precision,因此AP含义即为Average-Precision),理论计算公式为:

在这里插入图片描述

  • 在实际程序中,由于本身是离散点,且得到所有点后再计算代价过高,一般采用专门的近似手段计算AP。常用的方法有两种,下面进行介绍。

假如验证了10个样本得到的预测结果如下表格,以这10个样本作为例子计算该类别的AP(程序中计算AP的方法),
在这里插入图片描述
把这十个样本按照置信度由高到低的顺序排序,得到下面的表格:
在这里插入图片描述
从上到下遍历每一行,遍历到某一行时就将置信度阈值设定为当前该行的置信度,即当前行是最低预测为正例的样本,然后计算在这个置信度阈值下的Precision、Recall,得到下面的表格:
在这里插入图片描述

  • 方法1:在VOC2010之前,方法是以列表[0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]作为Recall分割值,遍历列表中每一个值作为Recall阈值,选取上面表格中Recall≥Recall阈值的所有行,这些行中最高的Precision即为这个Recall阈值对应的Precision取值,可以得到上面的表格对应的Precision列表为:[1, 1, 1, 1, 1, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85],这个列表求和除以11极为AP计算结果:10.1 / 11 = 91.82%。
  • 方法2:在VOC2010之后,方法是以Recall的所有可能取值再加上0作为Recall分割值,Recall的所有可能取值只与样本中正样本的数量有关,例如上面表格,只有6个正样本,因此就有6个可能的取值,再加上0,列表[0, 0.17, 0.33, 0.50, 0.67, 0.83, 1.0]就作为Recall分割值,然后和第一种方法类似,遍历列表中每一个值作为Recall阈值,选取上面表格中Recall≥Recall阈值的所有行,这些行中最高的Precision即为这个Recall阈值对应的Precision取值,可以得到上面的表格对应的Precision列表为:[1, 1, 1, 1, 0.85, 0.85, 0.85],这个列表求和除以列表长度即为AP计算结果:6.55 / 7 = 93.57%。

2.4 ROC曲线和AUC

2.4.1 ROC的由来(例子3)

假设有好苹果9个,坏苹果1个,模型把所有的苹果均预测为好苹果。
在这里插入图片描述

  • 我们能够得出,尽管 Precision、Recall、F1都很高,但是模型效果却不好。
  • 所以针对样本不均衡,以上指标很难区分模型的性能,就需要用到ROC和AUC

2.4.2 先验概念

在介绍ROC和AUC之前,我们需要明确以下三个概念:

  • 真正类率(true positive rate, TPR),也称为灵敏度(sensitivity),等同于召回率。刻画的是被分类器正确分类的正实例占所有正实例的比例。
    在这里插入图片描述
  • 真负类率(true negative rate, TNR),也称为特异度(specificity),刻画的是被分类器正确分类的负实例占所有负实例的比例。
    在这里插入图片描述
  • 负正类率(false positive rate, FPR),也称为1-specificity,计算的是被分类器错认为正类的负实例占所有负实例的比例。
    在这里插入图片描述

2.4.3 ROC曲线

ROC(Receiver Operating Characteristic)曲线,又称接受者操作特征曲线。曲线对应的纵坐标是TPR,横坐标是FPR。

如何绘制:设置不同的阈值,会得到不同的TPR和FPR,而随着阈值的逐渐减小,越来越多的实例被划分为正类,但是这些正类中同样也掺杂着负类,即TPR和FPR会同时增大。阈值最大时,对应坐标点为(0,0),阈值最小时,对应坐标点(1,1)。
在这里插入图片描述

  • 目标: TPR=1, FPR=0,即图中(0,1)点。故ROC曲线越靠拢(0,1)点,即,越偏离45度对角线越好。对应的就是TPR越大越好,FPR越小越好。

2.4.4 AUC

AUC(Area Under Curve)是处于ROC曲线下方的那部分面积的大小。AUC越大,代表模型的性能越好。

  • 对于2.4.1例子中的样本不均衡,对应的TPR=1,而FPR=1,能够判断模型性能不好。

如何计算AUC

  • auc的值是求roc的积分,但是求积分比较困难,所以通过转化,变为另一种求解,可查看:Wilcoxon-Mann-Witney Test。
  • 所以最终的AUC求解是通过如下公式计算所得,还需要注意的是当二元组中正负样本的预测分数相等的时候,按照0.5计算。
    在这里插入图片描述

2.5 二分类指标小结

  • 当正负样本差距不大的情况下,ROC和PR的趋势是差不多的;
  • 但是当负样本很多的时候,两者就截然不同了,P-R效果依然看似很好,但是ROC上反映效果一般。

3. 多分类任务

3.1 准确率

对于多分类任务,最直接的评价指标即为考虑全类别的准确率,即

A c c u r a r y = 分类正确的样本数 总样本数 Accurary = \frac{分类正确的样本数}{总样本数} Accurary=总样本数分类正确的样本数

  • 分类正确即只考虑预测的类别和真实的类别对应正确的情况。这是最常用也最直接的评价指标,一般模型训练过程中打印出来查看的也主要是指这个准确率。

3.2 各个类别的P、R、F1、AP

如二分类评价指标最初的说明,多分类任务可以采用二分类的手段:

  • 独立地对每个类别进行评估得到每个类别的多个二分类评价指标,这些指标可以较为准确地反映各个类别的结果情况。

因此,

  • 多分类任务中的P、R、F1即分别将每个类别单独进行考察,得到每个类别的P、R、F1指标,需要注意的是,得到P、R、F1指标就说明已经确定了置信度阈值,因此P、R指标是与置信度阈值有关系的指标,设定不同的置信度阈值会导致不一样的结果。
  • 多分类任务中的AP也与二分类中的一致,需要注意的是,AP是与置信度阈值无关的指标,能够更客观反映结果好坏。

3.3 mAP

对所有类别的AP求平均即可得到mAP指标,代表的含义即mean-Average-Precision,其中mean是对所有类别求平均。

4. 参考

【1】https://zhuanlan.zhihu.com/p/371819054
【2】https://zhuanlan.zhihu.com/p/110015537

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/364879.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

工控攻击,黑客组织GhostSec 称入侵以色列55 家Berghof PLC

“巴以冲突”在网络上依然硝烟弥漫。当地时间9月12日消息, 一个名为GhostSec的黑客组织声称入侵了以色列55台Berghof可编程逻辑控制器(PLC)。该网络攻击行为被视为“解放巴勒斯坦”运动的组成部分。 以色列工业网络安全公司OTORIO对此次事件…

JVM内存结构和GC调优

一 、JVM简介 1.1 JVM是什么? Java Virtual Machine(Java虚拟机) Write Once Run Anywhere 1.2 JDK JRE JVM Java官网 :https://docs.oracle.com/javase/8/ Reference -> Developer Guides -> 定位到: https://docs.oracle.com/javase/8/docs…

MySQL数据库——JDBC编程

文章目录一、什么是Java的JDBC二、JDBC编程三、代码整体展示一、什么是Java的JDBC JDBC,即Java Database Connectivity。意思是java数据库连接。是一种用来执行 SQL 语句的 JavaAPI,是Java中数据库的连接规范。这个 API 由 java.sql* 和 javax.sql* 包中…

Windows 环境下,使用 ESP32-S3 USB 接口进行 JTAG 调试的流程

前提 在 windows 上安装 esp-idf CMD 软件编译环境,可参考“Windows 上搭建 ESP-IDF SDK 编译环境 Visual Studio Code 软件编程环境”说明。硬件上使用 ESP32-S3 USB 接口与 PC 端建立连接,为方便测试,可使用官方发布的 ESP32-S3-DevKitC-…

“办”了三年数字化活动,这家公司成为行业独角兽

疫情三年,竟然有公司靠办活动成为行业独角兽?你没听错!持续的疫情,让各行各业的数字化进程大大提速,活动这个历史悠久的领域也不例外。在疫情期间,数字化深刻影响着各行业招聘、展览、发布会等多种活动&…

2023年新能源汽车行业研究报告

第一章 行业概况 新能源汽车,是指采用新型动力系统,完全或者主要依靠新型能源驱动的汽车,包括纯电动汽车、插电式混合动力汽车、增程式混合动力汽车和燃料电池汽车等。国际上,混合动力汽车(含中混、强混、插电式混动&…

浅谈常用的日志框架

文章目录1.为什么需要日志框架2.常见日志框架2.1.日志框架介绍2.2.市面上的日志框架3.Slf4j使用3.1.如何在系统中使用SLF4j3.2.可能存在的问题4.SpringBoot日志的默认配置5.SpringBoot指定日志文件6.切换日志框架1.为什么需要日志框架 通过日志的方式记录系统运行的过程或错误以…

vscode SSH 保存密码自动登录服务器

先在win local上拿到秘钥,然后再把这秘钥copy 进服务器 1. 创建 RSA 密钥对 第一步是在客户端机器(通常是您的计算机 win 10)上创建密钥对:打开powershell, 输入 ssh-keygen默认情况下ssh-keygen将创建一个 2048 位 RSA 密钥对…

套接字及分层模型(一)

套接字通信 1.内核开发的工程师将网络相关的头文件存储到一个专门目录include/net中,而不是存储到include/linux 2.ISO/OS和TCP/IP参考模型 应用层:网络服务与最终用户的接口; 表示层:数据的表示,安全及压缩&#xf…

SQL常用 增删改 语句

目录 1 插入语句 2 更新语句 2.1 更新单个值 2.2 更新表中的所有行 2.3 更新多个值 3 删除语句 1 插入语句 INSERT INTO 表名称 (字段名称) VALUES (值) 多个字段或值用逗号分隔字段与值的顺序要对应 我们添加后查询一下来验证结果 2 更新语句 2.1 更新单个值…

U盘安装CentOS 7 初体验

一、刻录镜像到U盘 把下载好的linux的 .iso 镜像文件 要通过刻录到U盘里才可以使用,不像虚拟机中一样可以直接导入使用。 使用软件 UltraISO 刻录到U盘上。 二、改启动方式 BIOS 改为U盘优先启动。 三、安装遇到的问题 1、找不到装有镜像的U盘盘符,…

企业级IM即时通讯私有云解决方案

信息无疑是当今社会最重要的资源之一,网络安全也成为了维护信息安全的一道防线。私有云办公通信平台成为不少企业的选择,不仅能实现自主部署,还能真正自主掌控云和数据,确保业务数据的安全、可控。然而企业如果自主研发私有云办公…

生产者消费者模型(多线程工作)

目录 1.模型前提 2.阻塞队列(消费场所) 3. 实验 4.有关效率 1.模型前提 以单生产者对单消费者为例子: 前提一:有一个缓冲区作为消费场所。 前提二:有两种功能不同的线程分别具有消费与生产的能力。 前提三&…

分布式事务框架Seata

分布式事务基础 <<分布式事务基础理论>> <<分布式事务解决方案>> Seata 一款开源的分布式事务解决方案&#xff0c;致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式&#xff0c;为用户打造一站式的…

Socket编程 | TCP服务器 之 并发阻塞模型(多进程实现)

TCP服务器IO模型 之 并发阻塞 1. 引言 在 Linux 环境下多进程的应用很多,其中最主要的就是网络/客户服务器。多进程服务器是当客户有请求时,服务器用一个子进程来处理客户请求。父进程继续等待其它客户的请求。这种方法的优点是当客户有请求时,服务器能及时处理客户,特别是…

JavaEE简单示例——动态SQL元素<where>

简单介绍&#xff1a; 在我们之前使用where关键字进行查询的时候&#xff0c;总是会在后面添加一个11恒等式&#xff0c;并且在每一个可能拼接的SQL语句前面都加上一个and关键字&#xff0c;防止当后续的所有条件都不满足的时候&#xff0c;where关键字在最后直接跟and的时候也…

系列三、约束

一、概述 1.1、定义 约束是作用于表中字段上的规则&#xff0c;用于限制存储在表中的数据。1.2、作用 保证数据库中数据的正确、有效性和完整性。1.3、分类 注意事项&#xff1a;约束是作用于表中字段上的&#xff0c;可以在创建表/修改表的时候添加约束。 二、演示 需求&am…

DEV C++的使用入门程序做算术运算

DEV C Dev-C &#xff08;有时候也称为 Dev-Cpp&#xff09;是一个免费软件&#xff0c;最早是由 BloodShed 公司开发的&#xff0c;在版本 4.9.2 之后该公司停止开发并开放源代码。然后由 Orwell 接手进行维护&#xff0c;陆续开发了几个版本&#xff0c;后来也有其他开发人员…

基于RK3399+Linux QT地面测试台多参数记录仪测试平台软件设计(二)

rk3399 是由本土芯片厂商瑞芯微&#xff08;Rockchip&#xff09;研发的高性能、低功耗“中国芯”。在 2016 年 4 月&#xff0c;rk3399 首次在香港举行的电子展上亮相。芯片使用六核大 LITTLE 处理器&#xff1a; 包括四核的 Cortex-A53 和双核的 Cortex-A72&#xff0c;主频可…

ubuntu22下phpstorm + xdebug调试php

文章目录前言环境主要步骤xedbug的安装xedbug.so的安装浏览器安装xdebug-helperphpstorm 配置xdebug前言 主要借鉴 https://blog.csdn.net/yinhangbbbbb/article/details/79247331 但是在linux下搭建还是遇到了不少问题 环境 phpstudy phpstorm xdebug 主要步骤 phpstudy、…