数据挖掘知识整理——【PART II】ROC 曲线学习

之前整理了数据挖掘知识整理——【PART II】Apriori 和 FP-Growth,接下来关于

这些文章在学习这个课程的过程中就做了详细整理。所以今天这篇文章是关于 ROC 曲线的学习,用「学习」这个词语是因为在课程中杨老师并没有对这部分知识进行讲解,所以不是「巩固」而是「学习」。

ROC 曲线概念

ROC 曲线(接收者操作特征曲线, receiver operating characteristic curve)是一种比较两个分类模型有用的可视化工具。AUC(Area Unser the Curve,AUC) 是指曲线下的面积,通常对

在之前整理的模型评估篇,我们知道到了评价指标有 Precision,Recall,F-score 等等,而 ROC 和 AUC(后面会提) 也是一种评价指标。

ROC 曲线显示了给定模型的 FPR(假正率,FPR=FP/(FP+TN))和 TPR(真正率,TPR=TP/(TP+FN))之间的权衡。

ROC 曲线详解

上图就是 ROC 曲线的示例。

图中一共有四条线,三条实线,一条虚线。ROC 曲线的横坐标为 FPR,纵坐标为 TPR。

接下来看一下 ROC 曲线中的四个点和一条线:

  • 第一个点(0,1),即 FPR=0,TPR=1,意味着 FN=0,FP=0,是一个完美的分类模型,所有的测试集样本都被正确分类
  • 第二个点(1,0),即 FPR=1,TPR=0,意味着 TN=0,TP=0,是一个差得不能再差的分类模型,所有的测试集样本都被错误分类,完美的避开了所有正确答案
  • 第三个点(0,0),即 FPR=0,TPR=0,意味着 FP=0,TP=0,该分类模型预测所有得样本都为负样本
  • 第四个点(1,1),即 FPR=1,TPR=1,意味着 FN=0,TN=0,该分类模型预测所有得样本都为正样本
  • 中间的虚线(y=x),这条线表示随机猜测的结果曲线

经过刚才的分析,发现 ROC 曲线越接近左上角,该分类模型的性能越好,表示分类模型在 FPR 很低的情况下获得了很高的 TPR。比如在垃圾邮件过滤中,我们以「是垃圾邮件」为正样本,这就相当于过滤了所有的垃圾邮件,同时没有将合法邮件误识别为垃圾邮件而放入垃圾邮件的文件夹中。

绘制 ROC 曲线

为了绘制分类模型的 ROC 曲线,模型必须能够返回每个检验元组的类预测概率(属于正样本的概率),然后依据这个概率进行从大到小的排序。下图是一个示例,图中共有20个检验元组(11-20 没有显示完全),「Class」一栏表示每个检验元组真正的标签(p 表示正样本,n 表示负样本),「Score」表示每个测试样本属于正样本的概率。

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

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

AUC 介绍

AUC(Area Unser the Curse)是 ROC 曲线下的面积。通常用来对不同的 ROC 曲线进行比较,AUC 更大的模型往往效果更好,使用 AUC 值作为评价标准是因为很多时候 ROC 曲线并不能清晰的说明哪个分类器的效果更好。

显然这个面积的数值不会大于 1。又由于 ROC 曲线一般都处于y=x这条直线的上方,所以 AUC 的取值范围在 0.5 和 1 之间。

可以使用一些软件来计算 AUC。

为什么使用 ROC 和 AUC

之前说了评估一个模型有很多的评价标准,为什么使用 ROC 和 AUC?

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

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

总结

最近一再得到不好的消息,引发一些感想:

修行路上会碰到很多意外、打击、失利,没想到最近这两天就接二连三的来,虽然我会不服、难过,但是更可行的方法是反省以及更坚定、更投入、更谦逊的做好接下来的事。