释机器学习中的召回率、精确率、准确率

精确率和召回率又被叫做查准率和查全率,可以通过P-R图进行表示

如何理解P-R(精确率-召回率)曲线呢?或者说这些曲线是根据什么变化呢?

以逻辑回归举例,其输出值是0-1之间的数字。因此,如果我们想要判断用户的好坏,那么就必须定一个阈值。比如大于0.5指定为好用户,小于0.5指定为坏用户,然后就可以得到相应的精确率和召回率。但问题是,这个阈值是我们随便定义的,并不知道这个阈值是否符合我们的要求。因此为了寻找一个合适的阈值,我们就需要遍历0-1之间所有的阈值,而每个阈值都对应一个精确率和召回率,从而就能够得到上述曲线。

根据上述的P-R曲线,怎么判断最好的阈值点呢?首先我们先明确目标,我们希望精确率和召回率都很高,但实际上是矛盾的,上述两个指标是矛盾体,无法做到双高。因此,选择合适的阈值点,就需要根据实际问题需求,比如我们想要很高的精确率,就要牺牲掉一些召回率。想要得到很高的召回率,就要牺牲掉一些精准率。但通常情况下,我们可以根据他们之间的平衡点,定义一个新的指标:F1分数(F1-Score)。F1分数同时考虑精确率和召回率,让两者同时达到最高,取得平衡。F1分数表达式为

上图P-R曲线中,平衡点就是F1值的分数。

准确率和召回率之间通常存在一定的折衷关系——当阈值较高时,分类器的准确率较高,但召回率较低;

当阈值较低时,分类器的召回率较高,但准确率较低

  • 召回率(灵敏度):对实际为正类的样本,模型能识别出多少是正类(灵敏度)
    分母:实际类别为正的样本个数(TP+FN=实际为正类的样本个数)
    分子:预测为正实际为正的样本个数(TP)
  • 精确率:对正类样本的预测准确程度,
    分母:预测为正的样本个数(TP+FP=正确预测+错误预测)
    分子:预测为正实际为正(TP)
  • 准确率:对所有类别的样本的预测准确程度,
    分母:所有类别样本个数=(预测为正样本个数+预测为负样本个数)
    分子:正确预测样本个数=(预测为正实际为正+预测为负实际为负)

召回率(把正样本叫唤回来,因为我们把本来是正的样本给否定了,提升它就是尽量不要把正确的搞错了,也就是不漏报),精准率就是看我们预测的正样本的到底有多少是真正的正样本,因为有一些负的我们把它判为正了,提升精准率就是不错报。

精确率:分母是预测到的正类,精确率的提出是让模型的现有预测结果尽可能不出错(宁愿漏检,也不能让现有的预测有错)

召回率:分母是原本的正类,召回率的提出是让模型预测到所有想被预测到的样本(就算多预测一些错的,也能接受)

召回率和精确率二者整体是呈负相关关系,局部可能正相关:

  • 当TP增加,召回率一定也增加(TP/实际为正样本数量不变)
  • 而对于精确率:TP增大,FP可能减小也可能增大(更容易增大)。TP增加,FP减小这是理想情况(低偏差),更符合实际情况的是TP增加FP也增加,即分母(TP+FP)更容易增大,精确率则更容易减小。当分子TP增加的部分没有分母增加的多时,精确率减小,
  • 反映到PR曲线上,召回率和精确率整体负相关,但局部可能正相关,例如分子TP增大1,分母(TP增大1+FP减小2)减小,精确率增大。
  • 总结一句话就是:TP增大,召回率一定增大,而精确率更容易减小

precision:focus在不出现错误的分类(宁可漏掉,不能出错)

recall:focus在分类不出现遗漏(宁可出错,不能漏掉)


 

假设你很穷,地主老爷送了一堆掺了沙子(N)的大米(P),现在要做饭了,需要将大米(P)跟沙子(N)进行分离,将掺了沙子(N)的大米(P)分成大米堆(P类)与沙子堆(N类),做饭用大米堆(P类),沙子堆(N类)则选择丢弃,以下有几个指标可以评估分离的好坏程度:

大米堆(P类)=TP+FP

沙子堆(N类)=TN+FN

1、准确率=(TP+TN)/(TP+FP+TN+FN)——全局预测准确性

能成功地(T)把大米(TP)放进大米堆(TP+FP),成功地(T)把沙子(TN)放进沙子堆(TN+FN),综合成功率是多少呢?这就是准确率的关注点,看全局的分类能力,不仅要把大米(TP)分对(T),还要把沙子(TN)也分对(T)。

2、精确率=TP/(TP+FP)——正分类里的预测准确性

准确率有个缺陷,要求太高了。比如你的目的就是煮饭,也就是说你更关注大米堆(TP+FP),你不需要操心沙子(TN)到底有没有被成功地(T)分类到沙子堆(TN+FN)。因此,只要大米堆(TP+FP)里的大米(TP)比例越多,那你做饭的时候,大概率吃到的还是大米(TP),而不是沙子(FN)。因此精确率就是看大米堆(TP+FP)里拥有的可食用大米(TP)比例,也可理解为将来做饭用的大米精度(浓度)。

3、召回率=TP/(TP+FN)——正样本的预测准确性

精确率关注的是吃饭时候,尽可能不要吃到沙子,所以他不关注粮食是否浪费的问题,而召回率关注的就是粮食浪费的问题,毕竟现在提倡节约,所以召回率就是关注大米(TP)样本中被成功地(T)分类到大米堆(P堆)的比例。“召回率”可以理解为,在所有大米(TP+FN)中回收实际食用的大米(TP)的比例。

与前面的P-R曲线类似,ROC曲线也是通过遍历所有阈值来绘制曲线的。如果我们不断的遍历所有阈值,预测的正样本和负样本是在不断变化的,相应的ROC曲线TPR和FPR也会沿着曲线滑动。

同时,我们也会思考,如何判断ROC曲线的好坏呢?我们来看,FPR表示模型虚报的程度,TPR表示模型预测覆盖的程度。理所当然的,我们希望虚报的越少越好,覆盖的越多越好。所以TPR越高,同时FPR越低,也就是ROC曲线越陡,那么模型的性能也就越好。

最后,我们来看一下,不论样本比例如何改变,ROC曲线都没有影响,也就是ROC曲线无视样本间的不平衡问题。

6.2 AUC

AUC(Area Under Curve)表示ROC中曲线下的面积,用于判断模型的优劣。如ROC曲线所示,连接对角线的面积刚好是0.5,对角线的含义也就是随机判断预测结果,正负样本覆盖应该都是50%。另外,ROC曲线越陡越好,所以理想值是1,即正方形。所以AUC的值一般是介于0.5和1之间的。AUC评判标准可参考如下

  • 0.5-0.7:效果较低。
  • 0.7-0.85:效果一般。
  • 0.85-0.95:效果很好。
  • 0.95-1:效果非常好。

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

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

相关文章

MySQL的索引(优缺点,二叉树,红黑数,B+Tree)【详解】

1.什么是索引 索引:是用于提高查询数据性能的一种数据结构。实际开发中,对数据的读写操作大概是10:1 把索引理解为目录。 构建索引的过程,就是构建目录的过程 构建索引的过程中会对数据进行排序 2.索引的优缺点 优点&#x…

基于逻辑回归与决策树的地质灾害预测

大家好,我是带我去滑雪! 地质灾害的预测对于人们的生命财产安全、社会稳定和经济发展具有重要意义。地质灾害如地震、泥石流、山体滑坡等往往会造成严重的人员伤亡和财产损失。大规模的地质灾害往往会导致社会秩序混乱、人员流动、灾民避难等问题&#x…

pip 和conda 更换镜像源介绍

1、前言 很多深度学习的项目免不了安装库文件、配置环境等等,如果利用官方提供的连接,网速很慢,而且很容易download掉。 所以配置好了虚拟环境,将pip换源属实重要 常见的国内镜像源有清华、中科大、阿里等等... 这里建议用中科…

在亚马逊云EC2上启动PopOS

CloudEndure遇到的挑战 自从使用CloudEndure导入win11后就一发不可收拾,然后就可以尝试新的操作系统,比如system76的Pop!_OS,虽然上是基于ubuntu进行开发的,但是在使用安装CloudEndure 的时候还是遇到的了问题,可能是因为内核很新,也可能其他的一些原因. 如果说严格按照兼容性…

力扣977. 有序数组的平方

思路:暴力法:全部平方,然后调用排序API,排序算法最快是N*log(N)时间复制度。 双指针法:要利用好原本的数组本就是有序的数组这个条件, 只是有负数 导致平方后变大了,那么平方后的最大值就是在两…

算法时空复杂度分析:大O表示法

文章目录 前言大O表示法3个时间复杂度分析原则常见的时间复杂度量级空间复杂度参考资料 前言 算法题写完以后,面试官经常会追问一下你这个算法的时空复杂度是多少?(好像作为一名算法工程师,我日常码代码的过程中,并没…

mineadmin 快速安装部署(docker环境)

前提条件:已安装docker 一、下载dnmp环境包 github地址:https://github.com/tomorrow-sky/dnmp gitee地址: https://gitee.com/chenjianchuan/dnmp 二、看一下dnmp包目录结构 三、打开docker-compose.yml 文件,将不需要…

Node.js入门基础—day01

个人名片: 😊作者简介:一名大二在校生 🤡 个人主页:坠入暮云间x 🐼座右铭:给自己一个梦想,给世界一个惊喜。 🎅**学习目标: 坚持每一次的学习打卡 文章目录 初识node.js什…

网络工程师笔记14

VLAN原理与配置 VLAN 的功能 划分广播域,隔离广播域 VLAN的应用划分 VLAN配置命令

RTX4090上运行Cuda10.1报错:ValueError: Unknown CUDA arch (8.9) or GPU not supported

原因是cuda(我这里是cuda10.1,改为支持7.5)的版本不支持当前算力(8.9) 参考compute capability的官方表格:https://developer.nvidia.com/cuda-gpus 修改算力过程: sudo vim ~/.bashrc # 在配置文件中添加如下一行 exp…

微信怎么定时群发消息,一键群发5000好友?

对微信运营的人来说,群发是一件很有必要的事情,但是用微信群发的话,微信自带的群发助手只能发送文字和图片消息,一次只能选200个人,而且也无法定时群发,有很多不方便的地方,这个时候&#xff0c…

简单的思考(一):MATLAB实现心形线

今天刷B站的时候看见了: 于是想着自己能不能也做出来 clc;clear; % 定义x的范围 x -2:0.01:2;% 初始化图形 figure; set(gcf,position,[0,0,800,600],color,w); h1 plot(x,abs(x).^(2/3) (0.9*sqrt((3.3-x.^2))).*sin(0.1*pi*x),r,LineWidth,3); hold on xlim(…

Flutter 开发中踩坑笔记总汇

Flutter 踩坑笔记总汇 本篇主要是收集汇总开发过程中遇到的小困惑,都是些比较常见的问题。后续开发中遇到,也会持续更新在这里。 1、Flutter Packages upgrade后任务进入阻塞状态 问题:无法更新下载插件库。 解决:配置flutter官…

力扣(103、236、104)

103. 二叉树的锯齿形层序遍历 题目大意:将原先的层次遍历改为蛇形遍历,那么我们需要在102. 二叉树的层序遍历的基础上进行改进,首先蛇形走位(先从左往右,再从右往左进行下一层遍历,以此类推,层…

k8s部署InfluxDB

(作者:陈玓玏) 1. 拉取镜像 docker pull influxdb #拉取镜像 docker run -d influxdb:latest #后台运行容器 docker exec -it 89b /bin/bash #进入容器,89b是容器ID的前三位 cd /usr/bin #进入容器后,进入此文件夹…

SEO是什么?网站为什么要做SEO?#川圣SEO#蜘蛛池

baidu搜索:如何联系八爪鱼SEO? baidu搜索:如何联系八爪鱼SEO? baidu搜索:如何联系八爪鱼SEO? SEO,即搜索引擎优化,是一种通过了解和利用搜索引擎的运作规则来提高网站在搜索结果中…

Flink技术简介与入门实践

架构简介 Flink 是一个分布式流处理和批处理计算框架,具有高性能、容错性和灵活性。下面是 Flink 的架构概述: JobManager:JobManager 是 Flink 集群的主节点,负责接收和处理用户提交的作业。JobManager 的主要职责包括&#xff1…

Tomacat下载并且手动自动部署Web项目

Tomacat下载并且手动自动部署Web项目 Tomcat的简介Tomcat的作用Tomcat的下载Tomcat 部署1、环境准备2、手动部署项目3、自动部署项目(IDEA) ⭐ 前言 ⭐ 本篇文章主要介绍 Tomacat下载部署Web项目的详细使用以及部分理论知识 Tomcat的简介 Tomcat 服务…

硬盘分区怎么恢复数据 硬盘分区如何恢复原来的数据

硬盘分区是我们在使用电脑时经常会遇到的问题,而且很多人都会因为误操作或者其他原因导致硬盘分区数据丢失。这时候,我们就需要知道如何恢复硬盘分区的数据了。 首先,我们需要知道硬盘分区数据丢失的原因。一般来说,硬盘分区数据丢…

setTimeout+Promise+Async输出顺序?

注明:本文不涉及Nodejs执行机制 同步 && 异步 什么是异步,什么是同步,我不多说,我就通过小故事来讲讲吧。 同步:你打电话去书店订书,老板说我查查,你不挂电话在等待,老板把…