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为精确时,需要积分。仅存于理论层面。

  • 相关阅读:
    java新手的session初体验
    菜鸟身份看泛型
    Java初学者不可不知的MyEclipse的设置技巧(自动联想功能)
    GCT之数学公式(几何部分)
    GCT之数学公式(代数部分)
    GCT之语文细节知识
    单元测试的方法
    常用的测试方法
    SQL 经典语句大全
    待处理(一)
  • 原文地址:https://www.cnblogs.com/suanec/p/7145866.html
Copyright © 2011-2022 走看看