ROC曲线和AUC
- ROC曲线是指受试者工作特征曲线/接收器操作特性曲线(receiver operating characteristic curve),是反应敏感性和特异性连续变量的综合指标,利用构图法揭示敏感性和 特异性的相互关系,它通过将连续变量设定出多个不同的临界值,从而计算出一系列敏感性和特异性,再以敏感性为纵坐标,特异性为横坐标绘制成曲线,曲线下的面积(AUC)越大,诊断准确性越高。最靠近坐标图左上方的点为敏感性和特异性均较高的临界值。
ROC曲线的例子
考虑一个二分问题,即将实例分成正类(Positive)或是负类(Negative)。对于一个二分问题来说,会出现以下四种情况。
预测 | ||||
1 | 0 | 合计 | ||
实际 | 1 | True Positive(TP) | False Negative(FN) | Actual Positive(TP+FN) |
0 | False Positive(FP) | True Negative(TN) | Actual Negative(FP+TN) | |
合计 | Predicted Positive(TP+FP) | Predicted Negative(FN+TN) | TP+FP+FN+TN |
真正类率(true positive rate ,TPR) = TPR=TP/ (TP+ FN),描述分类器识别出的正实例占所有正实例的比例。
假正类率(false positive rate, FPR)= FP / (FP + TN),描述分类器错认为正类的负实例占所有负实例的比例。
真负类率(True Negative Rate,TNR)= N/ (FP+ TN) = 1-FPR。
- 其中两列True matches和True non-match分别代表应该匹配上的和不应该匹配上的
- 两行Pred matches和Pre non-match分别代表预测匹配上的和预测匹配不上的
- FPR = FP/(FP + TN) 负样本中的错判率(假警报率)
- TPR = TP/(TP + FN) 判对样本中的正样本率(命中率)
- ACC = (TP + TN) / (P+N) 判对准确率
在这个二分类模型中,对于所得到的连续结果,假设已经确定了一个阈值,如0.6,大于这个值的实例将被分为正类,否则为负类。如果减小这个阈值到0.5,虽然可以识别出更多的正类,提高真正类率(TPR,识别出的正实例占所有正实例的比例),但同时更多的负实例被识别为正实例,假正类率(FPR,错认为正类的负实例占所有负实例的比例)上升。
为了形象化上述变化,引入ROC,ROC可以用于评价一个分类器。
ROC曲线和它相关的比率
- 理想情况下,TPR应该接近于1而FPR应该接近于0.
- ROC曲线上每一个点对应于一个threshold,队医一个分类器,每一个threshold下会有一个TPR和FPR
- 随着阈值的增加,TP和FP都减小,TPR和FPR也减小,ROC点向左下角移动
ROC(Receiver Operating Characteristic)曲线由两个变量(1-specificity 和 Sensitivity)即假正类率FPR和真正类率TPR绘制,反应了正类覆盖程度。这个组合以1-specificity 对 Sensitivity,即是以代价(costs)对收益(benefits)。
此外,ROC曲线还可以用来计算“均值平均精度”(mean average precision),这是当你通过改变阈值来选择最好的结果时得到的平均精度
下表是一个Logistic回归得到的结果。将得到的数值按从大到小划分成10个个数相同的部分。
Percentile | 实例数 | 正例数 | 1-特异度(FPR)% | 敏感度% |
10 | 6180 | 4879 | 2.73 | 34.64 |
20 | 6180 | 2804 | 9.80 | 54.55 |
30 | 6180 | 2165 | 18.22 | 69.92 |
40 | 6180 | 1506 | 28.01 | 80.62 |
50 | 6180 | 987 | 38.90 | 87.62 |
60 | 6180 | 529 | 50.74 | 91.38 |
70 | 6180 | 365 | 62.93 | 93.97 |
80 | 6180 | 294 | 75.26 | 96.06 |
90 | 6180 | 297 | 87.59 | 98.17 |
100 | 6177 | 258 | 100.00 | 100.00 |
合计 | 14084 |
其正实例数为这个部分中实际的正类数。也就是说,将逻辑回归得到的结果按从大到小排列,倘若以前10%的数值作为阈值,即将前10%的实例都划归为正类,6180个,其中正确的个数为4879个,占所有正类的4879/14084 *100%=34.64%,即敏感度;另外有6180-4879=1301个负实例被错分类为正类,占所有负类的1301/47713 *100% = 2.73% ,即1-特异度。以这两组值分别作为x值和y值,绘制在坐标图中即为ROC曲线。
AUC(Area Under Curve)、Gini系数和KS(Kolmogorov-Smirnov)值
AUC被定义为ROC曲线下与坐标轴围成的面积。由于ROC曲线的定义,AUC的值不会大于1。同时,ROC曲线一般在y=x曲线上方,所以AUC的取值范围一般在(0.5~1)。
Gini系数指ROC曲线与y=x(红线)围成的面积和中线之上的面积的(0.5)比例。AUC和Gini的换算关系为:
Gini = 2*AUC -1
KS(Kolmogorov-Smirnov)值定义为TPR与FPR的差的最大值。反应模型的最优分类效果,此时所取的阈值一般作为最优阈值。
KS=max(TPR−FPR)