怎么直观理解ROC AUC的概率统计意义?

  统计/机器学习 监督式学习 模型验证 开放问题    浏览次数: 1815
1

ROC AUC是指ROC曲线下面的面积,越接近于1越好,但是ROC AUC有什么更深层、直观的概率统计的意义吗?


 

杨业勇   2017-09-28 13:07



   3个回答 
2

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的话,就说明这个模型和随便猜没什么两样。


五道口少年   2017-09-29 11:45

2

首先要清楚二元分类的过程。一般是先对每个数据点计算一个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中的局部线段是否靠近左上角。


Zealing   2018-08-23 00:53

1

首先要理解怎么作图的。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

holidy   2018-08-21 02:20



  相关主题

roc auc小于0.5是什么情况?   3回答

如何利用python画分类器的ROC曲线?   1回答

sklearn里计算roc_auc_score,报错ValueError: bad input shape   1回答

sklearn.metrics.auc里提到的梯形法则是什么意思?   2回答

精度召回precision recall auc是什么?   1回答

sklearn.preprocessing.StandardScaler采用的是哪种标准化的方法?   1回答

多元分类的roc auc   1回答

二元分类什么时候用LogLoss、什么时候用ROC AUC?如何选择?   1回答

sklearn.metric.auc函数计算出的结果很奇怪   1回答

python里什么模块可以计算精度-召回(precision-recall)的AUC?   1回答

R里有没有package可以画ROC,计算AUC的?   2回答

怎么理解roc convex hull?   2回答



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!