Machine learning 这种计算ROC AUC的方法或公式是如何工作的?

Machine learning 这种计算ROC AUC的方法或公式是如何工作的?,machine-learning,metrics,roc,auc,Machine Learning,Metrics,Roc,Auc,我尝试使用MySQL计算下表中数据的AUC,如下所示: y p 1 0.872637 0 0.130633 0 0.098054 ... ... 1 0.060190 0 0.110938 我遇到了下面的SQL查询,它给出了正确的AUC分数(我使用sklearn方法进行了验证) 我不明白我们是如何使用这种方法计算AUC的有人能给出这背后的直觉吗? 我已经熟悉了梯形法,该方法涉及ROC曲线下小梯形面积的求和。简短回答:这是Wilcoxon-Mann-Whitney统计,请

我尝试使用MySQL计算下表中数据的AUC,如下所示:

y   p
1   0.872637
0   0.130633
0   0.098054
...
...
1   0.060190
0   0.110938
我遇到了下面的SQL查询,它给出了正确的AUC分数(我使用sklearn方法进行了验证)

我不明白我们是如何使用这种方法计算AUC的有人能给出这背后的直觉吗?


我已经熟悉了梯形法,该方法涉及ROC曲线下小梯形面积的求和。

简短回答:这是Wilcoxon-Mann-Whitney统计,请参见 这一页也有证据

公式的底部与wiki中的公式相同。上面的部分比较棘手f对应于数据中的
p
t\u 0
t\u 1
是数据框中的索引。请注意,我们首先按
p
排序,这使我们的生活更轻松

注意,双和可以分解为

Sum_{t_1 such that y(t_1)=1} #{t_0 such that p(t_0) < p(t_1) and y(t_0)=0}
现在想象一下向下滚动已排序的数据帧。这是我们第一次遇到y=1,
{t\u 0:t\u 0
Sum_{t_1 such that y(t_1)=1} #{t_0 such that p(t_0) < p(t_1) and y(t_0)=0}
#{t_0: p(t_0) < p(t_1) and y(t_0)=1) = t_1 - #{t_0: t_0 <= t_1 and y(t_0)=1}
Sum_{t_1: y(t_1)=1}#{t_0: p(t_0) < p(t_1) and y(t_0)=1) = Sum_{t_1: y(t_1)=1} t_1 - (1 + 2 + 3 + ... + n),
Sum_{t_1: y(t_1)=1} t_1 = Sum_{t_1: y(t_1)=1} t_1 y(t_1)
Sum_{t_1: y(t_1)=1} t_1 = Sum_{t_1: y(t_1)=1} t_1 y(t_1) = Sum_{t} t y(t)
1 + 2+ 3 + ... + n = n(n+1)/2