zoukankan      html  css  js  c++  java
  • ROC and AUC

    ROC-wiki

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

    TPR, FPR

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

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

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

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

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

    [f:mathbb{R}^d ightarrow 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_-)):

    [egin{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(y|-)) mathrm{d}y mathrm{d}T \ &= int_{-infty}^{+infty} int_{T}^{infty} p(y|+)p(y|-) mathrm{d}y mathrm{d}T \ &= int_{-infty}^{+infty} int_{-infty}^{infty} I(y>T)p(y|+)p(y|-) mathrm{d}y mathrm{d}T \ &= P(Y_+ > Y_-). end{array} ]

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

    在这里插入图片描述

    代码

    sklearn-roc_curve

  • 相关阅读:
    Npm 被公司墙解决方法
    使用Docker开发NodeJs APP
    如何利用Require.Js管理多页面站点文件(译)
    Swift语言指南(十)--字符串与字符
    Swift语言指南(九)--基本运算符
    Swift语言指南(八)--语言基础之元组
    Swift语言指南(七)--语言基础之布尔值和类型别名
    web 开发入门
    JDBC的操作总结
    JDBC连接数据库
  • 原文地址:https://www.cnblogs.com/MTandHJ/p/13774073.html
Copyright © 2011-2022 走看看