roc曲线怎么绘制_ROC曲线和PR曲线

在机器学习中,ROC曲线被广泛应用于二分类问题中来评估分类器的可信度,当处理一些高度不均衡的数据集时,PR曲线能表现出更多的信息。

在二分类问题中,分类器将一个实例的分类标记为正例还是负例,这可以用一个混淆矩阵来表示

7a7408e586df53eb61456a6930231ec4.png

TP:指正确分类成为正的样本数,实际为正,预测为正

FP:指错误分类为正的样本数,实际为负,预测为正

FN:指错误分类为负的样本数,实际为正,预测为负

TN:指正确分类为负的样本数,实际为负,预测为负

TP+FP+TN+FN 样本总数

TP + FN 实际正样本数

TP+FP 预测为正的样本数,包括预测正确的预测错误的

FP+TN 实际负样本数

TN+FN 预测为负的样本数,包括预测正确的预测错误的

3e0b228988663f98ae5f279cdff03fc9.png

在ROC曲线中,以FPR为x轴,TPR为y轴,FPR指实际负样本中被错误预测为正样本的概率。TPR指实际正样本中被预测正确的概率。如下图:

72c20e50a0f754987e035c7b37873dd4.png

在PR曲线中,以Recall(貌似翻译为召回率或者查全率)为x轴,Precision为y轴。Recall与TPR的意思相同,而Precision指正确分类的正样本数占总正样本的比例。如下图:

63788a982aad6180475f4aa31f875f2d.png

绘制ROC曲线和PR曲线都是选定不同阈值,从而得到不同的x轴和y轴的值,画出曲线。例如,一个分类算法,找出最优的分类效果,对应到ROC空间中的一个点。通常分类器输出的都是score,如SVM、神经网络等,有如下预测效果:

94e31b78758ce6075ba701871938007a.png

True表示实际样本属性,Hyp表示预测结果样本属性,第4列即是Score,Hyp的结果通常是设定一个阈值,比如上表Hyp(0.5)和Hyp(0.6)就是阈值为0.5和0.6时的结果,Score>阈值为正样本,小于阈值为负样本,这样只能算出一个ROC值,

当阈值为0.5时,TPR=6/(6+0)=1,FPR=FP/(FP+TN)=2/(2+2)=0.5,得到ROC的一个坐标为(0.5,1);Recall=TPR=1,Precision=6/(6+2)=0.75,得到一个PR曲线坐标(1,0.75)。同理得到不同阈下的坐标,即可绘制出曲线

16702943f228909c690280a405c6ff89.png

在ROC空间,ROC曲线越凸向左上方向效果越好。与ROC曲线左上凸不同的是,PR曲线是右上凸效果越好。

ROC和PR曲线都被用于评估机器学习算法对一个给定数据集的分类性能,每个数据集都包含固定数目的正样本和负样本。而ROC曲线和PR曲线之间有着很深的关系。

定理1:对于一个给定的包含正负样本的数据集,ROC空间和PR空间存在一一对应的关系,也就是说,如果recall不等于0,二者包含完全一致的混淆矩阵。我们可以将ROC曲线转化为PR曲线,反之亦然。

定理2:对于一个给定数目的正负样本数据集,一条曲线在ROC空间中比另一条曲线有优势,当且仅当第一条曲线在PR空间中也比第二条曲线有优势。(这里的“一条曲线比其他曲线有优势”是指其他曲线的所有部分与这条曲线重合或在这条曲线之下。)

当正负样本差距不大的情况下,ROC和PR的趋势是差不多的,但是当负样本很多的时候,两者就截然不同了,ROC效果依然看似很好,但是PR上反映效果一般。解释起来也简单,假设就1个正例,100个负例,那么基本上TPR可能一直维持在100左右,然后突然降到0.如图,(a)(b)分别为正负样本1:1时的ROC曲线和PR曲线,二者比较接近。而(c)(d)的正负样本比例为1:1,这时ROC曲线效果依然很好,但是PR曲线则表现的比较差。这就说明PR曲线在正负样本比例悬殊较大时更能反映分类的性能。

46e3b21c7aabaa4ee12766451854944c.png

AUC(Area Under Curve)即指曲线下面积占总方格的比例。有时不同分类算法的ROC曲线存在交叉,因此很多时候用AUC值作为算法好坏的评判标准。面积越大,表示分类性能越好。

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

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

相关文章

火狐受信任站点设置_火狐浏览器怎么添加信任站点,谷歌浏览器设置信任站点...

我们总是喜欢在win7系统中使用浏览器来浏览一些网页,有时候需要添加信任网址,防止每次打开的时候都会跳出提示,而有的网页需要添加受限制,防止浏览网页弹出某些广告网站,可是最近有win7专业版系统用户却发现在添加信任…

这是2019年适合Java程序员读的10本书

除了为经验丰富的Java开发人员(他们更倾向于学习架构方面的知识,关于云、微服务、Java 9和Spring 5开发等)推荐了一些书籍,同时也为那些初级程序员或经验相对缺乏的Java开发者推荐一些适合在2019年学习的书,下面还是来…

华三交换机路由器图标_弱电箱网口不够用,用华三8口千兆交换机搞定

如题,公司租的办公室刚装修完,安了弱电箱,无奈联通只给了一个2口的光猫,如何不自己花钱买光猫的前提下,分配三间屋子的五个有线成了问题。之前考虑过直接路由器内置在弱电箱里,不过电箱金属盒有屏蔽和弱电箱…

i2c hid 触摸板不能用_零基础学硬件(6):I2C总线的用处

I2C总线的用处,什么时候需要用I2C总线这东西太简单了,我还有点不想说..不就是一个start一个STOP一个ACK嘛,,简单得不能在简单.他可以根据器件地址进行通信..当年在学校时看了很多这资料..什么时候需要用I2C总线,你的器件是IIC的器件,我就得用IIC总线..什…

problem a: 简单的整数排序_python里的排序

本篇文章主要讲:自定义规则排序 多字段排序开讲之前,先讲一些简单sorted()或者sort(),两者返回值不同!例如:sorted([5, 2, 3, 1, 4]) # 输出:[1, 2, 3, 4, 5]另一个呢a [5, 2, 3, 1, 4] a.sort() a # 输出…

python prettytable表格列数太多_excel列数太多了怎么办

excel列数太多了怎么办?列数太多我们需要巧用组合键,通过组合键达到比隐藏更实用的效果。下面将用excel2007版本为例,效果图见下。方法:1、如果列太多,我们就细分为多少列分布做,具体多少列为一组&#xff…

c++ 多态 运行时多态和编译时多态_C++核心编程 第十一节 多态

前言:多态是C面向对象三大特性之一。多态,指的是一个类实例的相同方法在不同情形有不同表现形式。具有不同内部结构的对象可以共享外部接口。C多态就是用一个更通用的基类指针指向不同的子类实例,为了能调用正确的方法,我们需要用…

oracle sql 子游标_Oracle 父子游标

游标从Oracle数据库管理员的角度上说,游标是对存储在库缓存中的可执行对象的统称。SQL语句是存储在库缓存中的,它是游标。除了它之外,还有Oracle的存储过程也是存储在库缓存中的可执行对象,从Oracle DBA的角度上说,它也…

多线程操作时操作系统时间片_从零开始自制操作系统(15):内核多线程

1.多线程原理:(1)概述:多线程是指CPU可以在一段时间中并行执行多个程序,比如我们可以一边听音乐、一边写代码(这两个程序可以“同时进行”,我们称之为多进程,而多进程实现的本质就是…

听说java又过气了?看我运用大数据分析2019年java发展趋势!

近些年的技术圈,单以计算机语言界来说,稳坐第一把太师椅的 Java “或将被取代”、迎接转折点、Java 项目工程师风光不再等言论不绝于耳。在焦虑的大环境下,所有人好像都看起来很焦虑不安。 针对这类“唱衰论”,也不难理解。不仅&…

打开git界面_使用 Gitea 快速搭建私有 Git 版本控制服务

1. 前言分布式版本控制工具 Git 已经是现代软件源代码版本控制首选方案之一。公有 Git 服务提供商 国外知名如 GitHub 国内网络延迟高,Gitlab 涉嫌对中国的歧视不推荐。国内有 Gitee、Coding 生态还不错。但是一般公司的源代码除非开源项目是不会放在公有 Git 服务上的。所以我…

dev项目属性按钮是灰色_Spring Boot 中的项目属性配置

阅读本文约需要5分钟大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈)。上次老师跟大家分享了Spring Boot 如何使用 SLF4J 进行日志记录,今天跟大家分享一下 Spring Boot 中的项…

diskgenius扩容c盘重启电脑卡住_电脑开机显示:reboot and select proper boot device怎么办?...

今天就碰到有一个知友问,自己电脑开机就提示:reboot and select proper boot device,整个人都懵了,不知道怎么办?其实对于电脑出现问题,大家不要着急,坚哥就来为大家分析下原因以及试着去解决。第一种原因…

2019年1月份GitHub上最热门的Java开源项目

相信大多数程序猿们都回归工作岗位啦,不知道是否调整好心态了呢?1月份GitHub上最热门的Java开源项目新鲜出炉,还是一起来看看都有哪些项目上榜吧: 1JavaGuide https://github.com/Snailclimb/JavaGuide Star 22668 【Java学习面试…

大并发下程序出错_Python并发编程理论篇

前言其实关于Python的并发编程是比较难写的一章,因为涉及到的知识很复杂并且理论偏多,所以在这里我尽量的用一些非常简明的语言来尽可能的将它描述清楚,在学习之前首先要记住一个点: 并发编程永远的宗旨就是提高程序的运行效率&am…

2020 idea 查看内存消耗_idea内存如何设置

更具自己硬件环境做出相应的调整.在这里简单说一下这些参数作用以及参考更改参数-Xms768m-Xmx768m-XX:MaxPermSize250m-XX:ReservedCodeCacheSize64m-server-XX:NewSize128m-XX:UseParNewGC-XX:ParallelGCThreads8-XX:UseConcMarkSweepGC-XX:CMSInitiatingOccupancyFraction60-…

月薪30K程序员花了一个小时,用c++做出经典扫雷游戏 !

上次发过一个俄罗斯方块的游戏源码,由于是通过Easy X实现的,但是很多和我一样的新手,一开始不知道Easy X是什么,到时源码拿过去之后,运行报错,我这次发的扫雷, 也是通过Easy X实现,…

用python写web网页_从零开始,使用python快速开发web站点(1) | 学步园

环境:ubuntu 12.04 python版本: 2.73 ok,首先,既然是从零开始,我们需要的是一台可以运行的python的计算机环境,并且假设你已经安装好了python, 然后,既然是快速开发,必不可少的需要用到框架,py…

修改so_货代、海运操作、船务操作还分不清?船公司SO文件看不懂?

货代是货物代理(freight forwarding agent)的简称,是指经营受他人委托,为其提供代办运输手续,代提、代发、代运货物服务的业务。货物代理,有些是中间商就是自己没有船或者飞机的或者船公司、航空公司&#…

一行代码蒸发64亿人民币!黑客盯上区块链漏洞!Python真的变态!

此前认为,区块链技术由于分布存储、加密算法等技术的应用,拥有了不可篡改、可追溯等被认为是“万无一失”的特性。然而,该特性主要针对存储在区块中的信息来说,以文中开头的案例为例,区块链技术保障了可以追溯到这64亿…