AUC值越大_模型评价——准确率、精确率与召回率与F值、宏平均与微平均、ROC曲线与AUC值...

article/2025/5/1 7:58:40

183e0f78df932e09bceb5323c75a56d5.png

在上一篇文章中(baiziyu:模型评价——训练误差与测试误差、过拟合与欠拟合、混淆矩阵)主要介绍了模型评价涉及的基本概念,本节给出一些常用的评价指标。这些指标大致可以分为三类,第一大类是普通的准确率评价指标,它给出了模型在验证集或测试集上的一个大致准确性,在sklearn中可以通过调用模型实例的score方法获得。第二大类是精确率与召回率以及宏平均与微平均。这部分指标在一般的论文实验部分都会使用。它们比起准确率能更精细地描述模型效果。并且这些指标也是信息检索中常用的指标。在sklearn中可以通过classification_report方法获得这些指标,该方法会给出每一个类别的三个具体指标,使我们能更清晰地了解系统在哪一个类别上效果比较好,在哪一个类别上还需要进行分析改进。第三大类是ROC曲线与AUC值,这两个指标主要作为不平衡分类的评价指标。当然第二大类中涉及的指标也会作为不平衡分类的可选评价指标。第三大类由于涉及作图,因此大家要拿出一点点耐心,仔细琢磨一下图线各关键点的意义,必要时可以先自己手算一下。

为了定义指标,我们引入上一篇文章中的混淆矩阵。这里以二分类为例

c05bc66313bd5db90b12f1043b43afea.png

准确率

  • 准确率

从计算公式,我们可以看到它计算的是整体的平均准确性。对于不平衡分类,准确率并不是一个好的衡量指标。这是因为一个将所有文档都不归于小类的分类器会获得很高的准确率,但是这显然并不能说明系统实际的准确性。因此对于不平衡分类来说,精确率、召回率和F值才是更好的衡量指标。

精确率、召回率、F值

  • 精确率

度量分类器对某一类别预测结果的准确性,对所有类别求和取均值后可以得到整体精确率。

  • 召回率

度量分类器对某一类别预测结果的覆盖面,对所有类别求和取均值后可以得到整体覆盖面。

  • F值

度量分类器对某一个类别预测结果的精确性和覆盖面。它是精确率和召回率的调和平均值。

宏平均与微平均

当评价多类目分类器的效果时,还经常采用宏平均和微平均两个度量方法。下表以两个类别为例说明计算方法。

e5d848c8dc8570278a7d66762f01370f.png
  • 宏平均

度量常见类效果

  • 微平均

度量稀有类效果

在sklearn中使用classification_report计算上边提到的5个指标的时候,需要说明一下类别名称和类别标记的对应关系,因此这里直接把示例代码列出了。

>>> y_true = [-1, 0, 1, 1, -1] # 实际类别值
>>> y_pred = [-1, -1, 1, 0, -1] # 预测类别值
>>> from sklearn.metrics import classification_report
>>> target_names = ['class 0', 'class 1', 'class 2']
>>> print(classification_report(y_true, y_pred, target_names=target_names))precision    recall  f1-score   supportclass 0       0.67      1.00      0.80         2class 1       0.00      0.00      0.00         1class 2       1.00      0.50      0.67         2micro avg       0.60      0.60      0.60         5macro avg       0.56      0.50      0.49         5
weighted avg       0.67      0.60      0.59         5

classification_report中target_names列表中的类别名称依次对应的是预测值去重升序排列后对应的类别整数值。因此’class 0’对应的类别是-1,’class 1’对应的类别是0,’class 2’对应的类别是1。

ROC曲线与AUC值

ROC曲线和AUC值是处理不平衡分类问题的评价方法。显示分类器真正率tpr和假正率fpr之间折中的一种图形化方法(fpr为横坐标,tpr为纵坐标)。真正率和假正率的定义将在下边介绍。一个好的分类模型的ROC曲线应尽可能靠近面积为1的正方形的左上角。AUC值是ROC曲线下的面积。AUC值越大,分类器效果越好。

  • 真正率

  • 假正率

介绍了真正率和假真率以及ROC曲线后,你应该能回答下边两个问题了。

问题1 一个随机预测正、负类别的分类器的ROC曲线是什么样的?

答:是连接(0,0)点和(1,1)点之间的对角线。

问题2 ROC曲线上的每一个点都对应于一个分类器归纳的模型。那么把每个实例都预测为正类的模型所对应的点的坐标是什么呢?把每个实例都预测为负类的模型所对应的点的坐标是什么呢?一个理想的分类模型所对应的点的坐标是什么呢?

答:TPR=1,FPR=1的点对应的模型为把每个实例都预测为正类。TPR=0,FPR=0的点对应的模型为把每个实例都预测为负类。TPR=1,FPR=0的点对应的模型为理想模型。

  • ROC曲线的绘制过程

为了能够绘制ROC曲线,分类器需要能提供预测类别的得分值,用来对预测为正类的实例按得分生序排列,最不肯定的排在前,最肯定的排在后。需要注意的是,这个得分是预测为正类(稀有类)的分值,而不是正、负类中得分最高的值。具体绘制过程如下:

(1)让模型对每一个实例进行预测,记录正类得分,并按得分将实例升序排列。

(2)从排序列表中按顺序选择第1个得分最小的记录,从该记录开始到列表结束的所有记录都被指定为正类,其他实例被指定为负类(此时显然所有实例都被指定为正类),计算混淆矩阵并计算TPR,FPR。此时,TPR=FPR=1。

(3) 从排序列表中选择下1个记录,从该记录开始到列表结束的所有记录都被指定为正类,其他实例指定为负类,计算混淆矩阵并计算TPR,FPR

(4) 重复步骤(3),直到列表中所有实例都被选择过。

(5) 以FPR为横轴,TPR为纵轴,描点绘制ROC曲线。

示例:

下表中,每一列表示一个实例,已经按照预测为正类的得分升序排列。第1行为实例的实际类别,第2行为实例被模型预测为正类的得分。请计算出第2行之后的各行表示的混淆矩阵元素值以及TPR、FPR值。

00f10e7f493a5ce94dbcc60725a96443.png

解:首先选择第1个实例,按照绘制过程的第(2)个步骤,此时所有实例都被指定为+,则比较表中第1行的实际类别,可以计算出TP=5, FP=5, TN=0, FN=0, TPR=1, FPR=1。将计算得到的值填入表中第1列相应位置。接着按照第(3)个步骤,选择第2个实例,此时从第2到第10的8个实例指定为正类,其余实例即第1个实例指定为负类,计算TP=4,FP=5,TN=0,FN=1,TPR=4/(4+1)=0.8, FPR=5/(5+0)=1。依次类推计算第3-8列的各行元素值。接下来便可以FPR为横轴,TPR为纵轴,描出表中给(fpr,tpr)点,绘制模型的ROC曲线。

d72fc767f3776bda33a3438eb1cc6346.png

示例代码

https://github.com/baiziyuandyufei/text_classification_tradition/blob/master/sklearn示例/sklearn-roc_curve和auc.ipynb​github.com

好了,今天的内容有些多就介绍到这里了。模型评价的全部内容都已介绍完毕,如果后续还有补充会再续补文章。接下来会用很快的时间把朴素贝叶斯,线性SVC,SGD Classifier写出来,这三个分类器的示例先不打算写呢,因为我觉得我们还是先把基本原理记清楚再去实践会好一些。后边在介绍了特征工程初步后会写3个文本分类的应用示例,分别是新闻文本分类,影评情感分类,英文垃圾邮件分类,3个应用示例都基于朴素贝叶斯,语言都是英语。朴素贝叶斯,线性SVC,SGD Classifier这三个分类器都是sklearn官网关于模型选择的推荐流图,我在另一篇文章(baiziyu:文本分类模型比较与选择)中介绍过,大家可以再回过头去温习一下。谢谢大家关注。


http://chatgpt.dhexx.cn/article/47ZiE48N.shtml

相关文章

AUC值越大_「机器学习速成」分类,评估指标(TP、FP、TN、FN),ROC曲线和AUC

大家好,今天我们学习【机器学习速成】之 分类,评估指标(TP、FP、TN、FN),ROC曲线和AUC。 本节介绍了如何使用逻辑回归来执行分类任务, 并探讨了如何评估分类模型的有效性。 我们 马上学三点 , 逻辑回归用作分类&#x…

AUC值越大_一文看懂ROC、AUC

评测指标是衡量一个算法是否出色的一个重要部分,好的指标能让我们这些炼丹学徒知道,练出来的丹药是否有效果。那么在机器学习中有哪些值得一探究竟的指标呢?本文就PR图,ROC、AUC、mAP这4个方面进行详细探究。 总的来说评价指标的核心得从二分类问题说起:一个类,它实际值有…

入门选手都能理解的ROC曲线与AUC值

项目github地址:bitcarmanlee easy-algorithm-interview-and-practice 欢迎大家star,留言,一起学习进步 1.ROC曲线 在信号检测理论中,接收者操作特征曲线(receiver operating characteristic curve,或者叫…

AUC值得含义和计算方法

转载自:http://baijiahao.baidu.com/s?id1597939133517926460&wfrspider&forpc 机器学习备忘录 | AUC值的含义与计算方法 浮生偷闲 18-04-17 05:32 内容导读 在机器学习领域, AUC 值经常用来评价一个二分类模型的训练效果,对于许多机…

python计算偏态、极差、方差、标准差、平均数、中位数、众数

import numpy as np lists[1,2,3,4,5,6,7,8,9]print("极差:",np.max(lists)-np.min(lists))#最大值减最小值 lists_varnp.var(lists, axisNone, dtypeNone, outNone, ddof0, keepdimsnp._NoValue) print("方差:",lists_var) lists_s…

数据分析应用统计学之分散性与变异性的测量【极差、四分位差、偏态系数、峰态系数、统计指标】

文章目录 1、极差与四分位差(R)2、方差与标准差(西格玛、V)3、偏态系数与峰态系数(SK、β)4、统计指标类型 1、极差与四分位差(R) 1)极差:称为全距&#xff…

偏态数据的观察、量化评估与处理前后的对比

在机器学习中,模型更容易从具有正态分布特性的数据中学习到有用特征。但我们经常会发现有些特征存在长尾分布,对于这种偏态分布数据,需要进行特殊的处理,本文首先观察特征分布情况,然后以量化的方式评估数据偏态程度从…

统计学学习日记:L7-离散趋势分析之偏态和峰态

一、偏态&#xff08;SK&#xff09; 1.数据偏斜程度的测度 偏态系数0为对称分布 偏态系数>0为右偏分布 偏态系数<0为左偏分布 偏态系数>1或<-1&#xff0c;被称为高度偏态分布&#xff1b;偏态系数在0.5~1或-1~-0.5之间&#xff0c;被认为是中等偏态分布&#xf…

如何处理偏态数据?

这是笔试/面试题系列的第2篇文章 在了解何为偏态数据前&#xff0c;要先从正态数据说起。 正态分布 正态分布是自然界中广泛存在的&#xff0c;我们都知道它是两头低&#xff0c;中间高&#xff0c;整个形态呈现对称钟形的一个分布&#xff0c;之所以叫正态分布&#xff0c;是…

skewness and kurtosis偏态和峰度的解释和演示、数据的偏度和峰度——df.skew()、df.kurt()

skewness (偏态) 正偏态分布(positive skewness distribution)是指频数分布的高峰偏于左侧&#xff0c;偏态系数为正值的频数分布形态。偏态分布分为正偏态和负偏态。当均值大于众数时称为正偏态&#xff1b;当均值小于众数时称为负偏态。 定义上偏度是样本的三阶标准化矩&am…

Uniapp中onShow()的应用

遇到问题&#xff1a; 在使用一些变量进行判断时&#xff0c;用完一次开始下一次判断时&#xff0c;结果会跟前一次一样&#xff0c;比如门禁中第一个房子打开后&#xff0c;切换到另外的房子&#xff0c;结果返回结果跟第一个房子一样。 原因分析&#xff1a; 用于使用了相…

uni中onLoad与onShow周期的区别

一、说明 页面周期参考网址&#xff1a;https://uniapp.dcloud.io/tutorial/page.html#lifecycle 二、通俗概括 1. onLoad先执行&#xff0c;onShow后执行 onLoad() {console.log(111); }, onShow(){console.log(222); },2. onLoad只执行一次&#xff0c;onShow监听页面可执…

uni-app小程序onShow执行两次;微信小程序onShow重复执行原因;导航栏tabBar页的onLoad函数不执行;App.vue页的onShow执行原因;onShow莫名其妙执行

1.只有五种情况会触发导航栏tabBar页的onLoad函数&#xff0c;分别是&#xff1a; –1.1&#xff1a;首次进入到导航栏tabBar页面&#xff1b; –1.2&#xff1a;从微信分享进入的导航栏tabBar页面&#xff1b; –1.3&#xff1a;识别二维码跳转到小程序的导航栏tabBar页面&…

自定义组件中,使用onLoad,onShow生命周期失效问题

的解决方法 自定义组件中&#xff0c;使用onLoad,onShow生命周期失效问题 自定义组件中&#xff0c;使用onLoad,onShow生命周期失效问题 官方文档可查阅到&#xff1a; 页面生命周期仅在page中的vue页面有效&#xff0c;而单独封装的组件中【页面周期无效】&#xff0c;但是Vu…

微信小程序onTabItemTap和onShow的执行顺序

很显然 onShow的执行顺序要比 onTabItemTap早 onTabItemTap的特性是只在当前tabbar页面生效&#xff0c;比如onTabItemTap写在home页面&#xff0c;那么只有点击了tabbar上的home才会执行。 那是否有办法让onTabItemTap早于onShow先执行那&#xff1f;经过测试找到2种办法 方…

页面生命周期onShow没有触发

现象描述&#xff1a; 通过router.push接口跳转到快应用的B页面&#xff0c;当B页面只是引用一个自定义组件XX的时候&#xff0c;B页面的onShow生命周期无法触发。如下图所示&#xff1a; 代码如下&#xff1a; B页面代码&#xff1a; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 …

ER图和EER图的区别

ER图 ER图&#xff0c;是一种逻辑模型&#xff0c;与具体落地的数据库无关&#xff0c;长这样的 EER图 是一种物理模型&#xff0c;与落地的数据库&#xff08;Mysql&#xff09;相关&#xff0c;长这样的 总结 一般做数据设计的时候会经过一下这几个流程 0.规划 1.需求分析…

数据库关系建模(ER图设计关系表)

目录 一、概述 二、基本概念 1. 关系(relation) 2. 列(column) 3. 行(row) 4. 关系表 VS 一般的表 5. 主码(主键primary key) 6. 实体完整性约束(entity integrity constraint) 7. 外码(外键foreign key) 8. 参照完整性约束(reference integrity constraints) 三、ER模型…

ER图如何画?如何根据ER图转换成表结构?示例:图书管理系统ER图

一、ER图如何画&#xff1f; 很多同学不会画ER图&#xff0c;我就以图书管理系统为例画一张ER图和ER图如何转成数据库&#xff0c;科普一下。ER图是实体、属性、关系组成的图&#xff0c;主要用于数据库概念设计的时候&#xff0c;通过业务分析画出来的图&#xff0c;最终每一个…