首先要清楚二元分类的过程。一般是先对每个数据点计算一个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中的局部线段是否靠近左上角。
SofaSofa数据科学社区DS面试题库 DS面经
×
Warning
您确定要删除本贴么?所有相关回复也会被一并删除并且无法恢复。
取消
确定删除
Zealing
2018-08-23 00:53