ROC AUC是指ROC曲线下面的面积,越接近于1越好,但是ROC AUC有什么更深层、直观的概率统计的意义吗?
3个回答
ROC AUC有个非常直白的概率意义。
随机挑选一个标签为0的样本A,再随机挑选一个标签为1的样本B。你预测样本B为1的概率大于样本A为1的概率的概率就是你的ROC AUC。比较拗口,多念几遍,就通顺了,嘿嘿嘿。
我再多说几句,ROC AUC的数值与每个预测概率的数值大小无关,在乎的是每个预测概率的排序。假设我们按照概率从大到小排。如果根据你的预测结果,所有标签为1的样本都排在了标签为0的样本前面,那么你的ROC AUC就是1。
ROC AUC = 0.8的意思是说,随机挑选个标签为1的样本,它被排在随机的0样本的前面的概率是0.8。显然ROC AUC是0.5的话,就说明这个模型和随便猜没什么两样。
首先要清楚二元分类的过程。一般是先对每个数据点计算一个score $x$,可以是这个点属于positive的概率,也可以是其他。一般来说是$x$越大,越可能是positive。把所有positive/negative的score的直方图画出来,如下图的两个概率分布函数$f_1(x)$, $f_0(x)$。然后人为设定一个threshold $T$,当$x>T$判断为positive,否者为negative,这样可以把$f_1(x)$, $f_0(x)$分割成TP,FN,TN,FP四部分。
ROC就是把$T$从$\infty$到$-\infty$,所有$P(FP),P(TP)$的点连成的曲线。
$P(FP)=FPR(T)=\int_{T}^{\infty} f_0(x) dx$
$P(TP)=TPR(T)=\int_{T}^{\infty} f_1(x) dx$
现实中只有有限个数据点,所以用$P(FP)=\frac{FP}{FP+TN}$,$P(TP)=\frac{TP}{FN+TP}$估计。
$AUC=\int_{\infty}^{-\infty}P(TP)P'(FP)dT$
注意$P'(FP)=d(\int_{T}^{\infty} f_0(x) dx)/dT=-f_0(T)$是横轴上的$\delta$,$P(TP)$是纵轴上的长度,它俩的积分为曲线下面积
$AUC=\int_{\infty}^{-\infty}\int_{T}^{\infty} f_1(x) dx (-f_0(T)) dT$
$=\int_{-\infty}^{\infty}\int_{T}^{\infty} f_1(x) dx f_0(T) dT$
令$x=x_1$,$T=x_0$
$=\int_{-\infty}^{\infty}\int_{x_0}^{\infty} f_1(x_1) f_0(x_0) dx_1dx_0$
$=P(x_1>x_0|x_1 \sim f_1,x_0 \sim f_0)$
假设随机得到一个positive和一个negative数据点,它们在某分类器中的score分别是$x_1$,$x_0$,AUC就是$x_1>x_0$的概率。
这里其实还有一个隐藏条件是$T \sim U(-\infty,\infty)$,也就是对$T$的选择没有喜好。但实际应用中对$T$有限制,比如希望$FPR(T)<0.05$,这时AUC只能做参考,要看ROC中的局部线段是否靠近左上角。
首先要理解怎么作图的。ROC曲线是true positive rate(TPR) vs False positive rate(FPR) 。注意这两个rate的分母是不一样的。对于一个模型,按照预测score从小到大排序,然后把分界线从第一个sample往后逐渐移动到最后一个,看左边的sample TPR和 FPR值是多少。比如分界线在最左边,TPR==FPR==0,最右边TPR==TPR==1
更深层、直观的概率统计的意义最好从limit考虑
- AUC==1: 模型可以100%准确分类
- AUC==0.5: 效果等于随机
- AUC==0: 模型分类100%错误
参考: https://docs.eyesopen.com/toolkits/cookbook/python/plotting/roc.html
SofaSofa数据科学社区DS面试题库 DS面经