绘制ROC曲线
什么是ROC曲线
ROC曲线是什么意思,书面表述为:
“ROC 曲线(接收者操作特征曲线)是一种显示分类模型在所有分类阈值下的效果的图表。”
好吧,这很不直观。其实就是一个二维曲线,横轴是FPR,纵轴是TPR:

至于TPR,FPR怎么计算:
首先要明确,我们是在讨论分类问题中,讨论怎样绘制ROC曲线的,大前提是分类问题。别想太多,就当是二分类问题好了,一类是Positive,一类是Negative
分类模型的预测结果,被阈值化之后,判定为TP,FP,TN,FN四种情况:
- if Y_pred ≥ thresh and Y_gt is Positive, then TP++
- if Y_pred ≥ thresh and Y_gt is Negative, then FP++
- if Y_pred < thresh and Y_gt is Positive, then FN++
- if Y_pred < thresh and Y_gt is Negative, then TN++
然后TPR, FPR的定义为
TPR = TP / (TP + FN) (也就是Recall)
FPR = FP / (FP + TN)
举个栗子
假设你现在做机器学习笔试题,题目给了分类任务中的测试集标签和分类模型的预测结果,也就是给了Y_pred和Y_gt,让你手绘AUC曲线。Can you draw it?
答案一定是Yes, I can(看一下就会了)。
gt: [0, 1, 0, 1]. pred: [0.1, 0.35, 0.4, 0.8] 那么在阈值分别取{0.1, 0.35, 0.4, 0.8}的时候,分别判断出每个pred是TP/FP/TN/FP中的哪个,进而得出当前阈值下的TPR和FPR,也就是(FPR, TPR)这一ROC曲线图上的点;对于所有阈值都计算相应的(FPR, TPR),则得到完整的ROC曲线上的几个关键点,再连线(稍微脑补一下?)就得到完整ROC曲线。(再进一步,AUC也可以计算了,不是嘛?)
计算过程如下:

绘制得到的ROC曲线为:

好吧,这个例子其实来自于如何绘制ROC曲线。
再举一个例子好了:
对于一组二元分类任务的测试集,其真实值为[0, 0, 0, 0, 1, 1, 1],模型预测为1的概率为[0.3, 0.2, 0.7, 0.5, 0.4, 0.9, 0.6],该模型在这个测试集上的ROC曲线为?(题目来源:sofasofa.io,一个有趣的机器学习社区,里面的机器学习题库)

对应的ROC曲线为:

绘制ROC曲线的更多相关文章
- sklearn 绘制roc曲线
from sklearn.metrics import roc_curve, auc import matplotlib as mpl import matplotlib.pyplot as plt ...
- [机器学习]-分类问题常用评价指标、混淆矩阵及ROC曲线绘制方法
分类问题 分类问题是人工智能领域中最常见的一类问题之一,掌握合适的评价指标,对模型进行恰当的评价,是至关重要的. 同样地,分割问题是像素级别的分类,除了mAcc.mIoU之外,也可以采用分类问题的一些 ...
- R语言︱ROC曲线——分类器的性能表现评价
笔者寄语:分类器算法最后都会有一个预测精度,而预测精度都会写一个混淆矩阵,所有的训练数据都会落入这个矩阵中,而对角线上的数字代表了预测正确的数目,即True Positive+True Nagetiv ...
- ROC曲线,AUC面积
AUC(Area under Curve):Roc曲线下的面积,介于0.1和1之间.Auc作为数值可以直观的评价分类器的好坏,值越大越好. 首先AUC值是一个概率值,当你随机挑选一个正样本以及负样本, ...
- 分类器评估方法:ROC曲线
注:本文是人工智能研究网的学习笔记 ROC是什么 二元分类器(binary classifier)的分类结果 ROC空间 最好的预测模型在左上角,代表100%的灵敏度和0%的虚警率,被称为完美分类器. ...
- 评价指标的局限性、ROC曲线、余弦距离、A/B测试、模型评估的方法、超参数调优、过拟合与欠拟合
1.评价指标的局限性 问题1 准确性的局限性 准确率是分类问题中最简单也是最直观的评价指标,但存在明显的缺陷.比如,当负样本占99%时,分类器把所有样本都预测为负样本也可以获得99%的准确率.所以,当 ...
- ROC曲线与AUC
一.ROC曲线 1.简介 ROC曲线全称是"受试者工作特征曲线 "(Receiver Operating Characteristic curve),又称为感受性曲线(Sensit ...
- R语言绘图:ggplot2绘制ROC
使用ggplot2包绘制ROC曲线 rocplot<- function(pred, truth, ...){ predob<- prediction(pred, truth) #打印AU ...
- 机器学习:评价分类结果(ROC 曲线)
一.基础理解 1)定义 ROC(Receiver Operation Characteristic Curve) 定义:描述 TPR 和 FPR 之间的关系: 功能:应用于比较两个模型的优劣: 模型不 ...
随机推荐
- drand48 等 随机数生成函数
参考: http://www.man7.org/linux/man-pages/man3/drand48.3.html drand48 返回服从均匀分布的·[0.0, 1.0) 之间的 double ...
- Spring Aware接口
实现aware接口的bean必须在spring的xml文件中注册,由spring的IOC容器管理 1-ApplicationContextAware接口 可以获取spring的IOC容器 2-Bean ...
- Maya API Test
import maya.OpenMaya as OpenMaya import maya.OpenMayaMPx as OpenMayaMPx sl = OpenMaya.MSelectionList ...
- LwIP Application Developers Manual2---Protocols概览
1.前言 本文是对LwIP Application Developers Manual的翻译 lwIP是模块化的并支持广泛的协议,这些大部分协议可以被裁减从而减小代码的尺寸 2.协议概览 链路层和网络 ...
- python 大全
python 大全:https://awesome-python.com/ 生产 GUI 应用的库 :PyQt ,PySide , 不错 (https://kivy.org)kivy - A li ...
- Kafka监控KafkaOffsetMonitor【转】
1.概述 前面给大家介绍了Kafka的背景以及一些应用场景,并附带上演示了Kafka的简单示例.然后,在开发的过程当中,我们会发现一些问题,那就是消息的监控情况.虽然,在启动Kafka的相关服务后,我 ...
- vc++高级班之窗口篇[4]---让程序只运行一个实例
大家都看过或者使用过类似只运行一个实例的程序,比如:QQ游戏.部分浏览器 等等! 让一个程序只运行一个实例的方法有多种,但是原理都类似,也就是在程序创建后,有窗口的程序在窗口创建前, 检查系统中是 ...
- select2使用方法总结
官网:http://select2.github.io/ 调用 <link href="~/Content/select2.min.css" rel="styles ...
- c 中打印格式%g
C语言中打印float或double类型最常用的是%f格式,最近看书时看到有使用%g格式打印. %f 表示按浮点数的格式打印. 小数点后固定6位 %e 表示以指数形式的浮点数格式输出. %g 表示自 ...
- Ex 4_10 给定一个有向图G=(V,E),其中边...(bellman-ford算法的应用).._第十二次作业
在bellman-ford算法中,循环n-1(n为顶点个数)次可以找出从源点到其他顶点的最多n-1条边的最短路径,若循环k次则可以找出从源点到其他顶点的最多k条边的最短路径. package org. ...