ROC是一个曲线,AUC是曲线下面的面积值。
ROC曲线是FPR和TPR的点连成的线。
可以从上面的图看到,横轴是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曲线是准确率和召回率的点连成的线。
可以看到,左边的图是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曲线?
如上图所示,假如我有20个测试样本,将预测的概率由大到小排列一下。
然后,分别用这个score作为阈值,大于0.9的作为正类,小于0.9的作为负类,这样的话,就有20组TP,FN等的值了。
这样就可以画出来一个曲线。
如果曲线不是特别平滑的话,那么很可能存在过拟合的情况。