auc是怎么计算的?
1 roc曲线计算auc
我们都知道auc是roc曲线下的面积,但这种计算不方便
2 公式计算auc
有另外一种计算方法:
任意给一个正类样本和一个负类样本,正类样本的score大于负类样本的score的概率
公式如下
M 是正样本的个数,N是副样本的个数
值得是第i个样本的序号。对所有的预测样本的score进行从小到大的排序,然后从1进行标号。
原始样本 | |||||
模型打分 | 0.8 | 0.5 | 0.6 | 0.3 | 0.4 |
按分数排序 | |||||
分数 | 0.8 | 0.6 | 0.5 | 0.4 | 0.3 |
排序rank | 5 | 4 | 3 | 2 | 1 |
对于公式的分母:正样本排在负样本的情况,一共有M*N种
分子的左边一项,是正样本的序号之和
对于分子右边一项 ,M是正样本的个数,这个公式也是首项为1,末项为M, 公差为1的等差数列的求和公式,它的序列为
1, 2, 3, 。。。M
讨论一下这个序列是怎么来的?
用一种特殊的情况来说明
假设模型是完美的,正样本都排在前面,负样本都排在后面
那么此时的auc应该为1
原始样本 | |||||
模型打分 | 0.9 | 0.8 | 0.5 | 0.4 | 0.3 |
序号 | 5 | 4 | 3 | 2 | 1 |
对于分母,正样本排在负样本是2*3=6,那么对于这种特殊情况,分子也应该为6
对于分子左边,两个正样本的序号5 + 4 = 9,明显大于6,那么多出来的3,是怎么计算的?
- 对于正样本
,后面有三个负样本,正样本大于负样本的组合有3种情况(y2, y3), (y2, y4),(y2,y5),应该是3;但是如果是按序号算的话,是4,也就是说比3多了1个
- 同样,对于正样本
,正样本大于负样本的组合有3种情况(y1, y3), (y1, y4),(y1,y5),应该是3;但是如果是按序号算的话,是5,也就是说比3多了2个
- 这样多出的情况就是一个序列 1, 2
- 这个序列的最大值,就是正样本的个数M
- 对于这个序列的求解就是用等差数列的求和公式,也就是分子的右边一项
- 因为是多出的,所以用了减号
按照这种思路,就是解释了分子,当然这是一种特殊情况的解释,这种情况比较容易理解。
3 采样会影响auc吗?
直接给出答案,不会的
这种情况下要用roc曲线下的面积来解释采样对auc没有影响
几个指标:
- TPR: TP/(TP+FN)
- FPR: FP/(FP+TN)
- recall: TP/(TP+FN)
- precision: TP/(TP+FP)
- 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),其比值不变
下面是论文的解释
论文作者进行了实验
图a 样本1:1,图c 样本1:10,其roc曲线不变,所以auc不变
但是图b,d的precision-recall曲线就变了。
作者给出的方法是,只要指标计算是在同一行或同一列,其值就不会变,要是跨行或跨列,其值就会变,像accuracy