ROC曲线学习总结 您所在的位置:网站首页 思维导图的绘制实验报告 ROC曲线学习总结

ROC曲线学习总结

2024-07-01 01:40| 来源: 网络整理| 查看: 265

文章目录 ROC曲线学习总结1. ROC曲线(Receiver Operating Characteristic)的概念和绘制2. 利用ROC曲线评价模型性能——AUC(Area Under Curve)3. 利用ROC曲线选择最佳模型3.1 不同模型之间选择最优模型3.2 同一模型中选择最优点对应的最优模型3.3 当测试集中的正负样本的分布变换的时候,ROC曲线能够保持不变 ROC曲线在多分类问题上的推广

ROC曲线学习总结

最近在学习机器学习基础知识部分的时候,看到了用于评估模型性能的ROC曲线,想起来之前上课的时候听老师提起过,当时没有认真去看,所以这次大体上了解了一下,来谈谈自己的看法,并做些总结。

1. ROC曲线(Receiver Operating Characteristic)的概念和绘制

​ ROC的全称是“受试者工作特征”(Receiver Operating Characteristic)曲线,首先是由二战中的电子工程师和雷达工程师发明的,用来侦测战场上的敌军载具(飞机、船舰),也就是信号检测理论。之后很快就被引入了心理学来进行信号的知觉检测。此后被引入机器学习领域,用来评判分类、检测结果的好坏。因此,ROC曲线是非常重要和常见的统计分析方法。

首先介绍一下在模型评估上的一些基本概念:

真实情况预测结果含义统计量正例反例正例TP(将正例正确预测为正例)FN(将正例错误预测为负例)TP + FN 表示实际数据集中正样本的数量召回率Recall / 灵敏度Sensitivity / TPR = TP/(TP+FN), 漏诊率 = 1 - 灵敏度反例FP(将负例错误的预测为正例)TN(将负例正确的预测为负例)FP + TN 表示实际数据集中负样本的数量FPR = FP/(FP+TN), 特异度(Specificity) = 1 - FPR = TN/(FP+TN)加和含义TP + FP 表示预测的正类样本数FN + TN 表示预测的负类样本数TP + FN + FP + TN 表示样本总数统计量精确率Precision = TP/(TP+FP) 正确率Accuracy = (TP+TN)/(TP+TN+FP+FN), 错误率 = (FP+FN)/(TP+TN+FP+FN), F-measure = 2*(Precision*Recall)/(Precision+Recall)

其中最重要的两个公式如下:

​ T P R = T P T P + F N , F P R = F P F P + T N TPR = \frac{TP}{TP+FN} ,FPR = \frac{FP}{FP+TN} TPR=TP+FNTP​,FPR=FP+TNFP​

在ROC曲线图中,每个点以对应的 F P R FPR FPR值为横坐标,以 T P R TPR TPR值为纵坐标

ROC曲线的绘制步骤如下:

假设已经得出一系列样本被划分为正类的概率Score值,按照大小排序。从高到低,依次将“Score”值作为阈值threshold,当测试样本属于正样本的概率大于或等于这个threshold时,我们认为它为正样本,否则为负样本。举例来说,对于某个样本,其“Score”值为0.6,那么“Score”值大于等于0.6的样本都被认为是正样本,而其他样本则都认为是负样本。每次选取一个不同的threshold,得到一组FPR和TPR,以FPR值为横坐标和TPR值为纵坐标,即ROC曲线上的一点。根据3中的每个坐标点,画图。

ROC曲线绘制实例

1、分析数据 y_true = [0, 0, 1, 1];scores = [0.1, 0.4, 0.35, 0.8]; 2、列表

样本预测属于P的概率(score)真实类别y[0]0.1Ny[1]0.4Ny[2]0.35Py[3]0.8P

3、将截断点依次取为score值,计算TPR和FPR。 当截断点为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]; 正例与反例信息如下:

正例反例正例TP=2FN=0反例FP=2TN=0

由此可得: TPR = TP/(TP+FN) = 1; FPR = FP/(TN+FP) = 1;

当截断点为0.35时: scores = [0.1, 0.4, 0.35, 0.8];y_true = [0, 0, 1, 1];y_pred = [0, 1, 1, 1]; 正例与反例信息如下:

正例反例正例TP=2FN=0反例FP=1TN=1

由此可得: TPR = TP/(TP+FN) = 1; FPR = FP/(TN+FP) = 0.5;

当截断点为0.4时: scores = [0.1, 0.4, 0.35, 0.8];y_true = [0, 0, 1, 1];y_pred = [0, 1, 0, 1]; 正例与反例信息如下:

正例反例正例TP=1FN=1反例FP=1TN=1

由此可得: TPR = TP/(TP+FN) = 0.5; FPR = FP/(TN+FP) = 0.5;

当截断点为0.8时: scores = [0.1, 0.4, 0.35, 0.8];y_true = [0, 0, 1, 1];y_pred = [0, 0, 0, 1];

正例与反例信息如下:

正例反例正例TP=1FN=1反例FP=0TN=2

由此可得: TPR = TP/(TP+FN) = 0.5; FPR = FP/(TN+FP) = 0;

4、根据TPR、FPR值,以FPR为横轴,TPR为纵轴画图。

2. 利用ROC曲线评价模型性能——AUC(Area Under Curve)

​ AUC表示ROC曲线下的面积,主要用于衡量模型的泛化性能,即分类效果的好坏。AUC是衡量二分类模型优劣的一种评价指标,表示正例排在负例前面的概率。一般在分类模型中,预测结果都是以概率的形式表现,如果要计算准确率,通常都会手动设置一个阈值来将对应的概率转化成类别,这个阈值也就很大程度上影响了模型准确率的计算。

之所以采用AUC来评价,主要还是考虑到ROC曲线本身并不能直观的说明一个分类器性能的好坏,而AUC值作为一个数量值,具有可比较性,可以进行定量的比较。

AUC值的计算方法:

将坐标点按照横坐标FPR排序 。计算第 i i i个坐标点和第 i + 1 i+1 i+1个坐标点的间距 d x dx dx 。获取第 i i i或者 i + 1 i+1 i+1个坐标点的纵坐标y。计算面积微元 d s = y d x ds=ydx ds=ydx。对面积微元进行累加,得到AUC。

AUC值对模型性能的判断标准:

AUC = 1,是完美分类器,采用这个预测模型时,存在至少一个阈值能得出完美预测。绝大多数预测的场合,不存在完美分类器。0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。 3. 利用ROC曲线选择最佳模型

首先了解一下ROC曲线图上很重要的四个点:

第一个点 ( 0 , 1 ) (0,1) (0,1),即FPR=0, TPR=1,这意味着FN(False Negative)=0,并且FP(False Positive)=0。意味着这是一个完美的分类器,它将所有的样本都正确分类。第二个点 ( 1 , 0 ) (1,0) (1,0),即FPR=1,TPR=0,意味着这是一个最糟糕的分类器,因为它成功避开了所有的正确答案。第三个点 ( 0 , 0 ) (0,0) (0,0),即FPR=TPR=0,即FP(False Positive)=TP(True Positive)=0,可以发现该分类器预测所有的样本都为负样本(Negative)。第四个点 ( 1 , 1 ) (1,1) (1,1),即FPR=TPR=1,分类器实际上预测所有的样本都为正样本。

从上面给出的四个点可以发现,==ROC曲线图中,越靠近(0,1)的点对应的模型分类性能越好。==而且可以明确的一点是,ROC曲线图中的点对应的模型,它们的不同之处仅仅是在分类时选用的阈值(Threshold)不同,每个点所选用的阈值都对应某个样本被预测为正类的概率值。

那么我们如何根据ROC曲线图定量的找到当前最优的分类模型呢?

3.1 不同模型之间选择最优模型

​ 当然最直观的比较方式就是基于AUC值,不同的模型对应的ROC曲线中,AUC值大的模型性能自然相对较好。而当AUC值近似相等时,有两种情况:第一种是ROC曲线之间没有交点;第二种是ROC曲线之间存在交点。在两个模型AUC值相等时,并不代表两个模型的分类性能也相等。

ROC曲线之间没有交点

​ 如下图所示,A,B,C三个模型对应的ROC曲线之间交点,且AUC值是不相等的,此时明显更靠近 ( 0 , 1 ) (0,1) (0,1)点的A模型的分类性能会更好。

ROC曲线之间存在交点

​ 如下图所示,模型A、B对应的ROC曲线相交却AUC值相等,此时就需要具体问题具体分析:当需要高Sensitivity值时,A模型好过B;当需要高Specificity值时,B模型好过A。

在这里插入图片描述

3.2 同一模型中选择最优点对应的最优模型

​ 根据前面的内容,我们可以知道,在同一条ROC曲线上,越靠近 ( 0 , 1 ) (0,1) (0,1)的坐标点对应的模型性能越好,因为此时模型具有较高的真正率和较低的假正率。那么我们如何定量的从一条ROC曲线上找到这个最优的点呢?通常需要借助ISO精度线来找到这个最优的点

ISO精度线(ISO Accuracy Lines)

​ ISO精度线实际上一类斜率确定而截距不确定的直线,设ISO精度线的方程为 y = a x + b y=ax+b y=ax+b,其中 a a a为直线的斜率, b b b为直线的截距。

​ a = N E G P O S a = \frac{NEG}{POS} a=POSNEG​

​ 其中, N E G NEG NEG为数据集中负样本的数目, P O S POS POS为数据集中正样本的数目

​ 如下图所示,当 a = 0.5 a=0.5 a=0.5时,图中的红线都可以作为ISO精度线

在这里插入图片描述

根据ISO精度线确定最优点

​ 因为ROC曲线上的点都是在同一模型下改变分类阈值得到的,所以在同一条ROC曲线上确定最优点的过程,其实就是确定最佳分类阈值的过程,这个阈值能够让模型在高真正率和低假正率之间取得最好的平衡,即模型的分类性能最好。

根据ISO精度线确定最优点的步骤:

首先得到ISO精度线的斜率 a = N E G P O S a = \frac{NEG}{POS} a=POSNEG​

初始化截距 b = 0 b=0 b=0,即此时的直线方程为 y = a x y=ax y=ax

逐渐增大截距,即把直线向左上角移动,直到直线与ROC曲线只有一个交点,则这个交点即为我们要找的最优点,这个最优点对应的分类阈值即为使得当前模型性能最优的分类阈值(本来刚开始考虑这个点应该是切点,不过后来想想应该不是,因为ROC图本身是不连续的,相邻节点间都是通过直线连接的)

3.3 当测试集中的正负样本的分布变换的时候,ROC曲线能够保持不变

​ 之所以把ROC曲线的这个特性特意提出来讲,是因为我觉得这是ROC曲线和AUC这个评价标准最大的优势所在。其他的如正确率、精确率、召回率和F值都会受到样本分布的影响,即对于同一模型,采用这些指标进行性能评估的话,如果输入的样本中正负样本分布发生变化,则最终的正确率等参数也会变化,这种最终结果会被输入样本分布影响的特性,显然使得这些指标在评估某个样本性能时会对输入样本产生依赖,不能很客观的反应模型的性能(所以这也是为什么一个可信数据集非常重要的原因,因为数据集不仅影响对模型的训练,也会直接影响对模型性能的评估。基于这两点,我们就可以断言,对于同一个模型,更可信的数据集肯定能够取得更好的效果。)

​ 而对应于同一个模型,当其中的正负样本分布发生变化时,ROC曲线能够基本保持不变,这就保证至少在模型评估阶段,样本分布不会对这一过程产生太大的影响。

​ 那么如何理解这种不变性呢?网上找了很多博客都没有人解释过,我也只能简要的谈谈我的想法,日后如果看到了比较权威的解释再来补充吧。

​ 首先,ROC曲线每个点都是以某个阈值对应的TPR为纵坐标,以对应FPR为横坐标,所以不变性肯定是反映在样本分布改变时,ROC曲线图中的点随着阈值变化横纵坐标的变化保持一致。

​ 举个例子,当一个数据集中有 P P P个正样本和 N N N个负样本时,对应于某个阈值 T h r e s h o l d Threshold Threshold,其 T P R TPR TPR和 F P R FPR FPR计算公式如下:

​ T P R = T P T P + F N , F P R = F P F P + T N TPR = \frac{TP}{TP+FN} ,FPR = \frac{FP}{FP+TN} TPR=TP+FNTP​,FPR=FP+TNFP​

​ 当我们将负样本的数目增加十倍,即此时数据集中有 P P P个正样本和 10 ∗ N 10*N 10∗N个负样本,根据上面的计算公式可知,在负样本数量增加十倍之后,

T P R TPR TPR值的取值范围是不变,因为 T P + F N TP+FN TP+FN不变,同时 T P TP TP的取值为 [ 0 , P ] [0,P] [0,P]之间的整数,所以 T P R TPR TPR的离散取值区间在负样本增加的情况下是不变的。在 T P R TPR TPR值不变的条件下,此时对应的 T h r e s h o l d Threshold Threshold阈值基本不变(如果变化,则 T P R TPR TPR值不可能不变),其对应的 F P R FPR FPR值的取值范围也是不变的。根据样本独立同分布的假设,负样本数目改变,但负样本的预测概率分布是不变的,即当 T h r e s h o l d Threshold Threshold不变时, F P FP FP值和 F P + T N FP+TN FP+TN值应该是等比例变化的,此时 F P R FPR FPR值不变。

综上,我们可以从感性认识上证明当样本的分布发生变化时,ROC曲线能够基本保持不变。

接下来给出一个实例,对比ROC曲线和PR(Precision-Recall)曲线在样本分布变化时的不同。下图中,(a)和(b)分别为从初始测试集中得到的ROC曲线和PR曲线,©和(d)分别为负样本增加十倍之后得到的ROC曲线和PR曲线。由图中可知,当样本分布变化时,ROC曲线基本没有变化,而PR曲线则变化很大,这充分说明了ROC曲线在模型性能评估上的优势。

在这里插入图片描述

ROC曲线在多分类问题上的推广

​ 经典的ROC曲线适用于对二分类问题进行模型评估,通常将它推广到多分类问题的方式有两种:

对于每种类别,分别计算其将所有样本点的预测概率作为阈值所得到的 T P R TPR TPR和 F P R FPR FPR值(是这种类别为正,其他类别为负),最后将每个取定的阈值下,对应所有类别的 T P R TPR TPR值和 F P R FPR FPR值分别求平均,得到最终对应这个阈值的 T P R TPR TPR和 F P R FPR FPR值首先,对于一个测试样本:1)标签只由0和1组成,1的位置表明了它的类别(可对应二分类问题中的‘’正’’),0就表示其他类别(‘’负‘’);2)要是分类器对该测试样本分类正确,则该样本标签中1对应的位置在概率矩阵P中的值是大于0对应的位置的概率值的。

​ 上面的两个方法得到的ROC曲线是不同的,当然曲线下的面积AUC也是不一样的。 在python中,方法1和方法2分别对应sklearn.metrics.roc_auc_score函数中参数average值为’macro’和’micro’的情况。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有