写点什么

机器学习评估指标 AUC 综述

  • 2019-10-23
  • 本文字数:2792 字

    阅读完需:约 9 分钟

机器学习评估指标 AUC 综述

引言

在互联网的排序业务中,比如搜索、推荐、广告等,AUC ( Area under the Curve of ROC ) 是一个非常常见的评估指标。网上关于 AUC 的资料很多,知乎上也有不少精彩的讨论,本文尝试基于自身对 AUC 的理解做个综述,水平有限,欢迎指出错误。


俗话说,提出正确的问题就成功了一半,本文先提出以下几个问题,希望大家读完能够加深对下列问题的理解。


  1. AUC 有几种理解?

  2. AUC 的什么特性让它如此受欢迎?

  3. AUC 的值和什么有关,多高是高?

  4. AUC 提高了是否代表线上指标会提高?

  5. 有没有更好的指标替代 AUC?

几种 AUC 的理解

一般有两大类解释,一种是基于 ROC 线下面积,需要理解混淆矩阵,包括精确率、召回率、F1 值、ROC 等指标的含义。另外一种是基于概率的解释,模型的排序能力。


在参考[1]和[4]中,关于 AUC 定义本身的讨论非常详细,上述两大类都有不同形式的解释。还包括如何用 AUC 做目标去优化,AUC 的各种计算方法,本文不再赘述,有兴趣的同学自己去看下。

AUC 的排序特性

对比 accuracy、precision 等指标,AUC 指标本身和模型预测 score 绝对值无关,只关注排序效果,因此特别适合排序业务。


为何与模型预测 score 值无关为何是很好的特性呢?假设你采用 precision、F1 等指标,而模型预测的 score 是个概率值,就必须选择一个阈值来决定哪些样本预测是 1 哪些是 0,不同的阈值选择,precision 的值会不同,而 AUC 可以直接使用 score 本身,参考的是相对顺序,更加好用。


相对于 ROC 线下面积的解释,个人更喜欢排序能力的解释。参考[2]的解释通俗易懂:


例如 0.7 的 AUC,其含义可以大概理解为:给定一个正样本和一个负样本,在 70%的情况下,模型对正样本的打分高于对负样本的打分。可以看出在这个解释下,我们关心的只有正负样本之间的分数高低,而具体的分值则无关紧要。

AUC 对均匀正负样本采样不敏感

正由于 AUC 对分值本身不敏感,故常见的正负样本采样,并不会导致 AUC 的变化。比如在点击率预估中,处于计算资源的考虑,有时候会对负样本做负采样,但由于采样完后并不影响正负样本的顺序分布。


即假设采样是随机的,采样完成后,给定一条正样本,模型预测为 score1,由于采样随机,则大于 score1 的负样本和小于 score1 的负样本的比例不会发生变化。


但如果采样不是均匀的,比如采用 word2vec 的 negative sample,其负样本更偏向于从热门样本中采样,则会发现 AUC 值发生剧烈变化。

AUC 值本身有何意义

我们在实际业务中,常常会发现点击率模型的 AUC 要低于购买转化率模型的 AUC。正如前文所提,AUC 代表模型预估样本之间的排序关系,即正负样本之间预测的 gap 越大,AUC 越大。


通常,点击行为的成本要低于购买行为,从业务上理解,点击率模型中正负样本的差别要小于购买力模型,即购买转化模型的正样本通常更容易被预测准。


细心的童鞋会想,既然 AUC 的值和业务数据本身有关,那么它的值为多少的时候算好呢?

AUC 值本身的理论上线

假设我们拥有一个无比强大的模型,可以准确预测每一条样本的概率,那么该模型的 AUC 是否为 1 呢?现实常常很残酷,样本数据中本身就会存在大量的歧义样本,即特征集合完全一致,但 label 却不同。因此就算拥有如此强大的模型,也不能让 AUC 为 1。


因此,当我们拿到样本数据时,第一步应该看看有多少样本是特征重复,但 label 不同,这部分的比率越大,代表其“必须犯的错误”越多。学术上称它们为 Bayes Error Rate,也可以从不可优化的角度去理解。


我们花了大量精力做的特征工程,很大程度上在缓解这个问题。当增加一个特征时,观察下时候减少样本中的 BER,可作为特征构建的一个参考指标。

AUC 与线上业务指标的宏观关系

AUC 毕竟是线下离线评估指标,与线上真实业务指标有差别。差别越小则 AUC 的参考性越高。比如上文提到的点击率模型和购买转化率模型,虽然购买转化率模型的 AUC 会高于点击率模型,但往往都是点击率模型更容易做,线上效果更好。


购买决策比点击决策过程长、成本重,且用户购买决策受很多场外因素影响,比如预算不够、在别的平台找到更便宜的了、知乎上看了评测觉得不好等等原因,这部分信息无法收集到,导致最终样本包含的信息缺少较大,模型的离线 AUC 与线上业务指标差异变大。


总结起来,样本数据包含的信息越接近线上,则离线指标与线上指标 gap 越小。而决策链路越长,信息丢失就越多,则更难做到线下线上一致。

AUC 提升和业务指标不一致

好在实际的工作中,常常是模型迭代的 auc 比较,即新模型比老模型 auc 高,代表新模型对正负样本的排序能力比老模型好。理论上,这个时候上线 abtest,应该能看到 ctr 之类的线上指标增长。


实际上经常会发生不一致,首先,我们得排除一些低级错误:


  1. 排除 bug,线上线下模型 predict 的结果要符合预期。

  2. 谨防样本穿越。比如样本中有时间序类的特征,但 train、test 的数据切分没有考虑时间因子,则容易造成穿越。


更多细节请看参考[3]和[5]

AUC 计算逻辑不足与改进

AUC 计算是基于模型对全集样本的的排序能力,而真实线上场景,往往只考虑一个用户一个 session 下的排序关系。这里的 gap 往往导致一些问题。正如参考[3]中的举例的几个 case,比较典型。主要包括两点:


  1. 线上会出现新样本,在线下没有见过,造成 AUC 不足。这部分更多是采用 online learning 的方式去缓解,AUC 本身可改进的不多。

  2. 线上的排序发生在一个用户的 session 下,而线下计算全集 AUC,即把 user1 点击的正样本排序高于 user2 未点击的负样本是没有实际意义的,但线下 auc 计算的时候考虑了它。


阿里在论文:Deep Interest Network for Click-Through Rate Prediction 中提出了 group auc 来处理上述问题。公式如下:



即以 user 为 group,在对 user 的 impression 做加权平均。私以为,只是对用户做 group 还不够,应该是基于 session 去做 group。


最后,AUC 这个问题是在模型优化到一定程度才需要考虑的。大部分情况下,如果模型的 auc 有大幅提升,线上效果一般是一致的。如果不一致,请先从产品形态去思考有没有坑。

参考资料:

  1. 如何理解机器学习和统计中的 AUC?


https://www.zhihu.com/question/39840928


  1. 多高的 AUC 才算高


https://zhuanlan.zhihu.com/p/24217322


  1. 线下 AUC 提升为什么不能带来线上效果提升?–测试和评估的一些真相


https://zhuanlan.zhihu.com/p/35459467


  1. 精确率、召回率、F1 值、ROC、AUC 各自的优缺点是什么?


https://www.zhihu.com/question/30643044


  1. 如何解决离线 auc 和线上点击率不一致的问题?


https://www.zhihu.com/question/305823078/answer/552640544

原文链接:

https://zhuanlan.zhihu.com/p/52930683


作者介绍


吴海波


蘑菇街 | 搜索、推荐排序算法 owner


本文来自 DataFun 社区


原文链接


https://mp.weixin.qq.com/s?__biz=MzU1NTMyOTI4Mw==&mid=2247494362&idx=1&sn=46e73b1bff8beb40afba33fb12b4dce5&chksm=fbd758b6cca0d1a0ca1b2d0a2c115c5b891624975bdd16137706eb4aafdc550ac9a20809613b&scene=27#wechat_redirect


2019-10-23 08:003644

评论

发布
暂无评论
发现更多内容

燃炸!字节跳动成功上岸,只因刷爆LeetCode算法面试题

Java~~~

Java 架构 面试 算法 LeetCode

低代码是什么?

低代码小观

低代码 低代码开发平台

百度智能云天工物联网支持多种类数据传输!MQTT助力数据、语音、视觉应用智能化

百度开发者中心

产品 最佳实践 前沿技术 企业资讯

ipfs挖矿用什么app?ipfs挖矿收益计算器怎么看?

ipfs挖矿用什么app ipfs挖矿收益计算器怎么看

Filecoin未来会涨到多少?Filecoin挖矿现在入场合适吗?

区块链 分布式存储 IPFS fil大涨 filecoin挖矿

爆料!前华为微服务专家纯手打500页落地架构实战笔记,已开源

Java~~~

Java spring 架构 面试 微服务

如何做好Clickhouse集群的监控覆盖?

BUG侦探

大数据 Clickhouse 监控系统

Filecoin挖矿收益高涨,Filecoin挖矿收益怎么计算?

区块链 分布式存储 IPFS filecoin挖矿 filecoin收益

架构实战训练营模块六作业

Clarke

云时代,用对工具就能让云上运维工作事半功倍!

行云管家

云计算 云服务 混合云 云时代 云运维

无代码是什么?

低代码小观

无代码开发 无代码 无代码平台

前阿里P8狂总结出1000页Java面试核心原理+框架篇笔记

Java~~~

Java spring 架构 面试 微服务

javaer 徒手撸一个 python 语言的分布式 rpc

awen

Python 微服务 RPC

IM技术分享:万人群聊消息投递方案的思考和实践

JackJiang

即时通讯 IM 群聊

接口管理进阶-环境变量的使用

CodeNongXiaoW

大前端 测试 后端 接口文档 接口管理

一上来就主从、集群、哨兵,这谁受得了

阿Q说代码

redis 命令 8月日更 五大基础类型

InfoQ引航计划|合集排版规范

InfoQ写作社区官方

引航计划

华为3位大咖吐血整理出600多页Spring微服务架构设计

Java~~~

Java spring 架构 面试 微服务

安卓主板RK3288 RK3128 RK3399有哪些特点?

双赞工控

安卓主板 rk3288主板 rk3399主板 rk3128主板

面试工长

escray

生活记录 8月日更 装修记

信息安全等级保护四级常见问题解答

行云管家

网络安全 信息安全 堡垒机 等级保护

瞬间登上牛客网热榜榜首!腾讯内部68W字Netty全栈宝典简直太香了

Java 编程 架构 面试 Netty

重磅升级!融云推出 IM+RTC+X「全」通信解决方案

融云 RongCloud

开发者 音视频 通信 即时通讯

财经大课:商业的边界

石云升

8月日更 财经思维

InfoQ引航计划|文章排版规范

InfoQ写作社区官方

熟悉Linux tail 命令

林十二XII

漫游语音识别技术——带你走进语音识别技术的世界

声网

语音识别

Paxos理论介绍(1): 朴素Paxos算法理论推导与证明

OpenIM

fil挖矿步骤教程是什么?fil挖矿规则是什么?

fil挖矿步骤教程是什么 fil挖矿规则是什么

阿里五位大佬总结操作系统+程序员必知硬核知识离线版pdf火了

Java~~~

Java 架构 面试 操作系统 网络

牛皮了!华为世界顶级Linux大牛总结出了3788页进阶笔记

Java~~~

Java Linux 架构 面试 运维

机器学习评估指标 AUC 综述_AI&大模型_DataFunTalk_InfoQ精选文章