AUC指标之ROC曲线只有一个点的问题

在一般认知中,用模型对测试集进行分类预测,结果应该是X或者X‘(也可以说是或者否)。根据混淆矩阵算出TP、FP、TN、FN,进一步算出TPR、FPR。一个测试集只会有一对TPR/FPR值,那么ROC曲线就只会有一个点,何谈曲线之说?难道是用多个测试集得到多对TPR/FPR值,来绘制ROC曲线吗?实则不然。

ROC曲线,一般适用于分类器输出一个“概率值”,即这个样本属于某个类的概率是多少。在计算的时候会依次用所有样本的概率值作为阈值, 用阀值和所有样本的预测值进行比较,大于这个阈值的样本预测为正类,小于这个阈值的样本预测为负类。从而,对于每个阈值都能得到对应的TPR/FPR, 也就是ROC曲线上的一个点。样本数量n=>阀值数量n=>点数量n(不考虑去重),最终构成ROC曲线。

计算示例

测试集7个样本ABCDEFG的分类真实值:[0, 0, 0, 0, 1, 1, 1]

模型预测为1的概率分别是:[0.3, 0.2, 0.7, 0.5, 0.4, 0.9, 0.6]

1.以0.3为阀值,预测值[1, 0, 1, 1, 1, 1, 1]. TP、FP、TN、FN=3、3、1、0,  TPR、FPR=3/3、3/4.

2.以0.2为阀值,预测值[1, 1, 1, 1, 1, 1, 1]. TP、FP、TN、FN=3、4、0、0,  TPR、FPR=3/3、4/4.

3.以0.7为阀值,预测值[0, 0, 1, 0, 0, 1, 0]. TP、FP、TN、FN=1、1、3、2,  TPR、FPR=1/3、1/4.

4.以0.5为阀值,预测值[0, 0, 1, 1, 0, 1, 1]. TP、FP、TN、FN=2、2、2、1,  TPR、FPR=2/3、2/4.

5.以0.4为阀值,预测值[0, 0, 1, 1, 1, 1, 1]. TP、FP、TN、FN=3、2、2、0,  TPR、FPR=3/3、2/4.

6.以0.9为阀值,预测值[0, 0, 0, 0, 0, 1, 0]. TP、FP、TN、FN=1、0、4、2,  TPR、FPR=1/3、0/4.

7.以0.6为阀值,预测值[0, 0, 1, 0, 0, 1, 1]. TP、FP、TN、FN=2、1、3、1,  TPR、FPR=2/3、1/4.

8.按照横FPR纵TPR坐标从小到大排序坐标点:(0,0.33)(0.25,0.33)(0.25,0.67)(0.5,0.67)(0.5,1)(0.75,1)(1,1)

9.根据上述坐标点绘制曲线,计算曲线包围的面积,即AUC的值

代码示例

import numpy as np

from sklearn import metrics

import matplotlib.pyplot as plt

test_true = np.array([0, 0, 0, 0, 1, 1, 1])

test_pre = np.array([0.3, 0.2, 0.7, 0.5, 0.4, 0.9, 0.6])

fpr, tpr, thresholds = metrics.roc_curve(test_true, test_pre, pos_label=1)

print fpr

print tpr

print thresholds

plt.plot(fpr,tpr,marker = ‘o‘)

plt.show()

auc = metrics.auc(fpr, tpr)

print auc

‘‘‘

值得关注的函数,注意pos_label的设置

fpr, tpr, thresholds=sklearn.metrics.roc_curve(y_true,y_score,pos_label=None)

pos_label : int or str, default=None,Label considered as positive and others are considered negative.

‘‘‘

关于阀值

最后说明一点,用每个概率结果作为阀值是计算ROC曲线的一个度量元素。没有业务语义。不用过多思考。

但在实际项目中,如何用概率结果判断业务分类,就需要思考阀值的具体设定了。不能想当然的用0.5一刀切,可以参考:http://blog.sina.com.cn/s/blog_13a4bb3270102w1om.html

原文地址:https://www.cnblogs.com/myshuzhimei/p/11746897.html

时间: 2024-08-02 08:53:23

AUC指标之ROC曲线只有一个点的问题的相关文章

ROC曲线、AUC、Precision、Recall、F-measure理解及Python实现

本文首先从整体上介绍ROC曲线.AUC.Precision.Recall以及F-measure,然后介绍上述这些评价指标的有趣特性,最后给出ROC曲线的一个Python实现示例. 一.ROC曲线.AUC.Precision.Recall以及F-measure 二分类问题的预测结果可能正确,也可能不正确.结果正确存在两种可能:原本对的预测为对,原本错的预测为错:结果错误也存在两种可能:原本对的预测为错,原本错的预测为对,如Fig 1左侧所示.其中Positives代表预测是对的,Negatives

ROC曲线与AUC值

本文根据以下文章整理而成,链接: (1)http://blog.csdn.net/ice110956/article/details/20288239 (2)http://blog.csdn.net/chjjunking/article/details/5933105 1.概述 AUC(Area Under roc Curve)是一种用来度量分类模型好坏的一个标准.这样的标准其实有很多,例如:大约10年前在machine learning文献中一统天下的标准:分类精度:在信息检索(IR)领域中常

机器学习之分类器性能指标之ROC曲线、AUC值

分类器性能指标之ROC曲线.AUC值 一 roc曲线 1.roc曲线:接收者操作特征(receiveroperating characteristic),roc曲线上每个点反映着对同一信号刺激的感受性. 横轴:负正类率(false postive rate FPR)特异度,划分实例中所有负例占所有负例的比例:(1-Specificity) 纵轴:真正类率(true postive rate TPR)灵敏度,Sensitivity(正类覆盖率) 2针对一个二分类问题,将实例分成正类(postive

ROC曲线是通过样本点分类概率画出的 例如某一个sample预测为1概率为0.6 预测为0概率0.4这样画出来,此外如果曲线不是特别平滑的话,那么很可能存在过拟合的情况

ROC和AUC介绍以及如何计算AUC from:http://alexkong.net/2013/06/introduction-to-auc-and-roc/ ROC(Receiver Operating Characteristic)曲线和AUC常被用来评价一个二值分类器(binary classifier)的优劣,对两者的简单介绍见这里.这篇博文简单介绍ROC和AUC的特点,以及更为深入地,讨论如何作出ROC曲线图以及计算AUC. ROC曲线 需要提前说明的是,我们这里只讨论二值分类器.对

AUC,KS,ROC

要弄明白ks值和auc值的关系首先要弄懂roc曲线和ks曲线是怎么画出来的.其实从某个角度上来讲ROC曲线和KS曲线是一回事,只是横纵坐标的取法不同而已.拿逻辑回归举例,模型训练完成之后每个样本都会得到一个类概率值(注意是类似的类),把样本按这个类概率值排序后分成10等份,每一份单独计算它的真正率和假正率,然后计算累计概率值,用真正率和假正率的累计做为坐标画出来的就是ROC曲线,用10等分做为横坐标,用真正率和假正率的累计值分别做为纵坐标就得到两个曲线,这就是KS曲线.AUC值就是ROC曲线下放

【机器学习】--模型评估指标之混淆矩阵,ROC曲线和AUC面积

一.前述 怎么样对训练出来的模型进行评估是有一定指标的,本文就相关指标做一个总结. 二.具体 1.混淆矩阵 混淆矩阵如图: 相关公式: 公式解释: fp_rate: tp_rate: recall:(召回率) 值越大越好 presssion:(准确率) TP:本来是正例,通过模型预测出来是正列 TP+FP:通过模型预测出来的所有正列数(其中包括本来是负例,但预测出来是正列) 值越大越好 2.ROC曲线 过程:对第一个样例,预测对,阈值是0.9,所以曲线向上走,以此类推. 对第三个样例,预测错,阈

混淆矩阵、准确率、精确率/查准率、召回率/查全率、F1值、ROC曲线的AUC值

准确率.精确率(查准率).召回率(查全率).F1值.ROC曲线的AUC值,都可以作为评价一个机器学习模型好坏的指标(evaluation metrics),而这些评价指标直接或间接都与混淆矩阵有关,前四者可以从混淆矩阵中直接计算得到,AUC值则要通过ROC曲线进行计算,而ROC曲线的横纵坐标又和混淆矩阵联系密切,所以在了解这些评价指标之前,先知道什么是混淆矩阵很有必要,也方便记忆. 1.混淆矩阵 对于一个二分类问题,我们可以得到如表 1所示的的混淆矩阵(confusion matrix): 表

评估指标:ROC,AUC,Precision、Recall、F1-score

一.ROC,AUC ROC(Receiver Operating Characteristic)曲线和AUC常被用来评价一个二值分类器(binary classifier)的优劣 . ROC曲线一般的横轴是FPR,纵轴是FPR.AUC为曲线下面的面积,作为评估指标,AUC值越大,说明模型越好.如下图: 二.Precision.Recall.F1-score Terminology and derivationsfrom a confusion matrix true positive (TP)

分类器性能指标之ROC曲线、AUC值

一 roc曲线 1.roc曲线:接收者操作特征(receiveroperating characteristic),roc曲线上每个点反映着对同一信号刺激的感受性. 横轴:负正类率(false postive rate FPR)特异度,划分实例中所有负例占所有负例的比例:(1-Specificity) 纵轴:真正类率(true postive rate TPR)灵敏度,Sensitivity(正类覆盖率) 2针对一个二分类问题,将实例分成正类(postive)或者负类(negative).但是实