学习b站up主的ShusenWang的推荐系统笔记
指标
任何系统/算法/模型都需要评估,对于推荐系统的指标有消费指标和北极星指标,消费指标是衡量用户对产品的使用情况,使用频率广度和深度,用于了解用户的使用习惯,北极星指标是企业用于评估业务增长和成功的指标
消费指标
点击率,收藏率,转发率,点赞率,阅读完成率,诸如此类不同的场景对应的消费指标不同
北极星指标
用户规模,日活(DAU)月活(MAU)
实验流程
离线测试 小流量A/B测试 全流量上线
离线测试与用户没有交互,仅使用历史数据进行训练
小流量A/B测试与小范围的用户进行交互
全流量上线就是推全给所有人使用该推荐算法
推荐流程
推荐往往要求时间比较短,因此用这样类似筛选的模式减少在线计算量。
召回
召回通道
召回通道就是召回的方式,如图召回有很多方式,后续会一一讲解
粗排,精排
两种架构几乎相同,但是精排往往架构更加复杂,输入特征,提取特征都大于粗排
小结
召回就是通过各种召回通道取出几千条文章,粗排就是通过小型神经网络选出几百份,精排就是从几百份中通过深度神经网络再选出几十份,重排就是做多样性抽取,结构打散,插入广告等(因为用户不希望得到同质化严重的内容)。
A/B测试
A/B测试的作用,在离线测试上的算法不一定在在线测试取得好的效果,而不好的效果会对用户造成恶劣的体验,因此在小范围的测试是有必要的,另一方面也可以调整推荐算法的参数。
假设该团队实现了GNN召回通道,在离线测试中取得了正向的效果,下一步就是在小范围用户进行A/B测试考察新的召回通道对在线指标的影响。
GNN的深度为{1,2,3}
随机分桶
假设所有用户为b个,将所有用户随机分成n个筒,用户量足够大的情况下,这n个桶中各项指标应该是一样的。
假设n=10
使用4个桶,1,2,3作为实验组,GNN深度分别为1,2,3,如果2号桶各项指标相对对照组有显著提升,证明深度为2的GNN召回通道对在线指标有积极作用,值得推全。
流量使用
对于一个公司来说,有很多团队都需要做实验,对于每个桶做什么实验就有一定要求,不能随便给哪个桶安排哪种召回,粗排等。
分层实验
分层实验是将一个推荐流程分为多层,召回层,粗排层,精排层…
同层互斥
相同层中同一个同不能进行多个实验,因为多个实验并行造成的效果有可能是抵消导致1+1<2,也可能是互促导致1+1>2,这样的结果导致不能评估某种召回或实验是有效果还是没有效果,因此同层互斥
不同层正交
不同层正交,意味着不同层的各个实验的效果都是互不影响的,所以每一层都可以使用100%用户
对照 --HoldOut机制
取10%的用户作为对照组,计算每一层的各项指标与对照组的差距(diff),用于评估各层的成效,一段考核结束后,将推荐系统推全,再随机选择10%的用户作为holdout,刚开始时holdout与其他90%差距不大。
在一个项目中,有的指标是推荐系统刚上线就可以看到变化的,例如点击率,点赞率,有的是长期以往才能看到效果的,比如页面留存率等,但是考核期往往时间较短,为解决这个问题就需要反转实验。
反转实验
反转实验就是在新开的桶里保存一个旧策略来观察他的长期指标变化
小结
- 分层实验:同层互斥,不同层正交
- Holdout:保留10%的用户作为对照组,不受任何实验影响,考察整个部门对项目的贡献
- 实验推全:将实验作用于100%的用户,推全层与其他层正交
- 反转实验:在推全层保留一部分使用旧策略,以此观察长期指标的变化,长期观察新旧策略diff