3 z) h9 \! _3 }) E
ROC曲线横坐标是FPR(False Positive Rate),纵坐标是TPR(True Positive Rate) S1 t6 S/ r8 F8 B: e
接下来我们考虑ROC曲线图中的四个点和一条线。" G& g% `1 r* Y) p9 ?: Y" ]3 |( s6 i
+ W4 z6 R) i4 i+ t! h" j- Z
第一个点,(0,1),即FPR=0, TPR=1,这意味着FN(false negative)=0,并且FP(false - }% M5 r8 t. tpositive)=0。这是一个完美的分类器,它将所有的样本都正确分类。4 G. U9 N: Z. H9 U L
第二个点,(1,0),即FPR=1,TPR=0,类似地分析可以发现这是一个最糟糕的分类器,因为它成功避开了所有的正确答案。: \4 z- S( r' p) O; x
第三个点,(0,0),即FPR=TPR=0,即FP(false positive)=TP(true + r, }+ `, `$ y9 Jpositive)=0,可以发现该分类器预测所有的样本都为负样本(negative)。( F) u- n y& X$ X. X& ? U
第四个点(1,1),分类器实际上预测所有的样本都为正样本。经过以上的分析,我们可以断言,ROC曲线越接近左上角,该分类器的性能越好。- w$ Q/ d- j, o! \2 f5 i4 i
如何画ROC曲线:# o1 J4 ~; K. z! r- I
1 _! Q/ D0 j4 e6 M对于一个特定的分类器和测试数据集,显然只能得到一组FPR和TPR结果,而要得到一个曲线,我们实际上需要一系列FPR和TPR的值,这又是如何得到的呢?我们先来看一下wikipedia上对ROC曲线的定义: 7 D5 e* b; C+ ^3 j3 s 8 Y; E: p8 [, j+ [% G5 ?' eA receiver operating characteristic curve, i.e. ROC curve, is a 9 i( Z M& ~$ f: E+ Z0 X* cgraphical plot that illustrates the diagnostic ability of a binary7 t L$ c9 R' p
classifier system as its discrimination threshold is varied.) u2 ]* C, y: u8 N
译:ROC曲线是由一系列因区分阈值变化产生的点,用于描述二分类模型的判断能力% @! z, a+ l% T$ c
这里的关键在于 “its discrimination threshold is varied” ,因为对于一个二分类模型,它的输出结果其实是判断这个样本属于正样本的概率值,假如我们已经得到了所有样本的概率输出(属于正样本的概率),现在的问题是如何改变“discrimination threashold”?我们根据每个测试样本属于正样本的概率值从大到小排序。下图是一个示例,图中共有20个测试样本,“Class”一栏表示每个测试样本真正的标签(p表示正样本,n表示负样本),“Score”表示每个测试样本属于正样本的概率, {* y* d" b8 Q1 X$ l# z, P