ROC曲线和PR曲线

1、混淆矩阵
二分类问题,根据真实类别和预测类别,划分真正例(True Postive,TP),假正例(False Positive,FP),真反例(True Negtive,TN),假反例(True,Negative)四种情形。
其混淆矩阵:


2、预测概率
对于分类问题我们可以直接预测输入数据的类别,或者我们也可以为测试样本产生一个实值或概率预测,并将这个预测值与一个分类阈值作比较,比如说默认阈值为0.5,那么对于输出概率在[0.0.49]的样本会被预测为负,对于输出概率在 [0.5,1.0]之间的样本会被预测为正.同时我们可以通过更改阈值来调整模型在某个问题上的预测性能。
利用概率预测结果并设置合适的阈值我们就可以在这两种错误之间取得平衡.具体来说我们先根据这个实值或者是概率预测结果对测试样本进行排序,"最可能"是正例的排在最前边或者说最左边,"最不可能"是正例的排在最后边或者说最右边,通过调整阈值在这个排序数组中的位置将样本分为两个部分,阈值左边被预测为正例,阈值右侧被预测为反例.如果我们希望提高模型的查准率/降低假正率,即提高预测为正例的样本里实际结果也为正例的样本的占比,我们就可以把这个阈值向左移;如果我们希望提高模型的查全率/降低假反例,即提高实际为正例的样本中预测结果也为正例的样本的占比,那么我们就可以把这个阈值向左移。

排序本身的好坏体现了综合考虑学习器在一般情况下泛化性能的好坏.ROC则是从这个角度出发来研究学习器泛化性能的有力工具.     --<机器学习> 周志华

3、ROC曲线 receiver operating characteristic curve
3.1 what is ROC:
在衡量学习器的泛化性能时,根据学习器的预测结果对样本排序,按此顺序逐个把样本作为正例进行输出,每次计算测试样本的真正率TPR,和假正率FPR并把这两项作为ROC的纵轴和横轴。
其中真正率衡量实际值为正例的样本中被正确预测为正例的样本的比例,假正率表示实际值为负例的样本中被错误的预测为正例的样本的比例:

(TPR =frac{TP}{TP+FN})
(FPR=frac{FP}{TN+FP})

具体来说,假设有一个逻辑回归分类器,根据它的预测结果对样例排序,我们设初始阈值为最大, 此时所有样本都被预测为反例,没有样本被预测为正例即TP = 0, FP = 0, TPR = 0, FPR = 0; 之后我们不断调小阈值,在这个过程中被正确预测为正例的样本和被错误预测为正例的样本都在不断增多,同时被正确预测为反例的样本和被错误预测为反例的样本不断减小.因此TPR和FPR会不断变大.当阈值为最小时,所有样本被预测为正,没有样本被预测为负即FN =0, TN = 0, TPR = 1, FPR = 1; 根据这一系列阈值我们可以得到一系列一一对应的真正率和假正率。

3.2 如何画ROC曲线

假设已经得出一系列样本被划分为正类的概率,然后按照大小排序,下图是一个示例,图中共有20个测试样本,“Class”一栏表示测试样本真正的标签(p表示正样本,n表示负样本),“Score”表示每个测试样本属于正样本的概率。

接下来,我们从高到低,依次将“Score”值作为阈值threshold,当测试样本属于正样本的概率大于或等于这个threshold时,我们认为它为正样本,否则为负样本。举例来说,对于图中的第4个样本,其“Score”值为0.6,那么样本1,2,3,4都被认为是正样本,因为它们的“Score”值都大于等于0.6,而其他样本则都认为是负样本。每次选取一个不同的threshold,我们就可以得到一组FPR和TPR,即ROC曲线上的一点。这样一来,我们一共得到了20组FPR和TPR的值,将它们画在ROC曲线的结果如下图:

3.3 ROC缺点:
数据中类别分布非常不均衡的时候,ROC就不再适用。下图(a)代表ROC曲线图(b)代表PR曲线,图中的曲线都来为同样的模型在一个非均衡测试集上的预测结果.对于ROC曲线来说越靠近左上方表明模型性能越好,图(a)中的ROC曲线表明模型性能非常好;对于PR曲线来说越靠近右上方说明模型性能越好,但是看图(b)中的曲线,很显然这两个模型都还有很大的提升空间.同时从图(a)中我们可以看出两种算法性能接近,都表现优异,但是图(b)中Algorithm2的性能表现要明显优于Algorithm1.

造成这种情况的原因是我们的测试数据集中的反例数目远远多于正例的数目,假设负样本:正样本=1000:10.在这种情况下,当阈值为最大时,真正率和假正率还是都为0,随着我们不断调小阈值真正率和假正率还是在不断提高, 当阈值最小时真正率和假正率达到最大.因此ROC曲线没有很好地体现出样本类别分布不平衡对模型产生的影响,甚至导致对模型性能有错误的解释.这种情况下PR曲线可以给我们提供更精确的参考。

4、PR曲线
P-R曲线刻画查准率和查全率之间的关系,查准率(精确率)指的是在所有预测为正例的数据中,真正例所占的比例,查全率(召回率)是指预测为真正例的数据占所有正例数据的比例。
(Precision =frac{TP}{TP+FP})
(Recall=frac{TP}{TP+FN})

与ROC曲线类似,我们根据学习器的预测结果对样例排序,"最可能"是正例的排在最前边或者说最左边,"最不可能"是正例的排在最后边或者说最右边.按此顺序逐个把样本作为正例进行输出,每次计算测试样本的查准率和查全率并把这两项作为PR曲线的纵轴和横轴。

5、AUC

AUC(Area under Curve):Roc曲线下的面积,介于0.1和1之间。Auc作为数值可以直观的评价分类器的好坏,值越大越好。
首先AUC值是一个概率值,当你随机挑选一个正样本以及负样本,当前的分类算法根据计算得到的Score值将这个正样本排在负样本前面的概率就是AUC值,AUC值越大,当前分类算法越有可能将正样本排在负样本前面,从而能够更好地分类。

原文地址:https://www.cnblogs.com/leimu/p/13274362.html