ROC是一个曲线,AUC是曲线下面的面积值。


 

ROC曲线是FPR和TPR的点连成的线。

AUC曲线 R语言ROC和 roc曲线与auc_过拟合

可以从上面的图看到,横轴是FPR, 纵轴是TPR (TPR = TP / (TP + FN);FPR = FP / (FP + TN))

ROC曲线如果想要理解的话,要关注四点一线:

1) (0,1)点:FPR==0,TPR==1 -->代表最好的一种情况,即所有的正例都被正确预测了,并且,没有负例被错认为正例。 

2) (1,0)点:--> 代表最差的一种情况,所有的正例都看错了。

3) (0,0)点: --> 分类器将所有的样本都认为是负样本。

4) (1,1)点: --> 分类器将所有的样本都认为是正样本。

5) y=x曲线:  --> 随机猜测出来可得这样一个曲线。 

形象的理解一下:

1) 商品推荐:重在覆盖度,所以更加注重True Positive的高,这个越高越好。False Positive这个不那么低也可以接受。

2) 嫌犯预测:重在准确,更加注重False Positive的低。


 

PR曲线是准确率和召回率的点连成的线。

AUC曲线 R语言ROC和 roc曲线与auc_召回率_02

可以看到,左边的图是ROC曲线,右边的图是PR曲线。

ROC曲线,越左上凸越好; 因为这个ROC想要True Positive高,False Positive小。

PR曲线,越右上凸越好。 PR想要Recall和Precision同时高。

 


当样本分布极不均衡的时候,哪个曲线表现的更好呢?

先看两个公式:

1) TPR = TP / (TP + FN);

2) FPR = FP / (FP + TN)

在ROC曲线中,这两个指标构成了最后的曲线。

如果,样本极不均衡。这里假设,正样本非常少,负样本非常多。

如果是这样的话,则TN会非常大,将FPR拉低,最后的曲线会表现的非常好。

 

这时候,再看看PR曲线,也许这个曲线就没有表现的那么好。

所以,有的时候,光看一个曲线是不能完全覆盖所有的情况的。

 

 


如何画ROC曲线?

AUC曲线 R语言ROC和 roc曲线与auc_过拟合_03

如上图所示,假如我有20个测试样本,将预测的概率由大到小排列一下。

然后,分别用这个score作为阈值,大于0.9的作为正类,小于0.9的作为负类,这样的话,就有20组TP,FN等的值了。

这样就可以画出来一个曲线。

 

如果曲线不是特别平滑的话,那么很可能存在过拟合的情况。