zoukankan      html  css  js  c++  java
  • AUC计算

    2017-07-10 14:38:24


    理论参考: 

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

    http://www.cnblogs.com/suanec/p/5941630.html

    ROC全称:receiver operation characters,适用于二分类。

    同理可得由ROC曲线计算的AUC,适用于二分类。

    计算AUC需要知道这个表格:

      实际正样本 实际负样本
    预测正样本 正样本正确数 正样本错误数
    预测负样本 负样本错误数 负样本正确数

    其中实际正样本常被成为Positive,实际负样本常被成为Negative。

    对应的表格中数据分别为True Positive、False Positive、True Negative、False Negative。

    对应的概率Rate,分别为TPR、FPR、TNR、FNR。

    其中TPR=TP/P、FPR=FP/N,绘制ROC,主要使用TPR和FPR。

    使用网上的例子:

    模型预测情况与实际类标情况:

    由以上绘制的ROC曲线及各点取值。

     

     当阈值自高向低取,分别为0.9、0.8、0.7、0.6、0.55。

    0.9:TPR:0.1,FPR:0

    0.8:TPR:0.2,FPR:0

    0.7:TPR:0.2,FPR:0.1

    0.6:TPR:0.3,FPR:0.1

    0.55:TPR:0.4,FPR:0.1

    按照取值绘制ROC图线,计算图线下面积即可得AUC。

    其中:以0.7举例TRP和FPR如何统计:

    当阈值为0.7时,可得模型将1、2、3样本分为了正样本,其他为负样本。

    1、2、3中正样本正确了两个。

    TPR:正样本正确率为正样本正确数目/所有正样本数目:2/10=0.2。

    FPR:正样本错误率为正样本错误数目/所有负样本数目:1/10=0.1。

    那么在0.7为阈值可以绘制ROC曲线点:(0.1,0.2)。

    以此类推。绘制多个阈值下的ROC曲线点,可得ROC曲线的近似值。(因为阈值取值数量有限,故ROC为近似值)

    计算AUC:

    因为ROC曲线近似,可以利用矩阵面积加和得到面积和。(计算AUC面积和,就可以按个人喜好计算了,spark mllib中的AUC是按坐标取值计算连线形成梯形的面积加和。个人感觉按纵轴计算矩阵面积实现更容易一些,但精度有损失。)

    当ROC为精确时,需要积分。仅存于理论层面。

  • 相关阅读:
    hsdis反汇编java源码工具的使用方法
    final添加内存屏障问题
    Spring-AOP
    Spring-IOC
    IO与NIO
    设计模式学习笔记
    Redis学习笔记
    MySQL优化
    STAR法则
    大文件分割之Linux
  • 原文地址:https://www.cnblogs.com/suanec/p/7145866.html
Copyright © 2011-2022 走看看