(1)定义
ROC: 接收者操作特征(receiveroperating characteristic),roc曲线上每个点反映着对同一信号刺激的感受性。常用于二分类问题中的模型比较,主要表现为一种真正例率 (TPR) 和假正例率 (FPR) 的权衡。
横轴:负正类率(false postive rate FPR)特异度,划分实例中所有负例占所有负例的比例;(1-Specificity),FPR越大,预测正类中实际负类越多
纵轴:真正类率(true postive rate TPR)灵敏度,Sensitivity(正类覆盖率),TPR越大,预测正类中实际正类越多。
(2)分析
针对一个二分类问题,将实例分成正类(postive)或者负类(negative)。但是实际中分类时,会出现四种情况.
1、若一个实例是正类并且被预测为正类,即为真正类(True Postive TP)
2、若一个实例是正类,但是被预测成为负类,即为假负类(False Negative FN)
3、若一个实例是负类,但是被预测成为正类,即为假正类(False Postive FP)
4、若一个实例是负类,但是被预测成为负类,即为真负类(True Negative TN)
由上表可计算得到:
1、真正类率(True Postive Rate)TPR: TP/(TP+FN),代表分类器预测的正类中实际正实例占所有正实例的比例,即为灵敏度(Sensitivity)、召回率(Recall)
2、准确率(Precision):TP/(TP+FP),代表分类器中预测的所有正类中实际为正类的比例
3、真负类率(True Negative Rate):TN/(FP+TN),代表分类器预测的负类中实际负实例占所有负实例的比例,TNR=1-FPR。Specificity
4、负正类率(False Postive Rate)FPR: FP/(FP+TN),代表分类器预测的正类中实际负实例占所有负实例的比例。1-Specificity
假设已经得出一系列样本被划分为正类的概率,然后按照大小排序,下图是一个示例,图中共有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曲线的结果如下图:
当一个样本被分类器判为正例,若其本身是正例,则TPR增加;若其本身是负例,则FPR增加,因此ROC曲线可以看作是随着阈值的不断移动,所有样本中正例与负例之间的“对抗”。曲线越靠近左上角,意味着越多的正例优先于负例,模型的整体表现也就越好。
AUC(Area under Curve):Roc曲线下的面积,介于0.1和1之间。Auc作为数值可以直观的评价分类器的好坏,值越大越好。
首先AUC值是一个概率值,当你随机挑选一个正样本以及负样本,当前的分类算法根据计算得到的Score值将这个正样本排在负样本前面的概率就是AUC值,AUC值越大,当前分类算法越有可能将正样本排在负样本前面,从而能够更好地分类。
ROC曲线有个很好的特性:当测试集中的正负样本的分布变换的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现样本类不平衡,即正负样本比例差距较大,而且测试数据中的正负样本也可能随着时间变化。下图是ROC曲线和Presision-Recall曲线的对比:
在上图中,(a)和©为Roc曲线,(b)和(d)为Precision-Recall曲线。
(a)和(b)展示的是分类其在原始测试集(正负样本分布平衡)的结果,©(d)是将测试集中负样本的数量增加到原来的10倍后,分类器的结果,可以明显的看出,ROC曲线基本保持原貌,而Precision-Recall曲线变化较大。
参考:https://www.cnblogs.com/dlml/p/4403482.html
五、F1-score
F1-score = 2precisionrecall/(precision+recall)
是一个综合指标,为Precision和Recall的调和平均 (harmonic mean),数值上一般接近于二者中的较小值,因此如果F1 score比较高的话,意味着Precision和Recall都较高。
使用场景:
1、ROC曲线由于兼顾正例与负例,所以适用于评估分类器的整体性能,相比而言PR曲线完全聚焦于正例。
2、如果有多份数据且存在不同的类别分布,比如信用卡欺诈问题中每个月正例和负例的比例可能都不相同,这时候如果只想单纯地比较分类器的性能且剔除类别分布改变的影响,则ROC曲线比较适合,因为类别分布改变可能使得PR曲线发生变化时好时坏,这种时候难以进行模型比较;反之如果想测试不同类别分布下对分类器的性能的影响,则PR曲线比较适合。
3、如果想要评估在相同的类别分布下正例的预测情况,则宜选PR曲线。
4、类别不平衡问题中,ROC曲线通常会给出一个乐观的效果估计,所以大部分时候还是PR曲线更好。
5、最后可以根据具体的应用,在曲线上找到最优的点,得到相对应的precision,recall,f1 score等指标,去调整模型的阈值,从而得到一个符合具体应用的模型。
KS曲线和ROC曲线都用到了TPR,FPR。KS曲线是把TPR和FPR都作为纵坐标,而样本数作为横坐标。
作图步骤:
只有在明确了各类评估指标以及ROC和PR曲线,我们才能据此选择具体的处理类别不平衡问题的方法。本篇介绍的采样方法是其中比较常用的方法,其主要目的是通过改变原有的不平衡样本集,以期获得一个平衡的样本分布,进而学习出合适的模型。
采样方法大致可分为过采样 (oversampling) 和欠采样 (undersampling) ,虽然过采样和降采样主题思想简单,但这些年来研究出了很多变种,本篇挑一些来具体阐述。见下思维导图:
具体内容参考:https://www.cnblogs.com/massquantity/p/9382710.html
**链接中第一个数据集中(正负比例1:12)大部分ROC曲线的AUC都在0.9左右,而PR曲线都在0.5左右。第二个数据集(正负比例1:130)则更夸张(分别为0.7 、0.02),**从PR曲线来看其实模型对于少数类的预测准确率是无限接近于0了,但在ROC曲线上却很难看出这一点。在类别差异很大的情况下,过采样能一定程度上弥补少数类样本的极端不足。然而从PR曲线上来看,其实结果都不尽如人意。
这里我们主要关注少数类样本,可以看到 Base Model 的特点是precision高,recall低,而几种采样方法则相反,precision低,recall高。采样方法普遍扩大了少数类样本的决策边界(从上文中的决策边界图就能看出来),所以把很多多数类样本也划为少数类了,导致precision下降而recall提升。当然这些都是分类阈值为0.5的前提下得出的结论,如果进一步调整阈值的话能得到更好的模型。策略是base model的阈值往下调,采样方法的阈值往上调。
对于样本数据2,这种极端不平衡的数据可能比较适合异常检测的方法。