学了一下ROC图形的原理,在此实现一下,算是理论落地的训练,只不过目前看的是二分类问题。

FPR、TPR简介

ROC曲线的横坐标为FPR,叫做假正例率,也就是实际为假的观测中被判断为真的所占的比例。

ROC曲线的纵坐标为TPR,叫做真正例率,也就是实际为真的观测中被判断为真的所占的比例。

举例如下:

表1

实际分类

判定分类

P

P

P

N

N

P

P

N

N

N

此例中,实际为假的观测(N:negative)共2个,其中被判定为真的有1个,因此FPR=1/2=0.5;实际为真的观测(P:positive)共3个,其中被判定为真的有1个,因此TPR=1/3。

ROC绘制过程

但是实际的二分类问题往往给出的是判定为真的概率,也就是如下的表格:

表2

实际分类

判定为真的概率

P

0.9

P

0.6

N

0.5

P

0.4

N

0.3

如果你认为判定为真的概率不小于0.9,就能认为该观测为真,那么表2更新如下:

表3

实际分类

判定分类

P

P

P

N

N

N

P

N

N

N

于是得到一个坐标(FPR,TPR)=(0/2,1/3)=(0,1/3)。

如果你认为判定为真的概率不小于0.6,就能认为该观测为真,那么表2更新如下:

表4

实际分类

判定分类

P

P

P

P

N

N

P

N

N

N

于是得到一个坐标(FPR,TPR)=(0/2,2/3)=(0,2/3)。

以此类推,即以“判定为真的概率”中的各个概率p为临界值,如果概率不小于p,则判定为真,否则为假。按照这条规则对表2进行更新,最终可以得到如下表格:

表5

实际分类

判定为真的概率

FPR

TPR

P

0.9

0

1/3

P

0.6

0

2/3

N

0.5

1/2

2/3

P

0.4

1/2

3/3

N

0.3

2/2

3/3

得到上面这5个点之后就可以画图了,一般来讲ROC图都是锯齿图,且图形越靠近左上角说明分类器准确率越高,越接近斜率为1的对角线说明分类器性能越差。

R代码实现

理解了上面的原理,画图也简单了,关键在于表2的更新如何实现,推荐的方法是先对判定为真的概率进行一个从大到小的排序。为了便于使用,这里直接定义一个函数进行封装。

ROC_Plot

real

rows

ROC

colnames(ROC)

for(i in 1:rows){

DF

DF_N

ROC[i,1]

DF_P

ROC[i,2]

}

with(as.data.frame(ROC),

{plot(FPR,TPR,xlim=c(0,1),ylim=c(0,1),...)

abline(a=0,b=1,lty='dotted')})

}

函数ROC_Plot的real_category是实际分类向量,probs是对应的判定为真的概率的向量,positive_symbol是观测为真的标志,'...'是省略的画图参数,这是需要自己加的。

直接调用该函数完成表2的ROC图绘制:

ROC_Plot(real_category=c('p','p','n','p','n'),

probs=c(0.9,0.6,0.5,0.4,0.3),

positive_symbol='p',

type="l",col="red",

xlab="假正例率(FPR)",ylab="真正例率(TPR)",main="ROC")

图形如下:

更多观测也可以直接套用该函数,在此只给代码示例,图形就不放了。

ROC_Plot(

real_category=

c('p','p','n','p','p',

'p','n','n','p','n',

'p','n','p','n','n',

'n','p','n','p','n'),

probs=

c(.9,.8,.7,.6,.55,

.54,.53,.52,.51,.505,

.4,.39,.38,.37,.36,

.35,.34,.33,.30,.1),

positive_symbol="p",

type="l",

col="red",

xlab="假正例率(FPR)",

ylab="真正例率(TPR)",

main="ROC")

r roc函数_R画ROC曲线相关推荐

  1. r roc函数_画ROC曲线的R包总结

    原标题:画ROC曲线的R包总结 作者: Joseph Rickert 原文链接: https://rviews.rstudio.com/2019/03/01/some-r-packages-for-r ...

  2. r roc函数_R语言画ROC曲线总结

    在本文中,我描述了如何在CRAN中搜索用于绘制ROC曲线的包,并重点介绍了六个有用的包. 尽管我从一些我想谈论的软件包开始就有了一些想法,例如ROCR和pROC(我在过去发现它们很有用),但我还是决定 ...

  3. r roc函数_R语言中绘制ROC曲线

    两种方法: 第一种,摘自别人的方法: ROC曲线,做分类时经常会用到的一种结果表现方法.诸如此类的工作,首选工具当然是R.在CRAN上搜了一下,找到一个叫ROCR的包.尽管这个包已经很久没更新了,但用 ...

  4. r roc函数_R语言绘制ROC曲线

    library(tidyverse)# for data manipulationlibrary(pkgsearch)  # for searching packages 找与ROC相关的包该包会提供 ...

  5. r 语言roc_R语言画ROC曲线总结

    原文链接:http://tecdat.cn/?p=10963​tecdat.cn 在本文中,我描述了如何在CRAN中搜索用于绘制ROC曲线的包,并重点介绍了六个有用的包. 尽管我从一些我想谈论的软件包 ...

  6. R count函数_R分析之前的数据准备

    数据分析项目中大多数的时间都用在了准备数据上,一个典型的项目80%的精力都花在分析而进行的发现.清洗和准备数据上.只有不到5%的精力用于分析(剩下的时间都耗在了写报告上面). 合并数据集 数据分析中最 ...

  7. R count函数_R语言系列第二期:R变量、脚本、作图等模块介绍

    在上一篇文章里,给大家介绍了R语言的下载,界面操作,6个处理对象等等.R语言系列第一期(番外篇 ):R的6种对象-向量.矩阵.数组.因子.列表.数据框 在这些内容的基础上,我们在这个部分为大家介绍一些 ...

  8. R count函数_R最快且比dplyr最高效的大数据处理R包:tidyfst

    R最快且比dplyr最高效的大数据处理R包:tidyfst​mp.weixin.qq.com 写在前面 本包开发者黄天元: 首先我对tidyfst进行了一套完整的学习,因为这里面的函数并不多,满打满计 ...

  9. origin画ROC曲线

    ROC曲线的全称是受试者工作特征(Receiver Operating Characteristic)曲线,是非常重要和常见的统计分析方法. 如果已经计算好FPR和TPR,可以直接使用最简单的图绘制. ...

最新文章

  1. 【业务】现金贷获客之道业务流程分析
  2. Q1全球智能机销量增长3.9% 三星苹果华为居三甲
  3. Proxy server 緩存 jsp html
  4. toolStrip 按钮图片大小的修改
  5. [转载] Python OpenCV 基础教程
  6. 苹果运营商中移动苹果互盼“在一起” 最快Q3推4G移动版iPhone
  7. android系统签名一样不,解决Android应用签名和系统不一致的问题
  8. 玩觅伊的女孩,都是一些什么样的人?
  9. 启动计算机按住del不放,电脑黑屏bios界面都进不去怎么办
  10. java 图片 转像素_使用Java改变图片的像素
  11. OSChina 周一乱弹 —— 怎么搭讪学医的女孩,说你有病!
  12. 计算墨水污染的格子【非常规墨水污染】
  13. awk oracle,工具: ass109.awk 分析 Oracle 的跟踪文件
  14. ubuntu lotus testnet-staging
  15. office2010常见问题集锦
  16. 技嘉z68主板驱动下载地址
  17. windows 单网卡双网段直连
  18. 疯狂的大柚柚带你玩转MSP-ESP430G2(基础篇)-----(八)低功耗模式补充
  19. word2003 插入书签 书签定位 查看书签 删除书签
  20. python爬微信头像_itchat+pillow实现微信好友头像爬取和拼接

热门文章

  1. LCD12864(ST7920芯片)
  2. string未定义标识符
  3. 为什么我购买了 iCloud 额外的 50g 存储空间?
  4. php外卖评分,【php】php简易外卖送达时间(依据时间距离取整点)
  5. poj1873The Fortified Forest
  6. 美股外汇市场量化接口有哪些优点?
  7. netlogo笔记(3):摘蘑菇行为模拟
  8. 阮一峰:为什么要写博客(转)
  9. c xaml for html5,Windows Store Apps entwickeln mit C# und XAML, HTML5 oder C++
  10. 发现没有一篇宝宝的日记