A/B 测试概述
- 召回团队实现了一种GNN召回通道,离线实验结果正向
- 下一步是做线上的小流量A/B测试,考察新的召回通道对线上指标的影响
- 模型中有一些参数,比如GNN的深度取值有1,2,3,需要用A/B测试选取最优参数
随机分桶
- 分b=10个桶,每个桶有10%的用户
- 首先用哈希函数把用户ID映射成某个区间内的证书,然后把这些证书均匀随机分成b个桶
- 我们用1,2,3号桶做实验组,用4号桶作为对照组,区别在于1,2,3用了GNN,而且有不同的层,4号桶不用GNN,分别计算每个桶的指标
- 如果某个实验组的指标显著由于对照组,则说明对应的策略有效,值得推全
分层实验
- 解决流量不够用怎么办的问题
- 信息流产品的公司有很多部门和团队,大家都需要做A/B测试:推荐系统(召回,粗排,精排,重排),用户界面,广告
- 如果把用户随机分成10组,1组做对照,9组做实验,那么只能同时做9组实验,无法满足产品迭代需求
- 解决方案就是分层实验:召回,粗排,精排,重拍,用户界面,广告
- 同层互斥:GNN实验占了召回层的4个桶,其他召回实验只能用剩余的6个桶
- 不同层正交:每一层独立随机对用户做分桶,每一层都可以独立用100%的用户做实验
- 如果所有实验都正交,则可以同时做无数组实验 - 用互斥的原因:同类策略天然互斥,对于一个用户只能用其中一种
- 同类的策略(例如添加两条召回通道)效果会增强活相互抵消(1+1>2),互1斥可以避免同类策略相互干扰(1+1<2)
- 不同类型的策略通常不会相互干扰,可以作为正交的两层(可以理解为1+1=2)
Holdout机制
- 每个实验独立汇报对业务指标的提升
- 公司考察一个部门在一段时间内对业务指标的总体提升
- 取10%的用户作为holdout桶,推荐系统使用剩余90%的用户做实验,两者互斥
- 10%holdout桶vs90%的实验桶的diff(需要归一化),为整个部门的业务指标收益
- 每个考核周期结束后,清除holdout桶,让推全实验从90%用户扩大到100%用户
- 重新随机划分用户,得到holdout桶和实验桶,开始下一轮考核周期
- 新的holdout桶与实验桶各种业务指标的diff接近于0
- 随着召回,粗排,精排,重排实验上线和推全,diff会逐渐扩大
实验推全与反转实验
- 如果diff显著为正向,那么推全该策略
- 有的指标立刻收到新策略影响,有的指标有滞后性,需要长期观测
- 用反转实验解决上述矛盾(推全有好处。滞后也有好处),既可以尽快推全,也可以长期观测指标
- 在推全的新层中开一个旧策略的桶,长期观测实验指标