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

文章目录

  • 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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vscode使用g++编译.c文件或.cpp文件

vscode是一个跨平台、轻量级、插件非常丰厚的IDE,这里介绍在vscode里使用g来编译.cpp文件。g也叫GCC, 在Window中,是使用MinGW方式实现g的,它分为32位和64位2个版本,其中,MinGW-64是64位的,MinGW-32是32位的…

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

目录 前言 一、概述 监听端口 二、特点 快捷 安全 三、数据的同步方式 四、rsync传输方式 本地传输 远程传输 守护进程 五、命令 作为远程命令 作为rsync服务 选项 六、配置文件 全局配置 模块配置 守护进程传输 七、rsyncinotfy实时同步 一、服务端 二、…

力扣奇遇记 [第一章]

文章目录 😦第一题:拿下LeetCode1769. 移动所有球到每个盒子所需的最小操作数学习内容:LeetCode1769. 移动所有球到每个盒子所需的最小操作数🙈思路分析:💖代码产出: 😦第二题&#…

优雅的设计测试用例

⭐️前言⭐️ 入职以后接触到了公司的具体业务,提升了设计测试用例的能力,于是沉淀出这篇文档与大家分享。 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁 🍉博主将持续更新学习记录收获&…

【C语言】表达式求值相关问题汇总—>隐式类型转换(整型提升)、算数转换与操作符优先级汇总(收藏查阅)

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》 🌝每一个不曾起舞的日子,都是对生命的辜负。 目录 前言: 一、隐式类型转换 (一)整型提升的意义…

后端(四):博客系统项目

咱们在这里实现的是后端项目,前端代码就提一提,不全做重点介绍,在开始讲解这个博客系统项目之前,我们先看看这个项目的前端界面: 登录界面: 个人主页: 博客详情页: 写博客页&#x…

再见 Spring Boot 1.X ,Spring Boot 2.X 走向舞台中心

2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束。 其实早在2018年7月30号,Spring 官方就已经在博客进行过预告,Spring Boot 1.X 将维护到2019年8月1日。 1.5.x 将会…

【Java】重写compareTo()方法给对象数组排序

我们先给一个数组排序,我们肯定用的是Arrays.sort()方法: public class test2 {public static void main(String[] args) {int[] arr{3,5,4,6,9,8,1};System.out.println(Arrays.toString(arr));System.out.println("---------");Arrays.sort…

【C语言初阶】指针的运算or数组与指针的关系你了解吗?

🎬 鸽芷咕:个人主页 🔥 个人专栏:《快速入门C语言》《C语言初阶篇》 ⛺️生活的理想,就是为了理想的生活! 文章目录 📋 前言💬 指针运算💭 指针-整数💭 指针-指针💭 指针…

【Java基础教程】(四十二)多线程篇 · 上:多进程与多线程、并发与并行的关系,多线程的实现方式、线程流转状态、常用操作方法解析~

Java基础教程之多线程 上 🔹本节学习目标1️⃣ 线程与进程🔍关于多进程、多线程、并发与并行之间的概念关系? 2️⃣ 多线程实现2.1 继承 Thread 类2.2 实现 Runnable 接口2.3 多线程两种实现方式的区别2.4 利用 Callable 接口实现多线程2.5 …

数学建模学习(4):TOPSIS 综合评价模型及编程实战

一、数据总览 需求:我们需要对各个银行进行评价,A-G为银行的各个指标,下面是银行的数据: 二、代码逐行实现 清空代码和变量的指令 clear;clc; 层次分析法 每一行代表一个对象的指标评分 p [8,7,6,8;7,8,8,7];%每一行代表一个…

为Android构建现代应用——设计原则

为Android构建现代应用——设计原则 - 掘金 state”是声明性观点的核心 在通过Compose或SwiftUI等框架设计声明性视图时,我们必须明确的第一个范式是State(状态)。UI组件结合了它的图形表示(View)和它的State(状态)。UI组件中发生变化的任何属性或数据都可以…

RuoYi-VUE : make sure to provide the “name“ option

前言 略 错误 错误原因 theme-picker 组件未被注册。 解决 src/App.vue代码恢复成若依的代码即可。&#xff08;PS&#xff1a;不知道代码被谁修改了&#xff09; 缺少这一段&#xff1a; <script> import ThemePicker from "/components/ThemePicker";…

hive基础

目录 DDL&#xff08;data definition language&#xff09; 创建数据库 创建表 hive中数据类型 create table as select建表 create table like语法 修改表名 修改列 更新列 替换列 清空表 关系运算符 聚合函数 字符串函数 substring:截取字符串 replace :替换…

C进阶:内存操作函数

内存操作函数 memcpy 头文件&#xff1a;string.h 基本用途&#xff1a;进行不相关&#xff08;不重叠的内存&#xff09;拷贝。 函数原型&#xff1a;void* memcpy(void* destination,//指向目标数据的指针 const void* source,//指向被拷贝数据的指针 size_t num);//拷贝的数…

分布式光伏电站监控及集中运维管理-安科瑞黄安南

前言&#xff1a;今年以来&#xff0c;在政策利好推动下光伏、风力发电、电化学储能及抽水蓄能等新能源行业发展迅速&#xff0c;装机容量均大幅度增长&#xff0c;新能源发电已经成为新型电力系统重要的组成部分&#xff0c;同时这也导致新型电力系统比传统的电力系统更为复杂…

【数据挖掘】时间序列的傅里叶变换:用numpy解释的快速卷积

一、说明 本篇告诉大家一个高级数学模型&#xff0c;即傅里叶模型的使用&#xff1b; 当今&#xff0c;傅里叶变换及其所有变体构成了我们现代世界的基础&#xff0c;为压缩、通信、图像处理等技术提供了动力。我们从根源上理解&#xff0c;从根本上应用&#xff0c;这是值得付…

HTML5——基础知识及使用

HTML 文件基本结构 <html><head><title>第一个页面</title></head><body>hello world</body> </html> html 标签是整个 html 文件的根标签(最顶层标签).head 标签中写页面的属性.body 标签中写的是页面上显示的内容.title 标…

实现外部缓存-Redis

目录 实现 RedisTemplate RedisTemplate的序列化 RedisSerializer 创建Redis缓存配置类 测试使用 创建配置类 创建注解测试实体 创建配置文件 创建单元测试类进行测试 实现 RedisTemplate XXXTemplate 是 Spring 的一大设计特色&#xff0c;其中&#xff0c;RedisTe…

Mybatis操作数据库执行流程的先后顺序是怎样的?

MyBatis是一个支持普通SQL查询、存储及高级映射的持久层框架&#xff0c;它几乎消除了JDBC的冗余代码。使Java开发人员可以使用面向对象的编程思想来操作数据库。对于MyBatis的工作原理和操作流程的理解&#xff0c;我们先来看下面的工作流程图。 MaBatis的工作流程 在上图中…