auc是怎么计算的?

1 roc曲线计算auc

我们都知道auc是roc曲线下的面积,但这种计算不方便

auc是怎么计算的?

 

2 公式计算auc

有另外一种计算方法:

任意给一个正类样本和一个负类样本,正类样本的score大于负类样本的score的概率

公式如下

auc是怎么计算的?

M 是正样本的个数,N是副样本的个数

auc是怎么计算的?值得是第i个样本的序号。对所有的预测样本的score进行从小到大的排序,然后从1进行标号。

原始样本 auc是怎么计算的? auc是怎么计算的? auc是怎么计算的? auc是怎么计算的? auc是怎么计算的?
模型打分 0.8 0.5 0.6 0.3 0.4
按分数排序 auc是怎么计算的? auc是怎么计算的? auc是怎么计算的? auc是怎么计算的? auc是怎么计算的?
分数 0.8 0.6 0.5 0.4 0.3
排序rank 5 4 3 2 1

 

对于公式的分母:正样本排在负样本的情况,一共有M*N种

分子的左边一项,是正样本的序号之和

对于分子右边一项 auc是怎么计算的?,M是正样本的个数,这个公式也是首项为1,末项为M, 公差为1的等差数列的求和公式,它的序列为

1, 2, 3, 。。。M

讨论一下这个序列是怎么来的?

用一种特殊的情况来说明

假设模型是完美的,正样本都排在前面,负样本都排在后面

那么此时的auc应该为1

原始样本 auc是怎么计算的? auc是怎么计算的? auc是怎么计算的? auc是怎么计算的? auc是怎么计算的?
模型打分 0.9 0.8 0.5 0.4 0.3
序号 5 4 3 2 1

对于分母,正样本排在负样本是2*3=6,那么对于这种特殊情况,分子也应该为6

对于分子左边,两个正样本的序号5 + 4 = 9,明显大于6,那么多出来的3,是怎么计算的?

  1. 对于正样本auc是怎么计算的?,后面有三个负样本,正样本大于负样本的组合有3种情况(y2, y3), (y2, y4),(y2,y5),应该是3;但是如果是按序号算的话,是4,也就是说比3多了1个
  2. 同样,对于正样本auc是怎么计算的?,正样本大于负样本的组合有3种情况(y1, y3), (y1, y4),(y1,y5),应该是3;但是如果是按序号算的话,是5,也就是说比3多了2个
  3. 这样多出的情况就是一个序列 1, 2
  4. 这个序列的最大值,就是正样本的个数M
  5. 对于这个序列的求解就是用等差数列的求和公式,也就是分子的右边一项
  6. 因为是多出的,所以用了减号

按照这种思路,就是解释了分子,当然这是一种特殊情况的解释,这种情况比较容易理解。

3 采样会影响auc吗?

直接给出答案,不会的

这种情况下要用roc曲线下的面积来解释采样对auc没有影响

auc是怎么计算的?

几个指标:

  1. TPR: TP/(TP+FN)
  2. FPR: FP/(FP+TN)
  3. recall: TP/(TP+FN)
  4. precision: TP/(TP+FP)
  5. accuracy: (TP+TN)/(TP+FP+FN+TN)

会受采样影响的指标accuracy,precision

对于precision: TP/(TP+FP),假如对负样本进行了下采样,TP不会变,FP会变(因为负样本减少了),所以采样对precision有影响

对于影响auc两个引子TPR, FPR

TPR: TP/(TP+FN),TP, FN都来源于实际样本的正标签,如果是下采样,其值自然不变,如果是真样本随机采样,TP, FN也是同等变化,其比例不会变

FPR: FP/(FP+TN) 都是来源于实际样本的负标签,采样的话,比例不会变

假如负样本变为原来的1/2,由于是随机采样,FP, TN也是变为原来的1/2,所以 FP/(FP+TN) = 0.5*FP/(0.5*FP+0.5*TN),其比值不变

下面是论文的解释

auc是怎么计算的?

论文作者进行了实验

auc是怎么计算的?

图a 样本1:1,图c 样本1:10,其roc曲线不变,所以auc不变

但是图b,d的precision-recall曲线就变了。

作者给出的方法是,只要指标计算是在同一行或同一列,其值就不会变,要是跨行或跨列,其值就会变,像accuracy