复盘:auc是怎么计算的?auc怎么快速计算?
复盘: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,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。
相关文章
- 计算领域,编码的含义到底是什么?
- 使用sklearn处理经纬度的三种距离计算与地图可视化
- 云计算如何支持数字化转型
- 3-4 计算长方形的周长和面积
- 微软行星planetarycomputer云计算平台——JupyterLab电脑环境配置!
- 如何在云计算平台使用R语言编程的快速入门指南
- 「书评」SAP内存计算——HANA
- 【前端】JS耗时计算/时间转换/日期/本周/本月/格式化
- js日期计算及快速获取周、月、季度起止日
- 什么是程序员?程序员的工作就是让电脑快速,自动化完成一些日常需要人为去做的一些重复有重复,反复又反复的工作。尤其是一些需要算法的,需要大量计算的,更需要程序的介入。
- 函数式编程的三个核心问题:计算的构建、求值、关系
- 《程序设计解题策略》——1.3 利用线段树解决区间计算问题
- 云计算刺激光通信行业快速发展
- 云计算可解决数据中心碳排放问题?
- 迅雷Q3财报:云计算收入大涨 CDN获直播企业追捧
- hdu_1086 You can Solve a Geometry Problem too(计算几何)
- 云计算与银行业务价值
- 从IBM三大前沿科技看量子计算、认知计算和区块链
- 计算网络带宽需求的正确姿势
- 边缘计算仍难取代云计算
- CAD中如何快速计算图形重量?
- CAD中如何快速进行防排烟计算?CAD防排烟计算步骤
- 影响数据中心和云计算的2016年五大趋势
- 云计算十年,下一站是API SaaS吗?