详解分类指标Precision,Recall,F1-Score

news2024/11/27 4:19:44

文章目录

  • 1. Precision(精度)
  • 2. Recall(召回率)
  • 3. F1-Score
  • 4. Accuracy(准确率)
  • 5. P-R 曲线
  • 6. TPR、FPR
    • 6.1 TPR(真正率)
    • 6.2 FPR(假正率)
  • 7. ROC曲线
  • 8. AUC曲线
  • 参考资料

在使用机器学习算法的过程中,我们需要对建立的模型进行评估来辨别模型的优劣,下文中主要介绍常见的几种评估指标。以下指标都是对分类问题的评估指标。

在二分类任务中,假设只有正类(1)和负类(0)两个类别,True(1)和False(0)分别表示预测结果对或错;Positive(1)和Negative(0)表示预测为正类或负类。

将标有正负例的数据集喂给模型后,一般能够得到下面四种情况,可以用混淆矩阵来表示:

  • True Positive (TP):模型将正实例判定为正类。(预测正确,预测类别为正类)
  • True Negative (TN):模型将负实例判定位负类。(预测正确,预测类别为负类)
  • False Negative (FN):模型将正实例判定为负类。(预测错误,预测类别为负类)
  • False Positive (FP) :模型将负实例判定位正类。(预测错误,预测类别为正类)

这里:True/False代表判断结果是否正确,Positive/Negative代表预测类别结果。

1. Precision(精度)

Precision(精度):针对判定结果而言,预测为正类的样本(TP+FP)中真正是正实例(TP)所占的比率。

Precision = 被正确预测的Positive样本 / 被预测为Positive的样本总数

Precision(精度)又称为查准率。Precision越高越好,越高意味着模型对“预测为正”的判断越可信。

2. Recall(召回率)

Recall(召回率):针对样本而言,被正确判定的正实例(TP)在总的正实例中(TP+FN)所占的比率。

Recall = 被正确预测的Positive样本 / 实际为Positive的样本总数

Recall(召回率)又称为查全率。Recall同样越高越好,越高意味着模型对“实际为正”的样本误判越少,漏判的概率越低。

注意: 精度和召回率虽然没有必然的关系,然而在大规模数据集合中,这两个指标却是相互制约的。一般情况下,召回率高时,精度低;精度高时,召回率低。

3. F1-Score

F1-Score:是精度(Precision)和召回率(Recall)的加权调和平均

F1-Score值越接近1,则模型在查全率与查准率两方面的综合表现越好。而Precision或Recall中,一旦有一项非常拉跨(接近于0),F值就会很低。

4. Accuracy(准确率)

Accuracy(准确率):模型正确分类的样本数(正实例被判定为正类,负实例被判定为负例)在总样本中的比重。

Accuracy = 被正确预测的样本数 / 样本总数

Accuracy(准确率)vs. Precision(精度)

模型A假设现有模型A对中国人的“恶性肿瘤发病率”进行预测,预测的准确率(Accuracy)为99.7%。请问这个模型效果如何?是否可用?
答:很难说。因为仅通过准确率,我们不知道假正(FP)和假负(FN)的样本量有多少,以及占比如何。实际上,2017年,全国恶性肿瘤发病率为0.3%。我们只要猜测所有中国人都不会患病,就可以达到99.7%的准确率。但这个预测,对于我们而言,并没有带来任何的增量信息。

  • Accuracy(准确率)从全部数据的角度去计算分类正确的样本数所占的比例,是对分类器整体上的正确率的评价。当数据中存在类别不均衡等问题时,使用准确率无法得出具有信息量的判断结果。

  • 而Precision(精度)在分类中对应的是某个类别(分子是预测该类别正确的数量,分母是预测为该类别的全部数据的数量)。Precision是分类器预测为某一个类别的正确率的评价。

5. P-R 曲线

P-R Curve(全准曲线):是由P值与R值构成的曲线。将模型不同参数对应的(R值,P值)绘制成曲线,就得到了全准曲线。

在这里插入图片描述

6. TPR、FPR

上面讲了这么多评价指标,我们发现一个问题:目前的评价体系当中,并没有用上所有的可用信息。上述指标中,考虑了P值和R值,但是都没有考虑TN(True Negative)样本的影响。

那么,有没有什么度量可以考虑到整个混沌矩阵的信息呢?

这里,可以引入真正率(True Positive Rate)和假正率(False Positive Rate)两个指标来解决上述信息缺失的问题。

6.1 TPR(真正率)

TPR(True Positive Rate,真正率):统计“实际为正的样本”中,有多少预测是正确的。

“真正率”就是“查准率”,只不过对同一个事物,有两个不同的称呼。真正率越高越好,越高意味着模型对“正样本”的误判越少。

6.2 FPR(假正率)

FPR(False Positive Rate,假正率):统计“实际为负的样本”中,有多少预测是错误的。

假正率越低越好,越低意味着模型对“负样本”的误判越少。

TPR和FPR有一个好处:不会受样本的均衡程度的影响。
TPR和FPR的条件概率都是基于真实样本的,而且TPR只基于正样本,而FPR只基于负样本。这就使得TPR和FPR不会受样本均衡程度的影响。
而ROC曲线与AUC面积,就是在TPR和FPR的基础上衍生出来的概念。

7. ROC曲线

ROC曲线(Receiver Operating Characteristic Curve),是以假正率(FPR)为横轴,真正率(TPR)为纵轴所组成的坐标图,和受试者在特定刺激条件下由于采用不同的判断标准得出的不同结果画出的曲线。ROC曲线在测试集中的正负样本的分布变化时,能够保持不变。

在整个ROC曲线上,约靠近左上角(0,1)的点,对应的模型参数越好。

ROC曲线上的每个点对是在某个阈值threshold下得到的(FPR, TPR)。设定一个阈值,大于这个阈值的实例被划分为正实例,小于这个值的实例则被划分为负实例,运行模型,得出结果,计算FPR和TPR值,更换阈值,循环操作,就得到不同阈值下的(FPR, TPR)对,即能绘制成ROC曲线。

8. AUC曲线

AUC曲线(Area Under Curve)是ROC曲线下的面积值,在0.5到1.0区间内。之所以使用AUC值作为评价标准是因为很多时候并不能从ROC曲线中判别模型的好坏,AUC值能量化模型的性能效果。AUC值越接近于1,说明模型性能越好,模型预测的准确率越高;如果多个模型进行性能比较,一般以AUC值大的模型比AUC值小的模型的性能好。

当AUC等于0.5时,整个模型等价于一个随机分类器。AUC的面积越大,模型的整体表现越好。

参考资料

  • 机器学习中常见的评估指标:https://blog.csdn.net/weixin_42111770/article/details/81015809
  • accuracy 和 precision 的区别是什么?:https://www.zhihu.com/question/321998017/answer/2303096310

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

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

相关文章

【SpringBoot项目】Tomcat started on port(s): 8080 (http) with context path ‘‘

运行程序后出现下面的错误,并且在postman中无法获取到数据 在idea中的错误显示的如下 本人的原因是忘记在Controller中忘记写!!!! RestController 如果你不是以下原因可以参考下面的文章: Initializing S…

SSTI无过滤

解题步骤 打开环境后就只有一段文字,说密码错误,来回看了源码,抓包都没有什么提示,并且也没有有任何的传参显示 最后想来想去,终于灵机一动,这段文字就是在提示我们,可传的参数为password 所以…

[JAVAee]多线程入门介绍及其创建与基础知识

目录 1.进程 2.线程 3.进程与线程的区别与联系 4.为什么会有线程? 5.创建第一个多线程程序 方法一:继承Theard类 方法二:实现Runnable接口 方法三:匿名内部类创建Thread子类对象 方法四:匿名内部类创建 Runnable 子类对象 方法五(推荐方法):lambda 表达式创建 Runna…

03、怎么理解TPS、QPS、RT、吞吐量?

通常我们都从两个层面定义性能场景的需求指标:业务指标和技术指标。这两个层面需要有映射关系,技术指标不能脱离业务指标。一旦脱离,你会发现你能回答”一个系统在多少响应时间之下能支持多少 TPS“这样的问题,但是回答不了”业务…

开放的安全影响:Elastic AI Assistant

作者:Dain Perkins 在过去的几年里,我们一直在讨论开放和透明的安全方法的好处,即向公众提供对我们的检测和预防功能、代码、文档等详细信息的访问,这将增强我们能够为客户提供的安全功能。 在本博客中,我们将探讨我们…

PHP8知识详解:PHP8的新特性

PHP 8是PHP编程语言的一个主要版本,在2020年11月26日发布。它引入了许多新特性和改进,包括以下一些主要特性: 1. JIT 编译器:PHP 8引入了名为Tracing JIT的即时(Just-In-Time)编译器。JIT可以将PHP脚本中频…

软件测试——白盒测试

目录 1.什么是白盒测试 1.1 白盒测试优缺点 2.白盒测试方法 2.1 静态 2.2 动态 2.2.1 语句覆盖 2.2.2 判断覆盖 2.2.3 条件覆盖 2.2.4 判定条件覆盖 2.2.5 条件组合覆盖 2.2.6 路径覆盖 2.2.7 基本路径测试法(最常使用) 1.什么是白盒测试 白盒测试也称结构测试&…

解决Vue报错unable to resolve dependency tree

目录 一、问题 1.1 问题描述 二、解决 2.1 解决 一、问题 1.1 问题描述 今天在新创建一个项目,也就是在空文件夹里执行Vue脚手架的创建代码,如下 vue create 项目名称 没想到创建报错了:ERESOLVE unable to resolve dependency tree&…

现实生活中机器学习的具体示例(Machine Learning 研习之二)

笔者站点:秋码记录 机器学习在现实中的示例 通过上一篇的讲解,我们多多少少对机器学习(Machine Learning)有了些许了解,同时也对机器学习(Machine Learning)一词不再那么抗拒了。 那么&#…

图像处理之傅里叶变换

1、傅里叶变换的定义 傅里叶变换是在以时间为自变量的“信号”与频率为自变量的“频谱”函数之间的某域研究中较复杂的问题在频域中变得简单起来,从而简化其分析过程;另一方面使信号与系统的物理本质在频域中能更好地被揭示出来。当自变量“时间”或“频…

crypto1_中秋月

0x00 前言 CTF 加解密合集:CTF 加解密合集 0x01 题目 自动钥匙⊕明文全大写,得到后转小写,并以_连接单词。fsskryenvkm~jl{ejs}jwflzsnpgmifq{{j{|suhzrjppnx|qvixt~whu0x02 Write Up 首先提示需要异或,进行异或的爆破 s fs…

AJAX-day02-AJAX原理

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 XMLHttpRequest 了解XMLHttpRequest 使用 XMLHttpRequest XMLHttpRequest - 查询参数 XMLHttpRequest…

linux学成之路(基础篇)(二十二)iscsi服务

目录 前言 一、概述 二、构架iscsi服务 三、targencli 四、实现步骤 一、服务端 配置基础环境 安装 yum install - y targetcli 进入到/backstores/block目录中添加设备到块设备列表 进入到iscsi目录中生成iqn标签 进入到/iscsi/iqn.20...909/tpg1/luns>目录下创…

win10 安装 langchain-chatglm 遇到的问题

win10 安装 langchain-chatglm 避坑指南(2023年6月21日最新版本)_憶的博客-CSDN博客官网看起来安装很简单,网上教程也是,但实际上我耗费了两天时间,查阅了当前网络上所有可查阅的资料,重复「安装-配置-卸载…

idea中修改Git提交名称【简单快捷】

1、打开idea下面的Terminal框; 输入“git config user.name”; 查看当前名称是否是你想要的(既然要修改肯定不是想要的.); 2、修改新名称 再输入“git config --global user.name "新名称"”修改为新值&…

【Java并发编程】线程池ThreadPoolExecutor实战及其原理分析

4 Executor线程池 4.1 概述 线程发生异常,会被移除线程池,但是如果是核心线程,会创建一个新核心线程; 4.1.1 线程池的好处 降低资源消耗 降低了频繁创建线程和销毁线程开销,线程可重复利用; 提高响应…

UE5、CesiumForUnreal实现选中区域地形压平效果

文章目录 1.实现目标2.实现过程2.1 Demo说明2.2 实现过程3.参考资料声明:本篇文章是为某位读者朋友定制开发的功能需求,所以放在了特定的专栏里,其他的朋友可以忽略这篇文章哈! 1.实现目标 基于CesiumForUnreal插件的CesiumPolygonRasterOverlay组件实现选中区域地形压平的…

WPF快速开发(1):静态计算器知识点补充

文章目录 前言WPF介绍 WPF知识点补充:如何开始一个简单的WPF程序新建WPF项目 页面布局Grid:货架布局DockPanel:停靠布局StackPanel/WrapPanel:排列布局UniformGrid:均分宫格布局 控件元素控件通用属性窗口元素 前言 本篇章主要介绍如何使用布…

分布式消息中间件介绍

什么是分布式消息中间件? 对于分布式消息中间件,首先要了解两个基础的概念,即什么是分布式系统,什么又是中间件。 分布式系统 “A distributed system is one in which components located at networked computers communicate an…

Maven的Web项目创建

1.创建动态Web项目 2.把项目转为Maven项目 然后就可在pom.xml中加入自己的依赖