在Pinterest,我们每天都要进行数千个实验。我们主要依靠日常实验指标来评估实验效果。日常实验管道运行一次可能会花费10多个小时,有时还会超时,因此想要验证实验设置、触发的正确性以及预期的实验性能时就没那么方便了。当代码中存在一些错误时这个问题尤为突出。有时可能要花几天时间才能发现错误,这对用户体验和重要指标造成了更大的损害。我们在Pinterest开发了一个近实时实验平台,以提供更具时效性的实验指标,从而帮助我们尽快发现这些问题。
可能出现的问题有:
- 实验导致impression的统计数据显著下降,因此需要尽快关闭实验。
- 与对照组相比,实验导致搜索的执行次数显著增加。
上图的面板显示了所选事件的实验组和对照组的流量(也就是动作数)和倾向(也就是unique user的数量)。自实验开始以来,这些计数已经累计了3天时间。如果在3天后发生了re-ramp(分配给实验组和对照组的用户数量增加),则计数会归零0并重新开始累计3天时间。
为了确保实验组与对照组之间的对比在统计上是有效的,我们做了一些统计检验。由于指标是实时交付的,因此每次按顺序收到新记录时,我们都必须进行这些检验。这需要与传统的固定视野检验不一样的方法,否则会带来较高的假正率。我们考虑过几种顺序测试方法,包括赌徒破产、贝叶斯A/B检验和Alpha消耗函数方法。为了保证数值稳定性,我们从t检验+ Boferroni校正(将我们的案例作为多次检验进行处理)开始,并为我们的初始实现预先确定了检验次数。