1. ROC
ROC(Receiver Operating Characteristics), 中文一般翻译成“受试者工作特性曲线”。这是一种度量二分类性能的指标。直观来讲,ROC曲线表示的是模型在准确识别正例和不把负例错误的识别成正例这两种能力之间相互制约的关系。
在详细解释ROC之前需要先解释两个前置概念,即TPR(True Positive Rate)和FPR(False Positive Rate)。
- 真正率(灵敏度,Sensitivity):TPR=TP/(TP+FN)
- 假正率(特异度,Specificity):FPR=FP/(FP+TN)
我们知道,在二分类(0,1)的模型中,一般我们最后的输出是一个概率值,表示结果是1的概率。那么我们最后怎么决定输入的x是属于0或1呢?我们需要一个阈值,超过这个阈值则归类为1,低于这个阈值就归类为0。所以,不同的阈值会导致分类的结果不同,FPR和TPR也就不一样了。所以当阈值从0开始慢慢移动到1的过程,就会形成很多对(FPR, TPR)的值,将它们画在坐标系上,就是所谓的ROC曲线了。
ROC即为以FPR为横轴,以TPR为纵轴的一条曲线(由于样本数量和阀值是有限个数,所以ROC曲线实际是不平滑的):
当阀值的取值越多,ROC曲线越平滑:
这里要注意:
• 阈值的范围是[0,1],当阈值从1到0慢慢移动时,FPR会越来越大。因为FP(假正例)会越来越多。
• 如果在给定的样本中,我都随机预测,也就是0.5概率预测为正,0.5概率预测为负。那么这条曲线会是怎样的呢?可以想象,如果数据是均匀,那么这条曲线就是y=x。
• 注意曲线一定是从(0,0)开始最终到达(1,1)的。
• 事实上,ROC曲线不是光滑的,而是阶梯型的。为什么呢?因为样本的数量是有限的,而FPR和TPR的变化需要至少有一个样本变化了,在没有变化的间隙里,就不会有变化。也就是说,步进是1/样本数。
• ROC曲线上左侧的点好解释,假正率FPR越低,真正率TRP越高
,自然是好的;但右上角的怎么解释?假正率FPR和真正率TRP都很高。——想象一下,有个庸医把阈值调的很高比如0.99,那么导致算法推测出来的都是男生,没有女生,这样的情况当然查出率很高(所有男生都查出来了),误查率也很高(所有女生都被当成男生了)。
ROC曲线有一个很好的特性:当测试集中的正负样本分布发生变化了,ROC曲线可以保持不变。也就是ROC曲线无视样本不平衡
。
2. AUC
ROC曲线的形状不太好量化比较,于是就有了AUC。
AUC,Area under the Curve of ROC (AUC ROC),就是ROC曲线下面的面积。如上图,蓝色曲线下面的面积更大,也就是它的AUC更大。
如图,左侧的红色折线覆盖了下面整个方形面积,AUC=1;中间的曲线向左上方凸起,AUC=0.8;右边的是完全随机的结果,占一半面积,AUC=0.5。
AUC面积越大,算法越好。