ROC-wiki

AUC常常在文章中作为评价一个分类器优劣的指标, 却总是忘记其原由, 索性记上一笔.

TPR, FPR

首先理解TP, FP, FN, TN的概念, 下面是其对应的类型. 这里, P表示正样本, 而N表示负样本, 下表中的行为真实的标签, 列为预测的标签.

预测\真实 P N
P TP(True Positive) FP(False Positive)
N FN(False Negative) TN(True Negative)

\[\mathrm{TPR} := \frac{\mathrm{TP}}{\mathrm{TP}+\mathrm{FN}}, \mathrm{FPR}:= \frac{\mathrm{FP}}{\mathrm{FP}+\mathrm{TN}},
\]

即TPR表示正样本分类正确的概率, FPR表示负样本判断错误(即取伪)的概率.

问题是如何通过这俩个指标反映一个二分类器的优劣, 首先假设二分类器由下列方式定义:

\[f:\mathbb{R}^d \rightarrow \mathbb{R}, \quad c(x;T) = I(f(x)>T),
\]

其中\(T\)便是阈值, 即超过一定的阈值判断其为正样本.

注: 其实此说法有瑕疵, 因为完全有可能选择超过一定的阈值判断其为负样本时分类器效果"更好", 但是这种争论没有多大意义, 逼近只需取\(f'(x)=-f(x)\)即可.

显示强调\(T\)的存在, 有\(\mathrm{TPR}(T)\)和\(\mathrm{FPR}(T)\), 另外, 此时\(f\)可以看成一个随机变量, 不妨令\(Y_+\)表示\(f\)的输入\(X\)为正样本时的随机变量, \(Y_-\)表示\(f\)的输入\(X\)为负样本时的随机变量, 则

\[\mathrm{TPR}(T)=P(Y_+>T) = \int_{T}^{\infty} p(y|+) \mathrm{d}y, \\
\mathrm{FPR}(T)=P(Y_->T) = \int_{T}^{\infty} p(y|-) \mathrm{d}y.
\]

ROC and AUC

ROC曲线就是以\(y=\mathrm{TPR}(T)\), \(x=\mathrm{FPR}(T)\)的曲线, \(T\)在这里充当一个中间变量.

AUC就是ROC曲线下的面积, 其意义是概率\(P(Y_+>Y_-)\):

\[\begin{array}{ll}
\mathrm{AUC}
&= \int_0^1 y(x) \mathrm{d}x = \int_0^1 \mathrm{TPR}(\mathrm{FPR}^{-1}(x)) \mathrm{d}x \\
&= \int_{+\infty}^{-\infty} \mathrm{TPR}(T) \mathrm{FPR}'(T) \mathrm{d}T \\
&= \int_{+\infty}^{-\infty} \int_{T}^{\infty} p(y|+) \cdot(-p(T|-)) \mathrm{d}y \mathrm{d}T \\
&= \int_{-\infty}^{+\infty} p(T|-) \int_{T}^{\infty} p(y|+) \mathrm{d}y \mathrm{d}T \\
&= \int_{-\infty}^{+\infty} \int_{-\infty}^{\infty} I(y>T)p(y|+) p(T|-) \mathrm{d}y \mathrm{d}T \\
&= P(Y_+ > Y_-).
\end{array}
\]

当然很自然的评价指标是, AUC距离0.5越远越好(这么说是因为AUC=0, 实际上只需\(f'(x)=-f(x)\)).

代码

sklearn-roc_curve

ROC and AUC的更多相关文章

  1. ROC和AUC介绍以及如何计算AUC ---好!!!!

    from:https://www.douban.com/note/284051363/?type=like 原帖发表在我的博客:http://alexkong.net/2013/06/introduc ...

  2. Area Under roc Curve(AUC)

    AUC是一种用来度量分类模型好坏的一个标准. ROC分析是从医疗分析领域引入了一种新的分类模型performance评判方法. ROC的全名叫做Receiver Operating Character ...

  3. 【转】ROC和AUC介绍以及如何计算AUC

    转自:https://www.douban.com/note/284051363/ ROC(Receiver Operating Characteristic)曲线和AUC常被用来评价一个二值分类器( ...

  4. ROC和AUC介绍以及如何计算AUC

    原文:http://alexkong.net/2013/06/introduction-to-auc-and-roc/ 为什么使用ROC曲线 既然已经这么多评价标准,为什么还要使用ROC和AUC呢?因 ...

  5. ROC和AUC理解

    一. ROC曲线概念 二分类问题在机器学习中是一个很常见的问题,经常会用到.ROC (Receiver Operating Characteristic) 曲线和 AUC (Area Under th ...

  6. 信息检索(IR)的评价指标介绍 - 准确率、召回率、F1、mAP、ROC、AUC

    原文地址:http://blog.csdn.net/pkueecser/article/details/8229166 在信息检索.分类体系中,有一系列的指标,搞清楚这些指标对于评价检索和分类性能非常 ...

  7. 评估分类器性能的度量,像混淆矩阵、ROC、AUC等

    评估分类器性能的度量,像混淆矩阵.ROC.AUC等 内容概要¶ 模型评估的目的及一般评估流程 分类准确率的用处及其限制 混淆矩阵(confusion matrix)是如何表示一个分类器的性能 混淆矩阵 ...

  8. ROC与AUC原理

    来自:https://blog.csdn.net/shenxiaoming77/article/details/72627882 来自:https://blog.csdn.net/u010705209 ...

  9. ROC,AUC,Precision,Recall,F1的介绍与计算(转)

    1. 基本概念 1.1 ROC与AUC ROC曲线和AUC常被用来评价一个二值分类器(binary classifier)的优劣,ROC曲线称为受试者工作特征曲线 (receiver operatin ...

  10. ROC,AUC,Precision,Recall,F1的介绍与计算

    1. 基本概念 1.1 ROC与AUC ROC曲线和AUC常被用来评价一个二值分类器(binary classifier)的优劣,ROC曲线称为受试者工作特征曲线 (receiver operatin ...

随机推荐

  1. Java交换数组元素

    Java 交换数组元素 代码示例 import java.util.Arrays; import java.util.Collections; import java.util.List; impor ...

  2. 22 SHELL 获取当前路径

    常见的一种误区,是使用 pwd 命令,该命令的作用是"print name of current/working directory",这才是此命令的真实含义,当前的工作目录,这里 ...

  3. Java Swing布局管理器GridBagLayout的使用示例 [转]

    GridBagLayout是java里面最重要的布局管理器之一,可以做出很复杂的布局,可以说GridBagLayout是必须要学好的的, GridBagLayout 类是一个灵活的布局管理器,它不要求 ...

  4. 转 Android Lifecycle、ViewModel和LiveData

    转自:https://www.jianshu.com/p/982545e01d0a 1.概述 在I / O '17的时候,其中一个重要的主题是Architecture Components.这是一个官 ...

  5. Linux:find命令中

    默认情况下, find 每输出一个文件名, 后面都会接着输出一个换行符 ('\n'), 因此我们看到的 find 的输出都是一行一行的: ls -l total 0 -rw-r--r-- 1 root ...

  6. When does compiler create default and copy constructors in C++?

    In C++, compiler creates a default constructor if we don't define our own constructor (See this). Co ...

  7. 【笔记】草履虫也能看懂的ELK搭建流程

    环境需要 Elasticsearch需要JAVA环境,至少是JDK1.8 elasticsearch 不允许root用户使用,需要新增个elk用户 如果觉得官网下载太慢,可以使用这个 https:// ...

  8. 分布式全局ID生成器原理剖析及非常齐全开源方案应用示例

    为何需要分布式ID生成器 **本人博客网站 **IT小神 www.itxiaoshen.com **拿我们系统常用Mysql数据库来说,在之前的单体架构基本是单库结构,每个业务表的ID一般从1增,通过 ...

  9. 如何在子线程中更新UI

    一:报错情况 android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that creat ...

  10. c#中Array,ArrayList 与List<T>的区别、共性与转换

    本文内容来自我写的开源电子书<WoW C#>,现在正在编写中,可以去WOW-Csharp/学习路径总结.md at master · sogeisetsu/WOW-Csharp (gith ...