复盘:auc是怎么计算的?auc怎么快速计算?
提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性
关于互联网大厂的笔试面试,都是需要细心准备的
(1)自己的科研经历,科研内容,学习的相关领域知识,要熟悉熟透了
(2)自己的实习经历,做了什么内容,学习的领域知识,要熟悉熟透了
(3)除了科研,实习之外,平时自己关注的前沿知识,也不要落下,仔细了解,面试官很在乎你是否喜欢追进新科技,跟进创新概念和技术
(4)准备数据结构与算法,有笔试的大厂,第一关就是手撕代码做算法题
面试中,实际上,你准备数据结构与算法时以备不时之需,有足够的信心面对面试官可能问的算法题,很多情况下你的科研经历和实习经历足够跟面试官聊了,就不需要考你算法了。但很多大厂就会面试问你算法题,因此不论为了笔试面试,数据结构与算法必须熟悉熟透了
秋招提前批好多大厂不考笔试,直接面试,能否免笔试去面试,那就看你简历实力有多强了。
面试官:auc是怎么计算的?auc怎么快速计算?
这是互联网大厂经常考的知识点:
auc是roc下面的面积
但是你懂的,一个弯曲的曲线,没法算面积
所以呢,实际上物理上,有人想出了一个计算auc的好办法来
首先明确:auc物理意义:是正样本被排在负样本前面的概率有多大,这就是auc的含义
既然涉及到排名,那很简单了,咱们就用样本最后的排序rank来算,这是推荐系统中NDCG的重要想法
也是spearman相关系数的计算方法
roc曲线计算auc–>公式计算auc
任意给一个正类样本和一个负类样本,
auc即正类样本的score大于负类样本的score的概率
公式如下
其中,M 是正样本的个数,N是副样本的个数
分母分子啥意思呢?
分母是正样本排列的数量C(M,M)=M
×负样本排列可能的数量,就C(N,N)=N
这么多排列的情况下,分子自然就是正样本能排在前面的可能性(遮雨auc就是概率)
如果正样本都排在前面
样本y1和y2的序号和是5+4=9
【真的有5种组合吗?】
那么其实组合数量是多少呢?
y1和后面三个负样本,三种组合而已,因此5其实算多了2
y2和后面三个负样本,三种组合而已,因此4其实算多了1
所以要把1和2减掉
那就是分子右边那个表达式,就是把原始的序号减掉
懂了吧?
再来解释:
采样会影响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.5FP/(0.5FP+0.5*TN),其比值不变
下面是论文的解释
论文作者进行了实验
图a 样本1:1,图c 样本1:10,其roc曲线不变,所以auc不变
但是图b,d的precision-recall曲线就变了。
作者给出的方法是,
只要指标计算是在同一行或同一列,其值就不会变,
要是跨行或跨列,其值就会变,像accuracy
手撕auc计算公式的代码,有了公式,还怕吗?
总结
提示:重要经验:
1)auc的物理含义是正样本排在负样本前面的概率,公式自然就是排列组合了,分子正样本的排序和-多出来的部分
3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。