首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >这个计算ROC AUC的方法或公式是如何工作的?

这个计算ROC AUC的方法或公式是如何工作的?
EN

Stack Overflow用户
提问于 2020-09-25 17:09:18
回答 1查看 542关注 0票数 3

我试图使用MySQL对表中的数据进行计算,如下所示:

代码语言:javascript
运行
复制
y   p
1   0.872637
0   0.130633
0   0.098054
...
...
1   0.060190
0   0.110938

我遇到了下面的SQL查询,它给出了正确的AUC评分(我使用sklearn方法进行了验证)。

代码语言:javascript
运行
复制
 SELECT (sum(y*r) - 0.5*sum(y)*(sum(y)+1)) / (sum(y) * sum(1-y)) AS auc
 FROM ( 
   SELECT y, row_number() OVER (ORDER BY p) r
   FROM probs
 ) t

 Using pandas this can be done as follows:

 temp = df.sort_values(by="p")
 temp['r'] = np.arange(1, len(df)+1, 1)
 temp['yr'] = temp['y']*temp['r']
 print( (sum(temp.yr) - 0.5*sum(temp.y)*(sum(temp.y)+1)) / (sum(temp.y) * sum(1-temp.y)) )

我不明白我们怎么能用这个方法来计算AUC。,有人能告诉我这背后的直觉吗?

我对梯形法已经很熟悉了,就是把小梯形的面积与中华民国曲线下的面积相加。

EN

回答 1

Stack Overflow用户

发布于 2020-09-25 18:06:43

简短回答:这是Wilcoxon-Mann的统计数据,见https://en.wikipedia.org/wiki/Receiver_operating_characteristic#Area_under_the_curve页面也有证据。

公式的底部部分与wiki中的公式相同。最上面的部分更棘手。wiki中的f对应于数据中的pt_0t_1是数据框架中的索引。请注意,我们首先使用p进行排序,这使我们的生活更加轻松。

请注意,双和可以分解为

代码语言:javascript
运行
复制
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_1 (如y(t_1) =1),有多少t_0p(t_0) < p(t_1)y(t_0)=0?我们知道,由于值是排序的,所以p的确切值小于或等于t_1。我们的结论是

代码语言:javascript
运行
复制
#{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}

现在想象一下,向下滚动排序数据。我们第一次遇到y=1#{t_0: t_0 <= t_1 and y(t_0)=1}=1,第二次遇到y=1,相同的数量是2,第三次遇到y=1,数量是3,等等。因此,当我们将所有索引的等式之和到t_1时,当y=1时,我们得到

代码语言:javascript
运行
复制
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),

其中ny列中的总数。现在我们需要再简化一次。请注意,

代码语言:javascript
运行
复制
Sum_{t_1: y(t_1)=1} t_1 = Sum_{t_1: y(t_1)=1} t_1 y(t_1)

如果y(t_1)不是1,那么它就是0。因此,

代码语言:javascript
运行
复制
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)

把它插到我们的公式里,然后用它

代码语言:javascript
运行
复制
1 + 2+ 3 + ... + n = n(n+1)/2

完成了你找到的公式的证明。

我认为把这个问题写在数学或统计数据溢出上会更有意义。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64068533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档