本文结构:

  1. 什么是 ROC?
  2. 怎么解读 ROC 曲线?
  3. 如何画 ROC 曲线?
  4. 代码?
  5. 什么是 AUC?
  6. 代码?

ROC 曲线和 AUC 常被用来评价一个二值分类器的优劣。

先来看一下混淆矩阵中的各个元素,在后面会用到:


1. ROC :

纵轴为 TPR 真正例率,预测为正且实际为正的样本占所有正例样本的比例。
横轴为 FPR 假正例率,预测为正但实际为负的样本占所有负例样本的比例。

对角线对应的是 “随机猜想”

当一个学习器的 ROC 曲线被另一个学习器的包住,那么后者性能优于前者。
有交叉时,需要用 AUC 进行比较。

2. 先看图中的四个点和对角线:

  • 第一个点,(0,1),即 FPR=0, TPR=1,这意味着 FN(false negative)=0,并且FP(false positive)=0。这意味着分类器很完美,因为它将所有的样本都正确分类。
  • 第二个点,(1,0),即 FPR=1,TPR=0,这个分类器是最糟糕的,因为它成功避开了所有的正确答案。
  • 第三个点,(0,0),即 FPR=TPR=0,即 FP(false positive)=TP(true positive)=0,此时分类器将所有的样本都预测为负样本(negative)。
  • 第四个点(1,1),分类器将所有的样本都预测为正样本。
  • 对角线上的点表示分类器将一半的样本猜测为正样本,另外一半的样本猜测为负样本。

因此,ROC 曲线越接近左上角,分类器的性能越好。

3. 如何画 ROC 曲线

例如有如下 20 个样本数据,Class 为真实分类,Score 为分类器预测此样本为正例的概率。

  • 按 Score 从大到小排列
  • 依次将每个 Score 设定为阈值,然后这 20 个样本的标签会变化,当它的 score 大于或等于当前阈值时,则为正样本,否则为负样本。
  • 这样对每个阈值,可以计算一组 FPR 和 TPR,此例一共可以得到 20 组。
  • 当阈值设置为 1 和 0 时, 可以得到 ROC 曲线上的 (0,0) 和 (1,1) 两个点。

4. 代码:

输入 y 的真实标签,还有 score,设定标签为 2 时是正例:

y = np.array([1, 1, 2, 2])
scores = np.array([0.1, 0.4, 0.35, 0.8])
fpr, tpr, thresholds = metrics.roc_curve(y, scores, pos_label=2)

就会得到相应的 TPR, FPR, 截断点 :

fpr = array([ 0. ,  0.5,  0.5,  1. ])
tpr = array([ 0.5,  0.5,  1. ,  1. ])
thresholds = array([ 0.8 ,  0.4 ,  0.35,  0.1 ])#截断点

5. AUC:

是 ROC 曲线下的面积,它是一个数值,当仅仅看 ROC 曲线分辨不出哪个分类器的效果更好时,用这个数值来判断。

The AUC value is equivalent to the probability that a randomly chosen positive example is ranked higher than a randomly chosen negative example.

从上面定义可知,意思是随机挑选一个正样本和一个负样本,当前分类算法得到的 Score 将这个正样本排在负样本前面的概率就是 AUC 值。AUC 值是一个概率值,AUC 值越大,分类算法越好。

6. 代码:

import numpy as np
from sklearn.metrics import roc_auc_score
y_true = np.array([0, 0, 1, 1])
y_scores = np.array([0.1, 0.4, 0.35, 0.8])
roc_auc_score(y_true, y_scores)0.75

学习资料:
《机器学习》,周志华
http://alexkong.net/2013/06/introduction-to-auc-and-roc/
http://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_curve.html


推荐阅读
历史技术博文链接汇总
也许可以找到你想要的:
[入门问题][TensorFlow][深度学习][强化学习][神经网络][机器学习][自然语言处理][聊天机器人]

什么是 ROC AUC相关推荐

  1. 准确率,召回率,F值,ROC,AUC

    准确率,召回率,F值,ROC,AUC 责任编辑:词汇网 发表时间:2016-4-23 20:08:08 度量表 1.准确率 (presion)p=TPTP+FP 理解为你预测对的正例数占你预测正例总量 ...

  2. Recall(召回率) Precision(准确率) F-Measure E值 sensitivity(灵敏性) specificity(特异性)漏诊率 误诊率 ROC AUC

    Berkeley Computer Vision page Performance Evaluation 机器学习之分类性能度量指标 : ROC曲线.AUC值.正确率.召回率 True Positiv ...

  3. ROC/AUC、精准率、召回率、真正率,假正率等指标含义,学习笔记

    1. 混淆矩阵 对于二分类模型,预测值与真实值的组合情况,行成了混淆矩阵. 第一个字母表示是否预测正确(T/F),第二个表示预测为 P/1 还是 N/0. 2. 准确率 预测正确的结果占总样本的百分比 ...

  4. AP AR mAP ROC AUC(目标检测)

    目标检测之AP AR mAP ROC AUC(Evaluation metrics) 混淆矩阵中 TP.TN.FP.FN Precision查准率和Recall召回率 P-R曲线 AP mAP AR ...

  5. 回归和分类模型性能评估指标MSE,MAE,PR,ROC,AUC

    文章目录 0. 模型评估是什么,为什么 1. 不同类型问题的评估指标 1.1 回归问题 1.2 分类问题 1.2.1 准确率和错误率 1.2.2 精确率和召回率 1.2.3 PR曲线图 1.2.4 F ...

  6. 模型评估指标 -1- 基础篇 -FPR/TPR/F1/ROC/AUC

    导语:本文是模型评估指标系列的第一篇,将详细地介绍分类模型中基于混淆矩阵衍生出来的各个指标的计算公式,如准确率,精确率,召回率,FPR,TPR,ROC曲线的绘制逻辑,AUC的计算公式等.本文首发在个人 ...

  7. 准确率,精准率,召回率,真正率,假正率,ROC/AUC

      最近在看到这些词得时候老是混淆,看了之后还很容易遗忘,于是查了些资料把他们记录下来. 我们在设计深度学习网络模型的时候经常要对其进行评估,评估就要用到这些东西,在接介绍这个率,那个率之前,我先来介 ...

  8. ROC/AUC曲线学习及Python实现

    参考博客: 目标检测 - 评价指标 详解ROC/AUC计算过程 [机器学习笔记]:一文让你彻底理解准确率,精准率,召回率,真正率,假正率,ROC/AUC 一.准确率,精准率,召回率 1.TP.TN.F ...

  9. ROC/AUC 简易试验 最佳截断点 混淆矩阵 敏感度 特异度 约登指数 各个指标置信区间

    ROC/AUC 简易试验 最佳截断点 敏感度 特异度 约登 召回率 混淆矩阵 学习链接, 鼠标放这里 常规学习下面这个矩阵 金标准 + - 模型 + True Positives(TP) False ...

  10. 机器学习分类器评价指标详解(Precision, Recall, PR, ROC, AUC等)(一)

    为了系统性地理解机器学习模型的不同评价指标及其之间的关系,我们将从其定义出发,探究其物理含义及彼此之间的联系,并从数学上给出相应的公式推导,以方便后续用到时复习理解.由于篇幅较长,因此将其分为两篇,这 ...

最新文章

  1. Cpp 对象模型探索 / 编译器为对象创建缺省析构函数的条件
  2. Prometheus的promql符号表示
  3. 不加载执行js_前端性能优化:preload 预加载页面资源
  4. 综述 | 卷积神经网络表征可视化研究
  5. 音视频学习之 - H264解码
  6. jpype,jpython调用jar包中jdk的问题.
  7. mysql 用户授权授权_mysql的用户权限如何授权
  8. htcd816+android密码,详细的HTC Desire 816解锁教程
  9. java-数字转换汉语中人民币的大写
  10. 文件服务器不能打印,服务器不能用作打印服务器 - Windows Server | Microsoft Docs
  11. LAN9252/3 EtherCAT module
  12. CWebBrowser 中处理回车相应的问题
  13. SLCP验厂辅导,SLCP是向最终用户分享已验证的评估数据的关键
  14. SparkConf 配置的概念和用法
  15. Windows API一日一练 29 SelectObject和DeleteObject函数
  16. Gunicorn系列之利用Gunicorn启动项目
  17. 爱死Intellij Idea 01
  18. 实验 基本交换机设置
  19. 微信小程序:各种Tab栏
  20. OpenEmbedded Yocto BitBake Poky以及之间关系

热门文章

  1. Android创建自定义系统键盘
  2. 台式电脑蓝牙关了之后就开不了_小白必读:超实用的电脑维护小常识
  3. SSL证书下载失败如何解决
  4. 使用Charles抓包安卓模拟器(MuMu)
  5. 程序员应该如何学习算法?
  6. C# Excel 为图表添加趋势线、误差线
  7. 程序员成语:不好!语文老师的棺材板快要压不住了!
  8. 怎么进行视频配音?建议收藏这些配音方法
  9. kettle 笛卡尔_Kettle-Spoon入门示例
  10. input获取焦点vue_Vue点击显示文本框并获取焦点