【王喆-推荐系统】评估篇-(task5)Replay和Interleaving评估

举报
野猪佩奇996 发表于 2022/01/22 23:13:49 2022/01/22
【摘要】 学习总结 (1)推荐系统的评估体系由传统离线评估、离线 Replay(在离线状态下对线上更新过程进行仿真,让整个评估过程“动”起来。)、线上 Interleaving,以及线上 A/B 测试四个层级组成...

学习总结

(1)推荐系统的评估体系由传统离线评估、离线 Replay(在离线状态下对线上更新过程进行仿真,让整个评估过程“动”起来。)、线上 Interleaving,以及线上 A/B 测试四个层级组成——由下到上评估效率逐渐降低,但是评估的准确性逐渐升高,它们共同组成一个能够高效筛选候选模型的评估体系。

(2)【离线 Replay】借鉴了 Netflix 时光机的经验,这个时光机的数据流体系通过融合日志流和场景信息数据,生成天级别的数据快照,并对外提供统一的 API,供模型训练和评估使用,使用时就像做了一次时光旅行。

(3)【Interleaving 方法】三大要点:

  • 它不进行用户分组;
  • 它的实验推荐列表是通过间隔地选择模型 A 和模型 B 的推荐物品得到的;
  • 为了保证它的公平性,我们要从模型 A 或者模型 B 中随机选择第一个物品,就像野球场选人一样完成推荐列表的生成。

(4) Interleaving 方法不能彻底替代传统 A/B 测试,在测试一些用户级别而不是模型级别的在线指标时,我们就不能用 Interleaving 方法。

【具体的指标】
比如用户的留存率,用户从试用到付费的转化率等,由于 Interleaving 方法同时使用了对照模型和实验模型的结果,我们就不清楚到底是哪个模型对这些结果产生了贡献。但是在测试 CTR、播放量、播放时长这些指标时,Interleaving 就可以通过累加物品效果得到它们。这个时候,它就能很好地替代传统的 A/B 测试了。
在这里插入图片描述

一、推荐系统的评估体系

在推荐系统评估中,经常遇到2类问题:

  • A/B测试时流量不够用,需要排队进行自己的测试,拖慢实验的新思路和迭代优化模型的进度。
  • 如何选择这么多种离线评估和在线评估测试方法。

小结:建立起一套推荐系统的评估体系。

1.1 评估体系

评估体系:由多种评估方式组成、兼顾效率(用较少资源)和正确性。
图 1 就是一个典型的评估体系示意图。从图中我们可以看到,处于最底层的是传统的离线评估方法,比如 Holdout 检验、交叉检验等,往上是离线 Replay 评估方法,再往上是一种叫 Interleaving 的线上测试方法,最后是线上 A/B 测试。

这4层得以平衡效率和准确性,越底层的方法就负责更多筛选任务,所以要求“快”(类似召回层要快,排序层要准),而在模型快上线前,就应该用最顶层——最接近真实产品体验的A/B测试,来进行最后的模型评估。
在这里插入图片描述

图1 推荐系统的评测体系 (出自《深度学习推荐系统》)

1.2 模型筛选过程

栗子:
现在有 30 个待筛选的模型,如果所有模型都直接进入线上 A/B 测试的阶段进行测试,所需的测试样本是海量的,由于线上流量有限,测试的时间会非常长。但如果我们把测试分成两个阶段,第一个阶段先进行初筛,把 30 个模型筛选出可能胜出的 5 个,再只对这 5 个模型做线上 A/B 测试,所需的测试流量规模和测试时间长度都会大大减少。这里的初筛方法,就是我们在评估体系中提到的离线评估、离线 Replay 和在线 Interleaving 等方法。
在这里插入图片描述

1.3 两点注意

  • 一个是离线 Replay 这个方法,虽然之前学习离线 Replay 的原理(在离线状态下对线上更新过程进行仿真,让整个评估过程“动”起来。),但是对于它的相关工程架构还没有讲过;
  • 第二个是上面提到过的线上 Interleaving 方法。

二、Netflix 的 Replay 评估方法实践

离线 Replay 方法的原理:离线 Replay 通过动态的改变测试时间点,来模拟模型的在线更新过程,让测试过程更接近真实线上环境。
在这里插入图片描述

2.1 未来信息处理

在Replay实现过程中要注意“未来信息”问题,或者叫做“特征穿越”问题。在 Replay 过程中,每次模型更新的时候,我们都需要用历史上“彼时彼刻”的特征进行训练,否则训练和评估的结果肯定是不准确的。

【举栗】
假设 Replay 方法要使用 8 月 1 日到 8 月 31 日的样本数据进行重放,这些样本中包含一个特征,叫做“历史 CTR”,这个特征只能通过历史数据来计算生成。

8 月 20 日的样本就只能够使用 8 月 1 日到 8 月 19 日的数据来生成“历史 CTR”这个特征,绝不能使用 8 月 20 日以后的数据来生成这个特征。在评估过程中,如果我们为了工程上的方便,使用了 8 月 1 日到 8 月 31 日所有的样本数据生成这个特征,供所有样本使用,之后再使用 Replay 的方法进行评估,那我们得到的结论必然是错误的。

为了实现支持这种历史特征的复现,Netflix建立了一套从数据生成到数据处理再到数据存储的数据处理架构。

2.2 Netflix的时光机

Netflix 为了进行离线 Replay 的实验,建立了一整套从数据生成到数据处理再到数据存储的数据处理架构,并给它起了一个很漂亮的名字,叫做时光机(Time Machine)。

在时光机这个架构之上,使用某个时间段的样本进行一次 Replay 评估,就相当于直接穿越到了彼时彼刻,用当时的日志和特征进行模型训练和评估,就像进行了一次时光旅行(Time Travel)一样。

下图 4 就是时光机的架构,图中最主要的就是下图右下角的 Snapshot Jobs(数据快照)模块。它是一个每天执行的 Spark 程序,它做的主要任务就是把当天的各类日志、特征、数据整合起来,形成当天的、供模型训练和评估使用的样本数据

它还会以日期为目录名称,将样本快照数据保存在分布式文件系统 S3 中(Snapshots),再对外统一提供 API(Batch APIs),供其他模型在训练和评估的时候按照时间范围方便地获取。

S3就是HDFS在amazon 云方案上的实现。

在这里插入图片描述

图4 Netflix的离线评估数据流架构——时光机 (出自The Netflix Tech Blog )

  • Context Set 模块负责保存所有的历史当天的环境信息。 环境信息主要包括两类:
    • 一类是存储在 Hive 中的场景信息,比如用户的资料、设备信息、物品信息等数据;
    • 另一类是每天都会发生改变的一些统计类信息,包括物品的曝光量、点击量、播放时长等信息。
  • Prana 模块负责处理每天的系统日志流。 系统日志流指的是系统实时产生的日志,它包括用户的观看历史(Viewing History)、用户的推荐列表(My List)和用户的评价(Ratings)等。这些日志从各自的服务(Service)中产生,由 Netflix 的统一数据接口 Prana 对外提供服务。

小结:
(1)Snapshot Jobs:通过 Context Set 获取场景信息,通过 Prana 获取日志信息,再经过整合处理、生成特征之后,保存当天的数据快照到 S3。
(2)在生成每天的数据快照后,使用 Replay 方法进行离线评估就不再是一件困难的事情了,因为我们没有必要在 Replay 过程中进行烦琐的特征计算,直接使用当天的数据快照(Snapshot Jobs)就可以了。

三、Interleaving 评估方法

3.1 提出的意义

Interleaving 评估方法提出的意义:

  • 它是和 A/B 测试一样的在线评估方法,能够得到在线评估指标;
  • 目的是为了比传统的 A/B 测试用更少的资源,更快的速度得到在线评估的结果。

3.2 Interleaving实现细节

  • 在传统的 A/B 测试中,我们会把用户随机分成两组。一组接受当前的推荐模型 A 的推荐结果,这一组被称为对照组 。另一组接受新的推荐模型 B 的推荐结果,这组被成为实验组。
  • 在 Interleaving 方法中,不再需要两个不同组的用户,只需要一组用户,这些用户会收到模型 A 和模型 B 的混合结果。也就是说,用户会在一个推荐列表里同时看到模型 A 和模型 B 的推荐结果。在评估的过程中,Interleaving 方法通过分别累加模型 A 和模型 B 推荐物品的效果,来得到模型 A 和 B 最终的评估结果。
    在这里插入图片描述
图5 传统A/B测试和Interleaving方法的比较 (出自The Netflix Tech Blog )

(1)保证模型的公平性

我们需要考虑推荐列表中位置偏差的问题,要想办法避免来自模型 A 或者模型 B 的物品总排在第一位。因此,我们需要以相等的概率让模型 A 和模型 B 产生的物品交替领先。这就像在野球场打球的时候,两个队长会先通过扔硬币的方式决定谁先选人,再交替来选择队员。

先选模型 A 或者模型 B 的排名第一的物品作为最终推荐列表的第一个物品,然后再交替选择,直到填满整个推荐列表。所以,最后得到的列表会是 ABABAB,或者 BABABA 这样的顺序,而且这两种形式出现的概率应该是相等的,这样才能保证两个模型的公平性。

(2)模型混合的过程

理解 Interleaving 方法混合模型 A 和 B 结果的过程。和刚才说的野球场选人的过程一样,我们先选模型 A 或者模型 B 的排名第一的物品作为最终推荐列表的第一个物品,然后再交替选择,直到填满整个推荐列表。所以,最后得到的列表会是 ABABAB,或者 BABABA 这样的顺序,而且这两种形式出现的概率应该是相等的,这样才能保证两个模型的公平性。

(3)综合效果

最后,我们要清楚推荐列表中的物品到底是由模型 A 生成的,还是由模型 B 生成的,然后统计出所有模型 A 物品的综合效果,以及模型 B 物品的综合效果,然后进行对比。这样,模型评估过程就完成了。

小结:Interleaving 的方法由于不用进行用户分组,因此比传统 A/B 测试节约了一半的流量资源。但是 Interleaving 方法不能彻底替代传统 A/B 测试,在测试一些用户级别而不是模型级别的在线指标时,我们就不能用 Interleaving 方法。

【具体的指标】
比如用户的留存率,用户从试用到付费的转化率等,由于 Interleaving 方法同时使用了对照模型和实验模型的结果,我们就不清楚到底是哪个模型对这些结果产生了贡献。但是在测试 CTR、播放量、播放时长这些指标时,Interleaving 就可以通过累加物品效果得到它们。这个时候,它就能很好地替代传统的 A/B 测试了。

四、作业

在 Interleaving 方法中,推荐列表是由模型 A 和模型 B 的结果共同组成的,那如果模型 A 和模型 B 的结果中有重叠怎么办?是保留模型 A 的结果还是模型 B 的结果呢?你有什么好的想法吗?

【答】可以随机交替选择模型A或B来显示,如果本次随机选择了模型A,那下次可以选择模型B,这样不丢失模型A和B的信息。

五、课后答疑

Reference

(1)https://github.com/wzhe06/Reco-papers
(2)《深度学习推荐系统实战》,王喆
(3)王喆专栏测试框架:https://zhuanlan.zhihu.com/p/68509372

文章来源: andyguo.blog.csdn.net,作者:山顶夕景,版权归原作者所有,如需转载,请联系作者。

原文链接:andyguo.blog.csdn.net/article/details/121329754

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。