ROC和AUC评价指标说明
来源:互联网 发布:javascript location 编辑:程序博客网 时间:2024/06/06 19:29
True Positive
, False Positive
, True Negative
, False Negative
。它们是根据真实类别与预测类别的组合来区分的.样本中的真实正例类别总数即TP+FN。True Positive Rate,TPR = TP/(TP+FN)。
同理,样本中的真实反例类别总数为FP+TN。False Positive Rate,FPR=FP/(TN+FP)。
预测
合计
1
0
实际
1 (P)
True Positive(TP)
False Negative(FN)
Actual Positive(TP+FN)
0 (N)
False Positive(FP)
True Negative(TN)
Actual Negative(FP+TN)
合计
Predicted Positive(TP+FP)
Predicted Negative(FN+TN)
TP+FP+FN+TN
总结一下,对于计算ROC,最重要的三个概念就是TPR, FPR, 截断点。
图中的虚线相当于随机预测的结果。不难看出,随着FPR的上升,ROC曲线从原点(0, 0)出发,最终都会落到(1, 1)点。ROC便是其右下方的曲线面积。下图展现了三种AUC的值:
AUC = 1,是完美分类器,采用这个预测模型时,不管设定什么阈值都能得出完美预测。绝大多数预测的场合,不存在完美分类器。
0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。
AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。
AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测,因此不存在AUC < 0.5的情况
ROC 计算例子
from sklearn import metricsimport numpy as npy = 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)print fprprint tprprint thresholds
通过计算,得到的结果(
FPR
,TPR
, 截断点
)为[ 0.5 0.5 1. 1. ]
[ 0.8 0.4 0.35 0.1 ]
将结果中的FPR与TPR画到二维坐标中,得到的ROC曲线如下(蓝色线条表示),ROC曲线的面积用AUC表示(淡黄色阴影部分)。
上例给出的数据如下:
y = np.array([1, 1, 2, 2])scores = np.array([0.1, 0.4, 0.35, 0.8])
用这个数据,计算TPR,FPR的过程是怎么样的呢?
1. 分析数据
y是一个一维数组(样本的真实分类)。数组值表示类别(一共有两类,1和2)。我们假设y中的1表示反例,2表示正例。即将y重写为:
y_true = [0, 0, 1, 1]
2. 针对score,将数据排序
3. 将截断点
依次取为score值
将截断点
依次取值为0.1,0.35,0.4,0.8时,计算TPR
和FPR
的结果。
3.1 截断点
为0.1
说明只要score>=0.1,它的预测类别就是正例。
此时,因为4个样本的score都大于等于0.1,所以,所有样本的预测类别都为P。
scores = [0.1, 0.4, 0.35, 0.8]y_true = [0, 0, 1, 1] y_pred = [1, 1, 1, 1]
TPR = TP/(TP+FN) = 1
FPR = FP/(TN+FP) = 1
3.2 截断点
为0.35
说明只要score>=0.35,它的预测类别就是P。
此时,因为4个样本的score有3个大于等于0.35。所以,所有样本的预测类有3个为P(2个预测正确,1一个预测错误);1个样本被预测为N(预测正确)。
scores = [0.1, 0.4, 0.35, 0.8]y_true = [0, 0, 1, 1] y_pred = [0, 1, 1, 1]
TPR = TP/(TP+FN) = 1
FPR = FP/(TN+FP) = 0.5
3.3 截断点
为0.4
说明只要score>=0.4,它的预测类别就是P。
此时,因为4个样本的score有2个大于等于0.4。所以,所有样本的预测类有2个为P(1个预测正确,1一个预测错误);2个样本被预测为N(1个预测正确,1一个预测错误)。
scores = [0.1, 0.4, 0.35, 0.8]y_true = [0, 0, 1, 1] y_pred = [0, 1, 0, 1]
TPR = TP/(TP+FN) = 0.5
FPR = FP/(TN+FP) = 0.5
3.4 截断点
为0.8
说明只要score>=0.8,它的预测类别就是P。所以,所有样本的预测类有1个为P(1个预测正确);3个样本被预测为N(2个预测正确,1一个预测错误)。
scores = [0.1, 0.4, 0.35, 0.8]y_true = [0, 0, 1, 1] y_pred = [0, 0, 0, 1]
TPR = TP/(TP+FN) = 0.5
FPR = FP/(TN+FP) = 0
用下面描述表示TPR和FPR的计算过程,更容易记住
- TPR:真实的正例中,被预测正确的比例
- FPR:真实的反例中,被预测正确的比例
最理想的分类器,就是对样本分类完全正确,即FP=0,FN=0。所以理想分类器FPR=0,TPR=0。
第一个点,(0,1),即FPR=0, TPR=1,这意味着FN(false negative)=0,并且FP(false positive)=0。Wow,这是一个完美的分类器,它将所有的样本都正确分类。
第二个点,(1,0),即FPR=1,TPR=0,类似地分析可以发现这是一个最糟糕的分类器,因为它成功避开了所有的正确答案。
第三个点,(0,0),即FPR=TPR=0,即FP(false positive)=TP(true positive)=0,可以发现该分类器预测所有的样本都为负样本(negative)。
第四个点(1,1),分类器实际上预测所有的样本都为正样本。经过以上的分析,我们可以断言,ROC曲线越接近左上角,该分类器的性能越好。
- ROC和AUC评价指标说明
- ROC曲线及AUC评价指标
- ROC曲线及AUC评价指标
- ROC曲线及AUC评价指标
- ROC曲线及AUC评价指标
- ROC曲线与AUC--模型评价指标
- 分类器评价指标——ROC曲线和AUC值
- 二分类问题的评价指标:ROC,AUC
- 分类器评价指标--ROC曲线及AUC值
- ROC AUC指标详解
- 关于ROC AUC指标的详细介绍说明
- AUC评价指标
- (机器学习算法常用指标)准确率,召回率,F1 值、ROC,AUC、mse,mape评价指标
- 信息检索(IR)的评价指标介绍 - 准确率、召回率、F1、mAP、ROC、AUC
- 信息检索(IR)的评价指标介绍 - 准确率、召回率、F1、mAP、ROC、AUC
- 信息检索(IR)的评价指标介绍 - 准确率、召回率、F1、mAP、ROC、AUC
- 信息检索(IR)的评价指标介绍 - 准确率、召回率、F1、mAP、ROC、AUC
- 信息检索(IR)的评价指标介绍 - 准确率、召回率、F1、mAP、ROC、AUC
- windows下github的ssh方式免密配置
- vue 页面缓存
- 大报表分段取数的灵活运用
- Minio快速入门
- springboot配置环境生开发测试环境
- ROC和AUC评价指标说明
- mybatis使用mapper代理的方式操作数据库
- JavaScript基础(6.Dom间接选择器)
- 记忆网络之Dynamic Memory Networks模型介绍及代码实现
- ARM内核和架构都是什么意思,它们到底是什么关系?
- JS的解析与执行——全局预处理命名冲突解决策略与执行
- 奇葩保险花样多,花样营销只为曝光量
- ShaderWeaver使用教程-文字闪烁
- 2017-12-11(docker挂载本地目录到容器)