26 | 在线测试:如何在推荐服务器内部实现A/B测试?
26 | 在线测试:如何在推荐服务器内部实现A/B测试?
讲述:王喆
时长15:13大小13.90M
如何理解 A/B 测试?
A/B 测试的“分桶”和“分层”原则
线上 A/B 测试的评估指标
SparrowRecSys 中 A/B 测试的实现方法
小结
课后思考
赞 7
提建议
精选留言(16)
- fsc20162020-12-14对于问题,我认为应该放在同一层,因为首页推荐可能会把一些有兴趣偏好的用户导入到对应的内容页,比如首页推荐球鞋,对于想购买球鞋的就会进入到球鞋内容页,这样对于内容页推荐来说 ,用户不是随机,是有偏的。
作者回复: 是这样的,和我的理解是一致。
共 4 条评论19 - 那时刻2020-12-14我觉得对于首页与内容页做测试应该放在不同层,因为首页和内容页是正交的。
作者回复: 这取决于你对首页实验和内容页实验是不是相关的认识。 如果你认为首页实验和内容页实验是完全独立的,不相关,不互相影响的,那么他们可以放在不同层,加快实验速度。 如果你认为首页实验和内容页实验是相互影响的,那么他们应该放在同一层,保证流量互斥。 实际的应用中,首页模型很大可能会影响内容页模型,所以放在同一层的做法更保险一些。
12 - 浣熊当家2020-12-14请问老师,在业界AB测试流量分配是不是有专门的team用专门的系统来automate, 不太需要算法工程师们操心, 一般用什么软件或者技术进行自动流量分配呢?
作者回复: 一般稍大的公司都会自己搭建AB测试平台,AB测试的过程其实跟业务结合的很紧密,一般不会依赖开源的工具进行实现。 刚工作的同学熟悉AB test的原理就可以了,但senior的同学其实不存在什么操心不操心的问题,理论上推荐系统的每个模块你都应该很熟悉才行,这样才能有越来越强的定位问题的能力。
5 - haydenlo2020-12-20老师好,实际工作中我们遇到了一些排序模型需要与特定召回策略配套的需求,所以目前召回层和排序层流量不是正交。比如说召回走桶号1-10的流量,排序层也会走1-10,也就是说每一层不会重新打散,请问这样会有问题吗?
作者回复: 这要看你怎么上线,你说的是召回层模型和排序层模型是绑定测试的,那么上线的时候就要一起上线,不能单独上线召回层或者排序层。 测试方法和上线方法是要对应的。
4 - 浣熊当家2021-04-19最近开始了一个新的工作,职责之一是建立一个统一中心化标准化的AB测试系统,来自动化的完成公司内所有的AB测试。 我对系统一无所知觉得很无助,之前和现在的公司,都是用sitepect和split.io这种服务来分流,然后各个组自己手动做自己的测试, 我只能在网上搜相关的资料,王喆老师如果有推荐如何从0开始搭建AB测试系统的论文,大厂案例,将会对我有莫大的帮助,很想听听您的指导和建议,如果下手,先谢谢您了!!
作者回复: 我记得极客时间上是不是有一门讲AB test的课程?也许可以试一下。大厂案例资料的话最好自己去检索一下吧,知乎,或者infoq等blog,看看有没有好的解决方案。
2 - Alan2021-04-06答:我认为首页推荐与内容页推荐模型应放在同一层。 1、从用户行为体验的业务结构上来说,先点击首页推荐,后内容页推荐,二者不建议分层,但可以分桶。 2、从推荐系统架构设计来说,老师所说的:层与层之间的正交!首页推荐更多目的为了收集用户感兴趣的数据标签,内容页推荐的数据来源大部分来自于首页推荐(标签数据、标签数据、ctr、点击次数、热门话题等),进而影响内容推荐的呈现内容(改变)甚至呈现方式(音乐类APP:车载蓝牙模式、跑步模式、正常模式)。展开
作者回复: 说的很好,赞同
2 - Geek_3c29c32021-01-20老师,想问一下,一个成熟的A/B测试框架,分桶、分流、投放等一些操作是交给产品、运营来做还是应该是数据中台来做呢?一些大厂都是怎样做的,如何做到充分解耦,还能提高测试效率?
作者回复: 必然是交给工程部门来做,因为数据中台的改变本身不明确,所以只能说是交给数据+工程部门来做这个事情。 但是运营和测试工程师一定要清楚AB测试平台的原理,因为测试终归是他们来创建的,不清楚原理只能让自己的结果没有说服力。
1 - 浣熊当家2020-12-14对于最后的问题,我觉得应该放在不同层, 因为首页不同的推荐会影响接下进入哪些内容页, 为了使内容页的AB测试结果公平,需要对首页的进行正交在进行Test和Control的分配
作者回复: 恰恰是因为首页的推荐结果会影响内容页,所以两个实验才需要放在同一层进行,你再思考一下。
共 3 条评论1 - 刘伟2023-02-21 来自新加坡刚刚看到你后续对我的问题有解释。 sorry about this. 下次会先通看然后再提问: )
- 刘伟2023-02-21 来自新加坡自我感觉, 比如视频,我们可以用 原先的数据集来做 training。 然后用最新的数据集来做 testing. 通过这种方法是可以比较出,新的模型哪些会更好。 (旧模型 serving, 但是几个新的模型在线下进行并行的模拟和评估) 比如说文中提到的视频长度, 我们可以拿既有的,比如 6 小时前的数据做 training (包含视频观看长度信息), 然后用最近 6 小时的来进行 TESTING。 (由于视频有时间和兴趣相关,所以采用了时间切割的数据划分方式)。 那么 A/B 测试存在的必要性在于什么? 是在于 如果用纯离线的方式来做的化, 那么产生的样本空间(推荐列表) 和新的模型还是不一致的。 因此不能完全用离线的方式来模拟线上的效果? xiexie展开
- 雨尽书声响2022-04-12老师有必要对于推荐系统的召回层和排序层每层做一个AB实验吗
- KayeArt2022-02-02王老师,一直没搞清楚“分桶”的必要性,求助?(“分桶”是用来解决什么问题的呢?用户量小的情况下可以不用“分桶”吗?)
- Geek_8a732a2021-08-23不同层之间流量是正交,穿越不同层的时候会被打散,但实际上首页推荐的人通过点击相应物品会进入相应物品的内容推荐页,有强相关性,不应该被打散,所以应该放在同一层
- 浣熊当家2021-04-12请问老师一下,我对正交这个词的意思总会似懂非懂,是不是就是在第一层的test和control下,分别平均分配第二层的test和control的意思么?可以直白的说成random sampling the next layer of variants, under each variant of the first layer 这样吗? 然后上面例子中,您是把第一层的两个variants拼凑, 组成第二层变量的两组, 这里我有两个问题: 1. 可以对X1的population,在细分成Y1和Y2吗, 还是一定要像例子里一样反方向 2. traffic的顺序很重要吗,比如一定要一个一个x1, 一个x2这样交替着来(如果是这样我就可以理解第一点,不能反过来了)展开
作者回复: 正交的理解没问题。 例子中只是一个示意图,不用过多纠结。只要各层之间的流量确实是随机打散的就可以。
- 浩浩2020-12-22思考题,应该放在同层,不然点击的进入本身就是一种有偏操作和带入
作者回复: 是这样,一般采用这样的做法,结果比较清晰。
- kaixinbaoma2020-12-17老师好,麻烦问下如果同一个页面,召回层和排序层一般是放在同一层还是不同层呢?
作者回复: 这个问题应该是没有理解AB测试在做什么吧?不同层做的是不同业务或者不同模型的测试,和召回层、排序层没有直接关系,建议再理解一下。
共 3 条评论