AUC、ROC 以及 KS 介绍

ROC(Receiver Operating Characteristic)曲线和 AUC 常被用来评价一个二值分类器(binary classifier)的优劣。

KS(Kolmogorov-Smirnov)检验:K-S 检验主要是验证模型的区分能力,通常是在模型预测全体样本的 label 后,将全体样本按 label 为正与 label 为负分为两部分,然后用 K-S 统计量来检验这两组样本 label 预测概率的分布是否有显著差异。

ROC 曲线

对于分类器,或者说分类算法,评价指标主要有 precision,recall,F-score1,以及这篇文章里面介绍的 ROC 和 AUC。下图是一个 ROC 曲线的示例:

ROC 曲线的横坐标为 false positive rate(FPR),纵坐标为true positive rate(TPR),关于 FPR 和 TPR 的定义如下:

ROC 曲线图中有四个特殊的点和一条特殊的线。第一个点,(0,1),即 FPR = 0, TPR = 1,这意味着 FN = 0,并且 FP = 0。这是一个完美的分类器,它将所有的样本都正确分类。第二个点,(1,0),即 FPR = 1,TPR = 0,类似地分析可以发现这是一个最糟糕的分类器,因为它成功避开了所有的正确答案。第三个点,(0,0),即 FPR = TPR = 0,即 FP = TP = 0,可以发现该分类器预测所有的样本都为负样本(negative)。类似的,第四个点(1,1),分类器实际上预测所有的样本都为正样本。经过以上的分析,我们可以断言,ROC曲线越接近左上角,该分类器的性能越好。

ROC 曲线图中的特殊的线是 y = x。这条对角线上的点其实表示的是一个采用随机猜测策略的分类器的结果,例如 (0.5,0.5),表示该分类器随机对于一半的样本猜测其为正样本,另外一半的样本为负样本。

绘制 ROC 曲线

对于一个特定的分类器和测试数据集,显然只能得到一个分类结果,即一组 FPR 和 TPR 结果,而要得到一个曲线,则需要一系列 FPR 和 TPR 的值。如何得到这么一系列的值,我们需要去调整分类器的阈值,这里的阈值指的是大于这个阈值则判为正,小于则判为负,然后计算得到的 FPR 和 TPR。

当我们将阈值设置为 1 和 0 时,分别可以得到 ROC 曲线上的 (0,0) 和 (1,1) 两个点。将这些 (FPR, TPR) 对连接起来,就得到了 ROC 曲线。当阈值取值越多,ROC 曲线越平滑。

AUC 值

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

为什么使用 ROC 曲线

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

在上图中,(a) 和 (c) 为ROC曲线,(b) 和 (d) 为 Precision-Recall 曲线。(a) 和 (b) 展示的是分类其在原始测试集(正负样本分布平衡)的结果,(c) 和 (d) 是将测试集中负样本的数量增加到原来的 10 倍后,分类器的结果。可以明显的看出,ROC 曲线基本保持原貌,而 Precision-Recall 曲线则变化较大。

K-S 曲线绘制方法

K-S 也可以作为常用的模型评价指标。它和 ROC 曲线的画法有很大不同。以 LR 模型为例,首先把 LR 模型输出的概率从大到小排序,然后取前 10% 的值(也就是概率值)作为阀值,同理把 10% * k(k=1,2,3, … ,9)处的值作为阀值,计算出不同的 FPR 和 TPR 值,以10% * k(k=1,2,3, … ,9)为横坐标,分别以 TPR 和 FPR 的值为纵坐标,就可以画出两个曲线,这就是K-S曲线。

从 K-S 曲线就能衍生出 KS 值,KS = max(TPR - FPR),即是两条曲线之间的最大间隔距离。当 (TPR - FPR) 最大时,即 ΔTPR - ΔFPR = 0,这和 ROC 曲线上找最优阀值的条件 ΔTPR = ΔFPR 是一样的。从这点也可以看出,ROC 曲线、K-S 曲线、KS 值的本质是相同的。

K-S 曲线能直观地找出模型中差异最大的一个分段,比如评分模型就比较适合用 KS 值进行评估;但同时,KS 值只能反映出哪个分段是区分度最大的,不能反映出所有分段的效果。所以,在实际应用中,模型评价一般需要将 ROC 曲线、K-S 曲线、KS 值、AUC 指标结合起来使用。

参考资料