《SPSS统计分析与行业应用实战》之诊断试验与ROC分析

时间:2024-05-22 14:11:15

《SPSS统计分析与行业应用实战》之诊断试验与ROC分析

一、常用诊断试验的指标

(1)正样本和负样本

正样本就是使模型得出正确结论的例子,负样本是模型得出错误结论的例子

比如你要从一堆猫狗图片中检测出狗的图片,那么狗就是正样本,猫就是负样本;反过来你若是想检测出猫的图片,那么猫就是正样本,狗就是负样本。

《SPSS统计分析与行业应用实战》之诊断试验与ROC分析

 

(2)FN, FP, TN, TP

先建立一个二分类的混淆矩阵,混淆矩阵是机器学习中总结分类模型预测结果的情形分析表,以矩阵形式将数据集中的记录按照真实的类别与分类模型预测的类别判断两个标准进行汇总。其中矩阵的行表示真实值,矩阵的列表示预测值,下面我们先以二分类为例,矩阵表现形式,如下:

现在我们举个列子,并画出混淆矩阵表,假如宠物店有10只动物,其中6只狗,4只猫,现在有一个分类器将这10只动物进行分类,分类结果为5只狗,5只猫,那么我们画出分类结果混淆矩阵,并进行分析,如下(我们把狗作为正类):

《SPSS统计分析与行业应用实战》之诊断试验与ROC分析

通过混淆矩阵我们可以轻松算的真实值狗的数量(行数量相加)为6=5+1,真实猫的数量为4=0+4,预测值分类得到狗的数量(列数量相加)为5=5+0,分类得到猫的数量为5=1+4。同时,我们不难发现,对于二分类问题,矩阵中的4个元素刚好表示TP,TN,FP,TN这四个符号量,如下图:

《SPSS统计分析与行业应用实战》之诊断试验与ROC分析

TP:True Positive,被判定为正样本,事实上也是正样本。真的正样本,也叫真阳性。

FN:False Negative,被判定为负样本,但事实上是正样本。假的负样本,也叫假阴性。

FP:False Positive,被判定为正样本,但事实上是负样本。假的正样本,也叫假阳性。

TN:True Negative,被判定为负样本,事实上也是负样本。真的负样本,也叫真阴性。

 

1.准确率  accuracy

  准确率:样本中类别预测正确的比例,即

《SPSS统计分析与行业应用实战》之诊断试验与ROC分析

准确率反映模型类别预测的正确能力,包含了两种情况,正例被预测为正例,反例被预测为反例,当我们对类别为1、类别为0的关注程度一致时(类别为对称的),准确率是一个不错的评价指标,但是如果我们更关注样本被预测为类1的情况,准确率就不是一个合适的指标,因为通过它你无法知道正例的预测情况,因为反例的预测情况也包含在其中,而这并不是我们关注的。

2.精确率 precision

精确率:被预测为正例的样本中,真实的正例所占的比例,即

《SPSS统计分析与行业应用实战》之诊断试验与ROC分析

精确率反映模型在正例上的预测能力,该指标的关注点在正例上,如果我们对正例的预测准确性很关注,那么精确率是一个不错的指标。例如在医学病情诊断上,患者在意的是“不要误诊”,此时精确率是合适的指标。

精确率是受样本比例分布影响的,反例数量越多,那么其被预测为正例的数量也会越多,此时精确率就会下降,因此当样本分布不平衡时,要谨慎使用精确率。

3.召回率 recall

召回率,又称灵敏度(Sensitivity):真实的正例样本中,被预测为正例的样本所占的比例,真阳性率,即

《SPSS统计分析与行业应用实战》之诊断试验与ROC分析

召回率反映模型在正例正确预测上的覆盖率,“不允许有一条漏网之鱼”,如果我们关注的是对真实正例样本预测为正的全面性,那么召回率是很好的指标。例如在一些灾害检测的场景中,任何一次灾害的漏检都是难以接受的,此时召回率是很合适的指标。

召回率是不受样本比例不平衡影响的,因为它只关注的是正例样本上的预测情况。

4.F1-score

F1-score :兼顾精准率与召回率的模型评价指标,其定义为:

《SPSS统计分析与行业应用实战》之诊断试验与ROC分析

当对精准率或者召回率没有特殊要求时,评价一个模型的优劣就需要同时考虑精准率与召回率,此时可以考虑使用F1-score。F1-score考虑了Precision、Recall数值大小的影响,只有当二者都比较高时,F1-score才会比较大。

5.特异度 Specificity

特异度(Specificity),即真阴性率(True Negative Rate,TNR)

Specificity = TNR = TN / (TN + FP)

 

二、ROC曲线及AUC

1.ROC

ROC(Receiver Operating Characteristic)曲线全称是“受试者工作特征”,通常用来衡量一个二分类学习器的好坏。如果一个学习器的ROC曲线能将另一个学习器的ROC曲线完全包住,则说明该学习器的性能优于另一个学习器。

既然已经这么多评价标准,为什么还要使用ROC和AUC呢?

因为ROC曲线有个很好的特性:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化。

ROC(receiver operating characteristic curve)是一条曲线,其横轴表示的是FPR--错误地预测为正例的概率(1 - 特异度),纵轴表示的是TPR(True Positive Rate)——正确地预测为正例地概率,二者地计算如下:

                 《SPSS统计分析与行业应用实战》之诊断试验与ROC分析

                 《SPSS统计分析与行业应用实战》之诊断试验与ROC分析

从TPR地计算方式来看,其实际上就是召回率。前面已说过,Recall不受样本不平衡的影响,实际上FPR也具有该特点。ROC曲线类似于下图,TPR、FPR地取值范围均在0~1之间

《SPSS统计分析与行业应用实战》之诊断试验与ROC分析

对于一个特定的分类器和测试数据集,显然只能得到一个分类结果,即一组FPR和TPR结果,而要得到一个曲线,我们实际上需要一系列FPR和TPR的值,这又是如何得到的呢?

对于许多学习器在判定二分类问题时是预测出一个对于真值的范围在[0.0, 1.0]之间的概率值,而判定是否为真值则看该概率值是否大于或等于设定的阈值(Threshold)。

例如:如果阈值设定为0.5则所有概率值大于或等于0.5的均为正例,其余为反例。因此对于不同的阈值我们可以得到一系列相应的FPR和TPR,从而绘制出ROC曲线。具体案例如下:

y_true = [0, 1, 0, 1],  真实值

y_score = [0.1, 0.35, 0.4, 0.8], 预测值

分别取4组判定正例用的阈值:[0.1, 0.35, 0.4, 0.8],可得相应4组FPR,TPR:

(1)threshold = 0.1时,由y_score得到的预测值y_pred = [1, 1, 1, 1]

TP = 2, FP = 2, TN = 0,FN = 0

横坐标FPR = FP / (FP + TN) = 1

纵坐标TPR = TP / (TP + FN) = 1

(2)threshold = 0.35时,y_pred= [0, 1, 1, 1]

TP = 2, FP = 1, TN = 1, FN = 0

FPR = FP / (FP + TN) = 0.5

TPR = TP / (TP + FN) = 1

(3)threshold = 0.4时,y_pred= [0, 0, 1, 1]

TP = 1, FP = 1, TN = 1, FN = 1

FPR = FP / (FP + TN) = 0.5

TPR = TP / (TP + FN) = 0.5

(4)threshold = 0.8时,y_pred= [0, 0, 0, 1]

TP = 1, FP = 0, TN = 2, FN = 1

FPR = FP / (FP + TN) = 0

TPR = TP / (TP + FN) = 0.5

当threshold取值越多,ROC曲线越平滑。

2.AUC

AUC(area under curve)是一个数值,从定义上可以直观的看到其表征的意思——曲线与坐标轴围成的面积,ROC-AUC即表示的是ROC曲线与坐标轴围成的面积。

很明显的,TPR越大、FPR越小,模型效果越好,因此ROC曲线越靠近左上角表明模型效果越好,此时AUC值越大,极端情况下为1。与F1-score不同的是,AUC值并不需要先设定一个阈值。

AUC (Area Under Curve) 被定义为ROC曲线下的面积,显然这个面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围一般在0.5和1之间。使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好。案例中的AUC值为0.75

根据(Fawcett, 2006),AUC的值的含义是:

The AUC value is equivalent to the probability that a randomly chosen positive example is ranked higher than a randomly chosen negative example.

这句话的意思是:首先AUC值是一个概率值,当你随机挑选一个正样本以及一个负样本,当前的分类算法根据计算得到的Score值将这个正样本排在负样本前面的概率就是AUC值。

当然,AUC值越大,当前的分类算法越有可能将正样本排在负样本前面,即能够更好的分类。

可以从AUC判断分类器(预测模型)优劣的标准

AUC = 1,是完美分类器,采用这个预测模型时,存在至少一个阈值能得出完美预测。绝大多数预测的场合,不存在完美分类器。

0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。

AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。

AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。