机器学习中的分类问题:如何选择和理解性能衡量标准

news2024/12/26 0:22:00

文章目录

  • 🍋引言
  • 🍋为什么需要分类问题的性能衡量标准?
  • 🍋常用的分类问题衡量标准
  • 🍋混淆矩阵-精确率-召回率
  • 🍋PR曲线和ROC曲线
    • 🍋PR曲线
    • 🍋ROC曲线
    • 🍋PR vs. ROC
  • 🍋根据情境选择适当的性能度量

🍋引言

当涉及到机器学习和数据科学中的分类问题时,评估模型的性能至关重要。选择适当的性能衡量标准有助于我们了解模型的效果,并作出有根据的决策。本博客将介绍一些常用的分类问题衡量标准,以及它们在不同情境下的应用。

🍋为什么需要分类问题的性能衡量标准?

在机器学习中,分类问题是一类非常常见的任务。它包括将数据点分为两个或多个不同的类别或标签。例如,我们可以使用分类算法来预测电子邮件是否为垃圾邮件,患者是否患有某种疾病,图像中的对象是什么等等。对于这些问题,我们需要一种方式来评估模型的性能,以便选择最合适的模型、调整参数,并最终在实际应用中做出可靠的决策。

🍋常用的分类问题衡量标准

以下是一些常用的分类问题性能衡量标准:

  • 准确度(Accuracy)
    准确度是最简单的性能衡量标准之一。它表示模型正确分类的样本数与总样本数之比。
    适用情况:准确度适用于各个类别数量差距不大的情况,其中每个类别的重要性相似。

  • 精确率(Precision)
    精确率是指模型正确预测正类别样本的比例,它是真正例(True Positives, TP)与真正例与假正例之和(TP + False Positives, FP)的比值。
    适用情况:当假正例的成本很高时,精确率是一个重要的度量标准,例如,医学诊断中。

  • 召回率(Recall)
    召回率是指模型正确预测正类别样本的比例,它是真正例(TP)与真正例与假负例(False Negatives, FN)之和的比值。
    适用情况:当假负例的成本很高时,召回率是一个关键的性能度量,例如,安全检测中。

  • F1分数(F1 Score)
    F1分数是精确率和召回率的调和平均值,它可以平衡精确率和召回率之间的权衡关系。
    适用情况:在需要同时考虑精确率和召回率的情况下,F1分数是一个有用的度量标准。

  • ROC曲线和AUC(Receiver Operating Characteristic Curve and Area Under Curve):
    ROC曲线是一个用于可视化分类器性能的工具,而AUC是ROC曲线下的面积,用于量化分类器的性能。
    适用情况:ROC曲线和AUC通常用于二进制分类问题,特别是在不同阈值下比较模型性能时。

🍋混淆矩阵-精确率-召回率

首先需要导入一个库,其实就是精确率、召回率、混淆矩阵,还有一些必要的库

from sklearn.metrics import precision_score,recall_score,confusion_matrix
from sklearn.datasets import load_digits
import numpy as np
from sklearn.model_selection import train_test_split

接下来我们准备数据

digits  =load_digits()
y = digits.target.copy()
X = digits.data
y [digits.target==8]=1
y [digits.target!=8]=0

y采取copy是因为,后面会报错,所以还是不要在原数据进行修改

这段代码的主要目的是将手写数字数据集转化为一个二元分类问题,其中目标是判断一个手写数字是否为数字8(标签为1)或不是数字8(标签为0)

接下来进行数据集切割,并进行拟合

X_train,X_test,y_train,y_test = train_test_split(X,y,random_state=666)
log_reg = LogisticRegression(max_iter=1000)
log_reg.fit(X_train,y_train)

max_iter参数用于指定模型训练的最大迭代次数,这里设置为1000,以确保模型在训练期间能够收敛到一个合适的解。

接下来进行准确率的计算,混淆矩阵的生成,以及精确率、召回率的计算

log_reg.score(X_test,y_test)

运行结果如下

在这里插入图片描述

confusion_matrix(y_test,log_reg.predict(X_test))

运行结果如下
在这里插入图片描述

precision_score(y_test,log_reg.predict(X_test))

运行结果如下
在这里插入图片描述

recall_score(y_test,log_reg.predict(X_test))

运行结果如下
在这里插入图片描述

最后我们来看看f1的情况,这里我们需要导入一个库

from sklearn.metrics import f1_score
f1_score(y_test,log_reg.predict(X_test))

运行结果如下

在这里插入图片描述

🍋PR曲线和ROC曲线

🍋PR曲线

PR曲线是评估二分类模型性能的一种重要工具。它关注的是模型在正类别上的性能,特别是在识别正类别时的准确性和召回率。

准确性(Precision是指模型将正类别的样本正确分类为正类别的比例。它的计算公式如下:

Precision=TPTP+FPPrecision=TP+FPTP​

其中, T P TP TP代表真正例(True Positives), F P FP FP代表假正例(False Positives)。

召回率(Recall是指模型成功识别正类别的样本的比例。它的计算公式如下:

Recall=TPTP+FNRecall=TP+FNTP​

其中, F N FN FN代表假阴性(False Negatives)。

PR曲线以不同的阈值作为横轴,Precision和Recall作为纵轴,通过绘制不同阈值下的Precision-Recall点来可视化模型性能。一条PR曲线越靠近左上角,模型性能越好。

具体实现如下
接下来我们使用如下代码计算逻辑回归模型在测试数据集 X_test 上的决策函数值

log_reg.decision_function(X_test)[:5]

之后我们导一下库

from sklearn.metrics import precision_recall_curve

并且调用这个曲线,并将数据保存在定义的三个变量中

pre,recall,thresholds = precision_recall_curve(y_test,log_reg.decision_function(X_test))

然后我们绘制一下

import matplotlib.pyplot as plt
plt.plot(pre,recall)

运行结果如下
在这里插入图片描述

🍋ROC曲线

ROC曲线是另一种用于评估分类模型性能的工具,它关注的是模型的真正例率(True Positive Rate)和假正例率(False Positive Rate)。

真正例率(True Positive Rate,也称为召回率是指模型成功识别正类别的样本的比例,计算方式与PR曲线中的Recall相同。

假正例率(False Positive Rate是指模型错误地将负类别的样本分类为正类别的比例,计算方式如下:

FPR=FPFP+TNFPR=FP+TNFP​

其中, F P FP FP代表假正例(False Positives), T N TN TN代表真负例(True Negatives)。

ROC曲线以不同的阈值作为横轴,True Positive Rate作为纵轴,通过绘制不同阈值下的True Positive Rate和False Positive Rate点来可视化模型性能。一条ROC曲线越靠近左上角,模型性能越好。
绘制ROC曲线与PR曲线类似

from sklearn.metrics import roc_curve,roc_auc_score
fpr,tpr,thresholds =  roc_curve(y_test,log_reg.decision_function(X_test))
plt.plot(fpr,tpr)

运行结果如下
在这里插入图片描述

这里也可以看看ROC曲线的面积情况
一般来说,AUC越接近1,模型性能越好

roc_auc_score(y_test,log_reg.decision_function(X_test))

运行结果如下
在这里插入图片描述

🍋PR vs. ROC

PR曲线和ROC曲线都有其独特的用途和适用场景。PR曲线更适合于不平衡类别分布的问题,因为它关注的是正类别的准确性和召回率。ROC曲线在不同类别之间的代价不平衡问题中表现较好,因为它关注的是True Positive Rate和False Positive Rate。

绘制这两种曲线的过程相似,通常需要使用模型的预测概率来确定不同的阈值,并计算相应的性能指标。在Python中,您可以使用Scikit-Learn库来轻松生成这些曲线。

🍋根据情境选择适当的性能度量

在选择性能度量标准时,需要考虑问题的具体情境和目标。不同的问题可能需要不同的度量标准。例如,如果我们正在处理医学诊断问题,其中假负例可能导致严重后果,那么我们可能更关注召回率。另一方面,如果我们正在过滤垃圾邮件,我们可能更关注精确率,因为将合法邮件错误地标记为垃圾邮件可能会引起麻烦。

此外,有时候需要综合考虑多个性能度量标准。例如,使用F1分数来平衡精确率和召回率,或者使用ROC曲线和AUC来评估模型在不同阈值下的性能表现。

请添加图片描述

挑战与创造都是很痛苦的,但是很充实。

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

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

相关文章

外汇天眼:外汇新手开展交易需要做哪些准备,你都知道么?

外汇交易,如同任何一项专业工作,需要不断积累知识和经验,以及稳定的心态。正如古语所说:“工欲善其事,必先利其器。” 在外汇市场,这句话同样适用。在踏上外汇交易之旅之前,我们迫切需要做好外汇…

Windows清除激活标志的方法

大家在购买电脑或笔记本的时候,有的商家给出的7天无理由退货,并不是真正的无理由,往往附件条件windows是不能激活的,如果激活了就只能换不能退了。 卖家提出的条件也特别滑稽可笑,你想不联网怎么体验啊?不…

一百八十五、大数据离线数仓完整流程——步骤四、在Hive的DWD层建动态分区表并动态加载数据

一、目的 经过6个月的奋斗,项目的离线数仓部分终于可以上线了,因此整理一下离线数仓的整个流程,既是大家提供一个案例经验,也是对自己近半年的工作进行一个总结。 二、数仓实施步骤 (四)步骤四、在Hive的…

最新Python大数据之Excel进阶

文章目录 Excel图表类型了解有哪些图表类型 Excel图表使用图表的创建方式利用固定数据区域创建图表编辑数据系列添加数据标签格式化图表 Excel数据透视表数据透视表对原始数据的要求创建数据透视表数据透视表字段布局将数据透视图变成普通图表 Excel图表类型 为了揭示数据规律…

入门级制作电子期刊的网站推荐

随着数字化时代的到来,越来越多的人开始尝试制作自己的电子期刊。如果你也是其中的一员,那么这篇文章可以帮助你制作电子期刊。无论是初学者还是有一定经验的制作者,都能快速完成高质量的电子期刊制作 小编经常使用的工具是-----FLBOOK在线制…

Python爬虫在Web应用自动化测试中的应用

在Web应用开发过程中,自动化测试是确保应用质量和稳定性的重要环节。本文将介绍如何使用Python爬虫与自动化测试技术相结合,实现对Web应用进行自动化测试的方法和步骤。通过这种结合,我们可以提高测试效率、减少人力成本,并确保应…

RocketMQ 消息重试机制

文章目录 消息发送重试重试触发条件重试流程重试间隔重试常见问题消息流控机制流控触发条件 生产者控制消息发送重试次数gRPC 客户端remoting 客户端 消费重试重试触发条件PushConsumer 消费重试策略PushConsumer 重试间隔时间修改 PushConsumer 最大重试次数gRPC 协议端口Remo…

华为数字能源,开启超充新纪元

编辑:阿冒 设计:沐由 在过去很长的一段时间里,国内某著名品牌火锅是从来不担心获客的。顶峰时期,该品牌每年服务超过1.6亿人次的顾客,翻台率达到了5次/天,几乎创下了餐饮界的最高翻台率。 翻台率是餐饮企业…

调用CFCA金信反欺诈服务相关接口,很详细

调用CFCA金信反欺诈服务相关接口,很详细 一、准备二、调用接口1、查询接口文档2、查看代码示例3、测试调用接口 三、工具类1、CFCA金信反欺诈服务接口码枚举类2、CFCA金信反欺诈服务的公共参数配置3、加密解密工具类4、请求参数dto5、调用接口工具类(关键…

【N年测试总结】证券行业的测试特点

每个行业由于其业务形式,产品形态,行业要求等等的不同,都有其不同于其他行业的测试特点,对测试人员的重点能力要求也不同。 一、证券行业业务系统简介 证券行业的业务系统这里按照C端系统和B端业务系统两大类进行介绍。 C端系统…

tensorrt C++推理

char* trtModelStream{ nullptr }; //char* trtModelStreamnullptr; 开辟空指针后 要和new配合使用,比如89行 trtModelStream new char[size]size_t size{ 0 };//与int固定四个字节不同有所不同,size_t的取值range是目标平台下最大可能的数组尺寸,一些平台下size_…

通讯网关软件012——利用CommGate X2OPC实现MS SQL数据写入OPC Server

本文推荐利用CommGate X2OPC实现从MS SQL服务器获取数据并写入OPC Server。CommGate X2OPC是宁波科安网信开发的网关软件,软件可以登录到网信智汇(http://wangxinzhihui.com)下载。 【案例】如下图所示,实现从MS SQL数据库获取数据并写入OPC Server。 【…

(Vue2)智慧商城项目

新增两个目录api、utils api接口模块:发送ajax请求的接口模块 utils工具模块:自己封装的一些工具方法模块 第三方组件库vant-ui PC端:element-ui(element-plus) ant-design-vue 移动端:vant-ui Mint UI…

Vue3最佳实践 第五章 Vue 组件应用 3( Slots )

5.4 Slots 我们已经了解到组件能够接收任意类型的 JavaScript 值作为 props,但组件要如何接收模板内容呢?在某些场景中,我们可能想要为子组件传递一些模板片段,让子组件在它们的组件中渲染这些片段。Slots 可用于将Html内容从父组…

怎么样深入学习一门技术(Python)

进入官网 Python官网文档 https://docs.python.org/zh-cn/ 边敲代码边理解 多看教学视频 狠狠的花时间

Android 使用kotlin+注解+反射+泛型实现MVP架构

一,MVP模式的定义 ①Model:用于存储数据。它负责处理领域逻辑以及与数据库或网络层的通信。 ②View:UI层,提供数据可视化界面,并跟踪用户的操作,以便通知presenter。 ③Presenter:从Model层获…

Securing TEEs With Verifiable Execution Contracts【TDSC`23】

目录 摘要引言贡献 背景Intel SGX侧信道攻击Intel处理器的硬件扩展 概述威胁模型SGX已存的安全威胁侧信道泄露操作系统相关的威胁现有防御的限制 可验证的执行合同作为防御 摘要 最近的研究表明,可信执行环境,如Intel Software Guard Extensions&#x…

Nginx 背锅解析漏洞

Nginx 背锅解析漏洞 文章目录 Nginx 背锅解析漏洞1 在线漏洞解读:2 环境搭建3 影响版本:4 漏洞复现4.1 访问页面4.2 上传文件 4.3 上传失败4.4 使用bp进行分析包4.5 对返回图片位置进行访问4.6 执行php代码技巧-图片后缀加./php4.7 分析原因 --》cgi.fix_pathinfo--…

工艺防错指导、可视化工具管理——SunTorque智能扭矩系统

智能扭矩系统-智能拧紧系统-智能扭矩控制-SunTorque 拧紧的定义——运用拧紧工具及螺栓,使被联接体紧密贴合,并能承受一定的载荷,且被连接体间具备足够的夹紧力,以确保被联接零件的可靠联接和正常工作。 从定义中前六个字“运用…