评估分类模型—混淆矩阵Confusion Matrix与评估指标

news2024/10/6 11:42:04

对于设计好的分类模型,需要大量的数据集来对其性能进行评估,因此了解评估指标是十分重要的。

评估分类模型的具体流程:
请添加图片描述

一、二分类混淆矩阵 Confusion Matrix

严格来说,对于二分类问题,没有标签,只有正例和反例。二分类问题的混淆矩阵如下:
请添加图片描述

评估指标计算公式:

  • A c c u r a c y = T P + T N T P + T N + F P + F N Accuracy=\frac{TP+TN}{TP+TN+FP+FN} Accuracy=TP+TN+FP+FNTP+TN
  • P r e c i s i o n = T P T P + F P Precision=\frac{TP}{TP+FP} Precision=TP+FPTP
  • R e c a l l = T P T P + F N Recall=\frac{TP}{TP+FN} Recall=TP+FNTP
  • F 1 − S c o r e = 2 1 P r e c i s i o n + 1 R e c a l l = 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-Score=\frac{2}{\frac{1}{Precision} + \frac{1}{Recall}}=\frac{2 \times Precision \times Recall}{Precision + Recall} F1Score=Precision1+Recall12=Precision+Recall2×Precision×Recall
  • s p e c i f i c i t y = T N F P + T N specificity=\frac{TN}{FP+TN} specificity=FP+TNTN

下面以猫狗二分类问题为例,讨论二分类的混淆矩阵及其评估指标:
![请添加图片描述](https://img-blog.csdnimg.cn/8be2f9fec8d243e58689e969bbb75876.png#pic_center =500)

如图,在猫狗分类中中,将Dog作为正例,不是狗(猫)作为反例。上侧为预测值,左侧为真实值。主对角线(红色)为预测正确值,副对角线(绿色)为预测错误值。

假设某次猫狗分类如下:
请添加图片描述

其中:

  • T P + F P TP+FP TP+FP为数据集中狗的数量
  • F P + T N FP+TN FP+TN为数据集中猫的数量
  • T P + T N TP+TN TP+TN为模型的正确分类数量

1、正确率

A c c u r a c y = 正确分类个数 所有数据 = T P + T N T P + T N + F + F N Accuracy=\frac{正确分类个数}{所有数据}=\frac{TP+TN}{TP+TN+F{+FN}} Accuracy=所有数据正确分类个数=TP+TN+F+FNTP+TN

即,
A c c u r a c y = 45 + 35 45 + 35 + 5 + 35 = 0.8 Accuracy=\frac{45 + 35}{45 + 35 + 5 + 35} = 0.8 Accuracy=45+35+5+3545+35=0.8

2、查准率

预测为狗的数据中有多少是真正的狗
P r e c i s i o n = T P 预测的狗个数 = T P T P + F P Precision=\frac{TP}{预测的狗个数}=\frac{TP}{TP+FP} Precision=预测的狗个数TP=TP+FPTP
即,
p r e c i s i o n = 45 45 + 15 = 0.75 precision=\frac{45}{45 + 15} = 0.75 precision=45+1545=0.75

3、召回率、查全率、敏感性

真实是狗的数据中有多少被检测出来
R e c a l l = T P 真实的狗的个数 = T P T P + F N Recall=\frac{TP}{真实的狗的个数}=\frac{TP}{TP+FN} Recall=真实的狗的个数TP=TP+FNTP
即,
R e c a l l = 45 45 + 5 = 0.9 Recall=\frac{45}{45 + 5} = 0.9 Recall=45+545=0.9

4、F1 Score

F1 Score是Precision和Recall的调和平均数,综合反映分类器的Precision和Recall。即,单独 P r e c i s i n o Precisino Precisino R e c a l l Recall Recall有一个高,F1-Score都不会高。(可以类比于两个电阻并联,一个电阻高、一个电阻低,结果还是低)
F 1 − S c o r e = 2 1 P r e c i s i o n + 1 R e c a l l = 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-Score=\frac{2}{\frac{1}{Precision} + \frac{1}{Recall}}=\frac{2 \times Precision \times Recall}{Precision + Recall} F1Score=Precision1+Recall12=Precision+Recall2×Precision×Recall
即,
F 1 − S c o r e = 2 × 0.75 × 0.9 0.75 + 0.9 = 0.82 F1-Score=\frac{2 \times 0.75 \times 0.9}{0.75 + 0.9}=0.82 F1Score=0.75+0.92×0.75×0.9=0.82

5、特异性

真实为猫(负例)中有多少被选中
s p e c i f i c i t y = T N 真实为猫的数量 = T N F P + T N specificity=\frac{TN}{真实为猫的数量}=\frac{TN}{FP+TN} specificity=真实为猫的数量TN=FP+TNTN
即,
s p e c i f i c i t y = 35 15 + 35 = 0.7 specificity=\frac{35}{15 + 35} = 0.7 specificity=15+3535=0.7

二、多分类混淆矩阵 Multiclass Classifiers

多分类混淆矩阵与二分类十分相似,只是在计算precision、recall等时需要针对每个类单独计算。

例如:

请添加图片描述

  • A c c u r a c y = 15 + 12 + 22 15 + 2 + 3 + 6 + 12 + 4 + 22 = 0.7656 Accuracy=\frac{15+12+22}{15+2+3+6+12+4+22}=0.7656 Accuracy=15+2+3+6+12+4+2215+12+22=0.7656

  • 自行车: P r e c i s i o n = 15 15 + 6 = 0.71 Precision=\frac{15}{15 + 6}=0.71 Precision=15+615=0.71 R e a c a l l = 15 15 + 2 + 3 = 0.75 Reacall=\frac{15}{15 + 2 + 3}=0.75 Reacall=15+2+315=0.75

  • 摩托车: P r e c i s i o n = 12 2 + 12 + 4 = 0.66 Precision=\frac{12}{2 + 12 + 4}=0.66 Precision=2+12+412=0.66 R e a c a l l = 12 12 + 6 = 0.66 Reacall=\frac{12}{12 + 6}=0.66 Reacall=12+612=0.66

  • 轿车: P r e c i s i o n = 22 22 + 3 = 0.88 Precision=\frac{22}{22 + 3}=0.88 Precision=22+322=0.88 R e a c a l l = 22 22 + 4 = 0.85 Reacall=\frac{22}{22 + 4}=0.85 Reacall=22+422=0.85

  • 平均: P r e c i s i o n = 0.71 + 0.66 + 0.88 3 = 0.75 Precision=\frac{0.71+0.66+0.88}{3}=0.75 Precision=30.71+0.66+0.88=0.75 R e c a l l = 0.75 + 0.66 + 0.85 3 = 0.75 Recall=\frac{0.75+0.66+0.85}{3}=0.75 Recall=30.75+0.66+0.85=0.75

  • F1 Score: F 1 − S c o r e = 2 × P r e c i s o n × R e c a l l P r e c i s i o n × R e c a l l = 2 × 0.75 × 0.75 0.75 + 0.75 = 0.75 F1-Score=\frac{2 \times Precison \times Recall}{Precision \times Recall} = \frac{2 \times 0.75 \times 0.75}{0.75 + 0.75}=0.75 F1Score=Precision×Recall2×Precison×Recall=0.75+0.752×0.75×0.75=0.75

    多分类F1 Score时每一类F1 Score的平均值。

在多分类混淆矩阵中,热力图的形式较为常见,如图:

请添加图片描述

三、ROC曲线(受试者工作特征曲线)Receiver Operating Characteristic Curve

FPR(伪正类率): F P R = F P F P + T N FPR=\frac{FP}{FP+TN} FPR=FP+TNFP,即负类数据被分成正类的比例

TPR(真正类率): T P R = T P T P + F N TPR=\frac{TP}{TP+FN} TPR=TP+FNTP,即正类数据中被分成正类的比例

1、ROC曲线直观理解

ROC曲线起源于二战时期雷达兵对雷达信号的判断。雷达兵的任务是解析雷达信号,但雷达信号含有噪声(如一只大鸟),所以每当雷达屏幕出现信号时,雷达兵就需对其进行判断。有的雷达兵比较谨慎(阈值低),所有信号都判断为敌机;有的士兵比较乐观(阈值高),所有信号都判断为大鸟。一下是一位雷达兵一天的判断结果:

请添加图片描述

此时:

  • T P R = T P T P + F N = 1 TPR=\frac{TP}{TP + FN} = 1 TPR=TP+FNTP=1
  • F P R = F P F P + T N = 0.5 FPR=\frac{FP}{FP+TN}=0.5 FPR=FP+TNFP=0.5

对于系统来说,我们希望TPR越高越好,因为这样可以把所有的敌机都检测出来。同时,我们希望FPR越低越好,因为这样可以减少误判,即理想情况下, T P R = 1 TPR=1 TPR=1 F P R = 0 FPR=0 FPR=0。但是,对一般的系统而言,两者不可兼得:如果降低士兵的阈值,那么理想情况下敌机都会被判断出来,但是有些飞鸟不可避免的也会被判断为敌机,这会导致 T P R TPR TPR高的同时 F P R FPR FPR也高;相对应的,若提高士兵的阈值,那么理想情况下所有的飞鸟都不会被判断为敌机,但是有些敌机不可避免的被判断为飞鸟(这会对己方士兵造成巨大伤害),这会导致 F P R FPR FPR低的同时 T P R TPR TPR也低。因此,一般情况下,ROC曲线是一个正比例递增函数,且在 y = x y=x y=x曲线的上方。

2、ROC曲线绘制原理


本图在http://www.navan.name/roc/中绘制,可以实时动态交互。读者可以边看边更改ROC曲线设置加深理解。

在上图中,蓝色曲线表示负例,红色表示正例,黑粗色竖线表示阈值。

左上与右上是站在士兵(阈值)的角度,此时,雷达(分类器)的性能是确定的。即,ROC曲线是确定的,改变阈值只是改变ROC曲线上的红色坐标点。

如左上图:若阈值选的过低,则正例全被判断为正例( T P R = 1 TPR=1 TPR=1),但是负例也有大部分被判断为正例( F P R FPR FPR接近1),此时ROC曲线中的坐标点在右上角。

如右上图:若阈值选的过高,则负例全被判断为负例( F P R = 0 FPR=0 FPR=0),但正例也有大部分被判断为负例( T P R TPR TPR接近0),此时ROC曲线中的坐标点在左下角。

若阈值选在正例与负例的中间位置,那么 T P R TPR TPR值比较高, F P R FPR FPR值比较低,是一个比较理想的状态。

左下与右下是站在雷达(分类器)的角度。

如左下图:若分类器性能不足,则正例与负例就是相互包含,这时ROC曲线就趋近于 y = x y=x y=x函数(即FPR增加多少,TPR减少多少)。

如右下图,若分类器性能很好,则正例和负例就会”分“的很开,这时ROC曲线就越趋近于一个直角。理想情况下是正例与负例完全分开,若阈值选取恰当,就会实现 T P R = 1 TPR=1 TPR=1 F P R = 0 FPR=0 FPR=0,就是ROC曲线矩形的左上角。

3、AUC曲线

AUC,(Area Under Curve),ROC曲线下的面积,显然这个面积小于1,又因为ROC曲线一般都处于y=x这条直线的上方,所以AUC一般在0.5到1之间。AUC值相较于ROC曲线可以更好的量化分类器的性能。

AUC的含义为,当随机挑选一个正样本和一个负样本,根据当前的分类器计算得到的score将这个正样本排在负样本前面的概率。

从AUC判断分类器(预测模型)优劣的标准:

  • AUC = 1,是完美分类器,采用这个预测模型时,存在至少一个阈值能得出完美预测。绝大多数预测的场合,不存在完美分类器。
  • 0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。
  • AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。
  • AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。

4、ROC曲线优点

ROC曲线可以很好的应对正负样本失衡的情况。

ROC曲线有个很好的特性:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化。

这是因为,在ROC曲线的计算公式中, T P R TPR TPR只针对正例计算, F P R FPR FPR只针对负例计算。因此,即使正负样本比例失衡或者正负样本的比例随时间变化,ROC曲线也不会发生较大变化。

A c c u r a c y Accuracy Accuracy R e c a l l Recall Recall P r e c i s i o n Precision Precision计算公式中需要同时考虑正例、负例,当正例负例比例变化时,其数值会受到较大的影响。

四、正负样本失衡时的分类指标

1、正负样本均衡数据集

S.NO.123456789101112131415
真实标签000000001111111
预测—模型10.10.10.10.10.10.10.60.60.50.50.90.90.90.90.9
预测—模型20.60.60.60.60.60.60.60.60.70.70.70.70.80.80.8
F1 阈值=0.5F1最好情况ROC-AUCLogLoss
模型10.880.880.940.28
模型20.67110.6

从交叉熵损失来说M1的效果远好于M2,虽然M2可以很好的对数据进行分类,但是0.6与0的差距还是有点大,这也是为什么在分类问题中常用softmax而不用回归的原因。

2、负样本远多于正样本

S.NO.123456789101112131415
真实标签000000000000011
预测—模型10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.9
预测—模型20.10.10.10.10.10.10.10.10.10.10.10.10.90.90.9
F1 阈值=0.5ROC-AUCLogLoss
模型10.880.830.24
模型20.960.960.24

在本数据集中,模型1将样例14分类为负例FN,模型2将样例13分类为正例FP。对于正样本数量少的情况,我们希望将所有正样本都检测出来(模型2),而不是”随大流“(模型1),因此模型2相比于模型1效果要好,这点在F1-Score和ROC-AUC都可以体现出来。

3、正样本数量远多于负样本

S.NO.123456789101112131415
真实标签000111111111111
预测—模型10.10.10.90.90.90.90.90.90.90.90.90.90.90.90.9
预测—模型20.10.10.10.10.90.90.90.90.90.90.90.90.90.90.9
F1 阈值=0.5ROC-AUCLogLoss
模型10.9630.830.24
模型20.960.960.24

对于正样本数量远多于负样本的情况下,我们希望尽可能的将负样本检测出来。这时,ROC-AUC比较适用。

4、总结

  • 对数损失不适用于样本不均衡时的分类评估指标
  • ROC-AUC可作为样本正负不均衡时的分类评估指标
  • 如果想让少数情况被正确预测,可以选择ROC-AUC作为评估指标

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

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

相关文章

【C】模拟实现memcpy,memmove内存函数

目录 内存函数模拟实现 1、memcpy模拟实现 2、memmove模拟实现 3、测试案例代码 内存函数模拟实现 C 库函数 memcpy 从存储区 str2 复制 n 个字节到存储区 str1。这个函数在遇到\0的时候并不会停下来。如果str1和str2有任何的重叠&#xff0c;复制的结果都是未定义的。 me…

使用Notepad++对比两个文件代码方法

大家在使用Notepad的时候&#xff0c;需要对编辑的两个文件进行比较&#xff0c;找出两个文件代码的区别&#xff0c;快速进行编辑修改&#xff0c;那么Notepad如何对比文件&#xff0c;下面小编就给大家带来Notepad对比两个文件代码方法。 Notepad官方中文免费版&#xff1a;…

LinkedIn领英在什么情况下容易被封,提前学习避免进坑

领英在什么情况下容易被封 01.同一个人注册使用多个领英帐号。 02.多个人共同使用同一个领英帐号。 03.虚假资料注册领英账号&#xff0c;常见于注册领英账号的时候初始姓名随便填写或胡编乱造&#xff0c;注册时使用了网络虚拟的手机号码或邮箱等。 04.领英帐号的个人档案资料…

MySQL --- DQL --- 案例

DQL的基本语法分为五个部分已经学习完毕了&#xff0c;接下来运用所掌握的DQL语句的语法来完成两个案例。 1. 案例一 案例&#xff1a;根据需求完成员工管理的条件分页查询 分析&#xff1a;根据输入的条件&#xff0c;查询第1页数据 在员工管理的列表上方有一些查询条件&…

springMVC第一次作业及练习

1、首先我们导入网站的项目进行测试时网址直接输入教程给的localhost:8080/springmvc/index.jsp 会是一片空白&#xff0c;把jsp删掉就好。因为加上jsp会直接访问jsp页面&#xff0c;此时的页面没有被服务器处理。 2、测试无误后就开始跟教程走 两个xml文件的配置&#xff1a…

超实用的开源自动化测试框架强烈推荐

随着计算机技术人员的大量增加&#xff0c;通过编写代码来进行测试成为一种更为高效的测试方式&#xff0c;由此而诞生了以计算机语言为基础的自动化测试方案&#xff0c;当然测试工程师需要具备代码能力。 今天我们就结合当前的主流编程语言&#xff0c;分别三种环境下各自的自…

触摸屏与三菱PLC之间无线MODBUS通讯实例

在工厂里&#xff0c;触摸屏往往位于程控室内&#xff0c;作为控制多个不同位置PLC的主站设备。因为触摸屏和plc所处位置距离较为分散&#xff0c;重新铺设电缆线工期长&#xff0c;成本高&#xff0c;故采用无线方式解决触摸屏与PLC之间的通讯问题。 一、方案概述 本方案是威…

最近颁发的“吴文俊奖”,见证了中国AI走向产业之路

“任何足够先进的技术&#xff0c;初看起来都与魔法无异”——这是著名科幻作家克拉克总结的第三定律。 今年以来ChatGPT掀起的智能交互变革&#xff0c;大语言模型的智能涌现能力&#xff0c;在很多人眼里&#xff0c;真的就像魔法一样。 当然&#xff0c;大家心知肚明&#x…

环评制图丨最新导则下的生态系统、土地利用、植被覆盖、适宜生境分布图等制图

根据最新生态环境影响评价导则&#xff0c;结合生态环评内容庞杂、综合性强的特点&#xff0c;以既包括陆域、又包括水域的项目为主要案例&#xff0c;对生态环评的具体流程及所需内容进行系统阐述。利用Rstudio、Fragstats等软件分析计算生态环评中所需各种指数&#xff0c;利…

python计算分类模型的评价指标

目录 1、混淆矩阵 2、代码实现 2.1、OA 2.2、AA 2.3、kappa 2.4、用户精度(User Accuracy, UA) 2.5、生产者精度(Producer Accuracy, PA) 2.6、f1_score 2.7、混淆矩阵 2.8、分类报告 1、混淆矩阵 以二分类问题为例&#xff0c;混淆矩阵表现形式如下&#xff1a; T…

Linux系统下的文件操作

目录 一、文件理解 二、系统级的文件操作 1、打开open 2、关闭close 3、写入write 4、读取read 三、文件描述符 四、重定向 1、dup2函数 2、追加重定向 3、输入重定向 五、缓冲区 1、缓冲区存在的意义 2、缓冲区的刷新策略 一、文件理解 在Linux中&#xff0c;有…

Linux多线程(2)线程安全(同步与互斥)

1.线程安全 概念 在多线程程序中&#xff0c;涉及到了对共享资源的操作&#xff0c;则有可能导致数据的二义性&#xff0c;而线程安全指的是&#xff0c;就算对共享资源进行操作也不会导致数据二义。 总结&#xff1a;多线程中对共享资源的操作不会出现问题。 实现&#xff1a;…

【AUTOSA】

目录 一、概述 二、限制与约束 三、功能描述 3.1 网络通信模式请求的转换 3.2 当前网络通信方式的输出 3.3 外围设备的控制 3.3.1 以太网接口控制器 3.4 多网络 3.5 网络模式状态机 3.5.1 初始化 3.5.2 在亚状态ETHSM_STATE_OFFLINE中的行为 3.5.3 子状态ETHSM_STA…

深入学习MYSQL-数据操纵及视图

前言 本博客中的例子和文字大部分来源于书籍《mysql必会知识》&#xff0c;后续会根据更多的书籍不断完善此笔记。 插入操作 可以这种方式向数据库插入两条数据&#xff0c;mysql和pg都支持这种写法。在实战中我们应该更多的使用这种写法&#xff0c;因为数据库的批量操作会…

TCP之滑动窗口和流量控制

TCP 利用发送字节数和接收字节数&#xff0c;这个二元组的唯一性保证顺序。讨论下保证顺序的具体算法&#xff0c;以及如何在保证顺序的基础上&#xff0c;同时追求更高的吞吐量。——TCP 的滑动窗口算法。 TCP 作为一个传输层协议&#xff0c;最核心的能力是传输。传输需要保证…

前端CSS学习(一)

1、基础认知 CSS概述&#xff1a;CSS:层叠样式表(Cascading style sheets)CSS作用是给页面中的HTML标签设置样式&#xff0c;起到美化修饰网页的作用CSS语法规则&#xff1a;CsS写在style标签中&#xff0c;style标签一般写在head标签里面&#xff0c; title 标签下面<!DOC…

AI类软件项目的应用场景

AI类的APP可以做很多事情&#xff0c;现在在很多业行都有具体的应用&#xff0c;从语音识别、图像识别到智能客服等都是不错的应用方向&#xff0c;在AI项目的时候一定要注意用户隐私&#xff0c;否则可能会带来不少潜在的问题。今天和大家分享一下这方面的内容&#xff0c;希望…

Call for Papers丨第三届GLB@KDD‘23 Workshop

鉴于介绍新数据集和Benchmark研究往往需要不同于常规论文的评审标准&#xff0c;计算机视觉和自然语言处理领域&#xff0c;以及最近的NeurIPS会议&#xff0c;都有专门致力于建立新Benchmark数据集和任务的Conference Track。然而在图机器学习领域&#xff0c;我们还没有类似的…

在 IDEA 中创建 Spring Boot 项目的方式(详细步骤教程)

开发环境 以下是我的开发环境 JDK 1.8Maven 3.6.3IDEA 2019&#xff08;2019 无所畏惧&#xff0c;即使现在已经 2023 年了哈哈哈&#xff09; 使用 Maven 的方式创建 Spring Boot 项目 下面的内容可能会因 IDEA 版本不同&#xff0c;而有些选项不同&#xff0c;但是大同小…

若依定制化改造

若依定制化改造 1 前端1.1 去除开屏加载动画1.2 去除登录时验证码1.3 修改网站标题&#xff08;主要是去除“若依”字样&#xff09; 2 后端2.1 用本地缓存替换Redis&#xff08;未完成&#xff09; 1 前端 1.1 去除开屏加载动画 做法&#xff1a; 效果&#xff1a; 这样子那…