栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

笔记︱统计评估指标AUC 详解

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

笔记︱统计评估指标AUC 详解

2 AUC的特性与优劣

1 AUC指标本身和模型预测score绝对值无关 只关注排序效果 因此特别适合排序业务。
当然也会带来问题
AUC 反应了太过笼统的信息。无法反应召回率、精确率等在实际业务中经常关心的指标。
还有 AUC 的 misleading 的问题

modelA 和 modelB 的 ROC 曲线下面积 AUC 是相等的 但是两个模型在不同区域的预测能力是不相同的 所以我们不能单纯根据 AUC 的大小来判断模型的好坏。

2 AUC对分值本身不敏感 故常见的正负样本采样 并不会导致auc的变化。

比如在点击率预估中 处于计算资源的考虑 有时候会对负样本做负采样 但由于采样完后并不影响正负样本的顺序分布。

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

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

3 auc非常适合评价样本不平衡中的分类器性能

3 AUC多大才算好

多高的AUC才算高

首先AUC 1可能吗

难度非常大 样本数据中本身就会存在大量的歧义样本 即特征集合完全一致 但label却不同。

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

影响Max AUC的主要因素 样本的不确定性。

AUC的高低只和特征取值的多样性有关。

其实不只是Max AUC 在真实问题中使用更多好的特征也会提高AUC 起码是训练集AUC 本质上是因为更多的特征可以组合出更多的特征取值来 从而提高特征的区分能力。

4 线上、线下AUC差异较大成因分析 4.1 业务场景使用AUC 点击模型与购买模型的差异

AUC大小 点击模型 购买转化率模型 购买model 更好预测
线下、线上差异 点击模型 购买转化率模型 购买model 线上与线下差异较大

我们在实际业务中 常常会发现点击率模型的auc要低于购买转化率模型的auc。
正如前文所提 AUC代表模型预估样本之间的排序关系 即正负样本之间预测的gap越大 auc越大。
通常 点击行为的成本要低于购买行为 从业务上理解 点击率模型中正负样本的差别要小于购买力模型
即购买转化模型的正样本通常更容易被预测准。
AUC毕竟是线下离线评估指标 与线上真实业务指标有差别。差别越小则AUC的参考性越高。
比如上文提到的点击率模型和购买转化率模型 虽然购买转化率模型的AUC会高于点击率模型 但往往都是点击率模型更容易做 线上效果更好。
购买决策比点击决策过程长、成本重 且用户购买决策受很多场外因素影响 比如预算不够、在别的平台找到更便宜的了、知乎上看了评测觉得不好等等原因 这部分信息无法收集到 导致最终样本包含的信息缺少较大 模型的离线AUC与线上业务指标差异变大。

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

4.2 线上、线下AUC有差异

情况一 新模型比老模型auc高

代表新模型对正负样本的排序能力比老模型好。

理论上 这个时候上线abtest 应该能看到ctr之类的线上指标增长。

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

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

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

情况二 离线auc涨了不少 上线一看效果ctr和cpm反而下降

几种可能的原因和解决办法:

特征/数据出现穿越

一般就是使用了和label强相关的特征导致的数据泄漏。这种问题一般相对好查 很多时候在离线阶段就能发现。
明显的表现就是训练集和测试集差异比较大
2. 线上线下特征不一致
据我所知 这种情况是导致离线涨在线跌或者没效果的最常见情况。

首先是代码不一致 例如 离线对用户特征的加工处理采用scala/python处理 抽取用户最近的50个行为 在线特征抽取用c 实现只用了30个。
只要离线和在线用不同的代码抽取就很容易存在这种代码带来的不一致。
另外一种线上线下不一致 是由于数据的不一致导致。

这在离线拼接样本和特征的pipeline中比较常见。

一般离线特征都是按照天处理的 考虑各种数据pipeline的流程 处理时间一般都会有延迟 离线特征处理完之后导到线上供线上模型预估时请求使用。
要严格保证线上线下的特征一致性 最根本的方法就是同一套代码和数据源抽取特征 业内目前通用的方法就是 在线实时请求打分的时候落地实时特征 训练的时候就没有特征拼接的流程 只需要关联label 生成正负样本即可
3. 数据分布的不一致
如果仔细排查 既不存在数据泄漏 也没有出现不一致的问题
离线auc明明就是涨了很多 线上就是下降 而且是离线涨的越多 线上下降越多 还有一种可能就是数据的不一致 也就是数据的“冰山效应”

----离线训练用的是有偏的冰山上的数据 而在线上预估的时候 需要预测的是整个冰山的数据 包括大量冰面以下的数据

这里给下两个在我们这还比较有效的经验

1 对无偏数据进行上采样
这里的无偏是相对的 可以是随机/探索流量产生的样本 也可以是新模型产生的样本。大概意思 就是尽可能利用这些对新模型有利的样本

2 线上线下模型融合

比较trick的方法 没有太多方法论 但是确实能work。

5 AUC逻辑升级 - GAUC

AUC作为排序的评价指标本身具有一定的局限性 它衡量的是整体样本间的排序能力 对于计算广告领域来说 它衡量的是不同用户对不同广告之间的排序能力 而线上环境往往需要关注同一个用户的不同广告之间的排序能力。

线上会出现新样本 在线下没有见过 造成AUC不足。

这部分更多是采用online learning的方式去缓解 AUC本身可改进的不多。

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

所以 阿里在 Deep Interest Network中提到一种改进版本的 AUC 指标 用户加权平均AUC gAUC 更能反映线上真实环境的排序能力。

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

参考文献 1 AUC的理解与计算2 最浅显易懂的图解AUC和GAUC3 为什么搜索与推荐场景用AUC评价模型好坏 4 如何理解机器学习和统计中的AUC 5 多高的AUC才算高 6 线下AUC提升为什么不能带来线上效果提升 –测试和评估的一些真相7 精确率、召回率、F1 值、ROC、AUC 各自的优缺点是什么 8 如何解决离线和线上auc和线上点击率不一致的问题 9 AUC 的缺陷是什么 10 线下auc涨 线上ctr/cpm跌的原因和解决办法
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/267444.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号