在算法面试中,常常会被一个问题AUC的物理含义是什么。本文参考论文1,介绍一下AUC的物理含义。
在二分类模型中,预测值 p p p表示事件发生的概率。对于分类任务,需要给出一个阈值(threshold)来判别哪些任务是正例、哪些是负例。AUC(Area Under the Curve)提供了一种判别所有阈值效果的指标。AUC的计算逻辑如下所示:
根据上述流程,绘制的AUC曲线如下所示
其中横轴代表FPR,纵轴代表TPR。
面试中,常常会问AUC的物理含义,绝大部分人都会说:“给出一个正样本与一个负样本,正样本比负样本分值大的概率”。再进一步,为什么是这样的,绝大部分人就懵逼了。下面将回答这个从"what"到"why"的问题。为了便于解释和推导,这里假设不同样例预测值完全不同(not ties)。针对ties的情况,可参见论文[1]。not ties的情况如下
index | label | s c o r e ( 100 % ) score(100 \%) score(100%) |
---|---|---|
1 | 1 | 98.4 |
2 | 1 | 95.2 |
3 | 1 | 94.4 |
4 | 0 | 92.8 |
5 | 1 | 83.2 |
6 | 1 | 81.6 |
7 | 1 | 58.4 |
8 | 0 | 57.6 |
9 | 0 | 28.0 |
10 | 0 | 13.6 |
11 | 1 | 3.2 |
12 | 0 | 2.4 |
13 | 0 | 1.6 |
14 | 0 | 0.8 |
15 | 0 | 0.0 |
ties情况
index | label | s c o r e ( 100 % ) score(100 \%) score(100%) |
---|---|---|
1 | 1 | 98.4 |
2 | 1 | 98.4 |
3 | 1 | 98.4 |
4 | 0 | 98.4 |
5 | 1 | 83.2 |
6 | 1 | 81.6 |
7 | 1 | 58.4 |
8 | 0 | 57.6 |
9 | 0 | 28.0 |
10 | 0 | 13.6 |
11 | 1 | 3.2 |
12 | 0 | 2.4 |
13 | 0 | 1.6 |
14 | 0 | 0.8 |
15 | 0 | 0.0 |
假设在整个验证集有 n n n个样本, e e e个正样本, e ′ = n − e e'=n-e e′=n−e个负样本。由于假设了预测结果not ties,理想状态下,不同阈值可以将样本切分成 n n n块。在上述not ties的例子中,阈值为 [ 100 , 98.3 , 95.1 , 94.3 , . . . . . ] [100,98.3,95.1,94.3,.....] [100,98.3,95.1,94.3,.....]。此时,每选择一个阈值仅会出现下属两种情况下的一种:
绘制出来如下所示
其中横轴代表FPR,纵轴代表TPR。从图片可知,只有当TPR上升时,才会有新增面积。此时新增面积为
a r e a g a i n e d = e ′ − f e ′ e area \ gained = \frac{e'-f}{e'e} area gained=e′ee′−f
其中 f f f表示当前点,负例被预测成正例的数量。进而,整个ROC曲线下面的面积为
A U C = 1 e ′ e ∑ i = 1 e ( e ′ − f i ) = 1 − 1 e ′ e ∑ i = 1 e f i AUC = \frac{1}{e'e}\sum_{i=1}^{e}(e'-f_{i})=1-\frac{1}{e'e}\sum_{i=1}^{e}{f_{i}} AUC=e′e1i=1∑e(e′−fi)=1−e′e1i=1∑efi
若想求ROC曲线下面的面积,即转化为求 F = ∑ i = 1 e f i F=\sum_{i=1}^{e}{f_{i}} F=∑i=1efi,计算公式如下所示:
F = ∑ i = 1 e f i = ∑ i = 1 e ( r i − i ) = ∑ i = 1 e r i − e ( e + 1 ) 2 ( 1 ) F=\sum_{i=1}^{e}{f_{i}}=\sum_{i=1}^{e}{(r_{i}-i)}=\sum_{i=1}^{e}{r_{i}}-\frac{e(e+1)}{2} \qquad (1) F=i=1∑efi=i=1∑e(ri−i)=i=1∑eri−2e(e+1)(1)
其中 r i r_{i} ri表示当前验证集中的排序位置。对于上面的no ties的例子, ∑ i = 1 e f i = 7 \sum_{i=1}^{e}{f_{i}}=7 ∑i=1efi=7。
熟悉统计学的人知道,有一种检验方式叫Mann–Whitney U test(曼-惠特尼U检验),它的目的是检验两个总体均值为 u 1 u_{1} u1和 u 0 u_{0} u0的样本是否有显著差异。给定两个样本,数量分别为 e e e、 e ′ e' e′,Mann–Whitney U test的计算方式如下:
U = ∑ i = 1 e r 1 i − e ( e + 1 ) 2 U = \sum_{i=1}^{e}{r_{1i}}-\frac{e(e+1)}{2} U=i=1∑er1i−2e(e+1)
其中 r 1 i r_{1i} r1i表示第 i i i个正例的 r a n k rank rank。显然Mann–Whitney U test与 F F F的计算方式相同,因而将上面的公式组合可知:
A U C = 1 − U e ′ e AUC = 1 - \frac{U}{e'e} AUC=1−e′eU
即 A U C AUC AUC可以直接通过Mann–Whitney U test直接得到。看到这里,可能会有人疑问。维基百科明明写着
A U C = U e ′ e AUC = \frac{U}{e'e} AUC=e′eU
到你这里怎么变成这样了。仔细阅读的读者会发现,公式 ( 1 ) (1) (1)使用的 r i r_{i} ri是按照预测概率从大到小排列的 r a n k rank rank。若 r i r_{i} ri按照从小到大排列,此时
U ′ = ∑ i = 1 e ( n − r i + 1 ) − e ( e + 1 ) 2 U'=\sum_{i=1}^{e}{(n-r_{i}+1)}-\frac{e(e+1)}{2} U′=i=1∑e(n−ri+1)−2e(e+1)
进而
U + U ′ = ∑ i = 1 e ( n + 1 ) − e ( e + 1 ) = e e ′ U + U' = \sum_{i=1}^{e}{(n+1)}-e(e+1)=ee' U+U′=i=1∑e(n+1)−e(e+1)=ee′
从而
A U C = U ′ e ′ e AUC=\frac{U'}{e'e} AUC=e′eU′
通过上述公式推导可知,在相关文档中为了公式简明,将 r i r_{i} ri从大到小转化为从小到大排列,进而产生了维基百科中的公式。
通过上面的公式推导可知,AUC的物理含义其实就是Mann–Whitney U test的物理含义。Wilcoxon-Mann-Witney Test的一种计算方法是:
其物理含义是:测试任意给一个正类样本和一个负类样本,正类样本的score有多大的概率大于负类样本的score。
本篇博客从AUC的计算出发,介绍了AUC与Mann-Witney Test的等价关系,进而给出AUC的物理含义。接下来将介绍AUC在工业场景的应用。
Areas beneath the relative operating characteristics (ROC) and relative operating levels (ROL) curves: Statistical signi cance and interpretation ↩︎