作者:江颢
1. 什么是长期的 AB 实验
大部分情况下,我们做的 AB 实验都是短期的,一到两周或者一个月之内的,通过分析这段时期内测得的实验效应得出实验结论,并最终进行推广。
长期实验即运行时间达数月甚至数年的实验,实验的长期效应指的是需要数月数年的 AB 实验才能积累的实验效应。
那什么场景下还需要做长期的 AB 实验,为什么不直接将短期的实验效应直接推广到长期效应呢?
因为在某些情况下,实验的长期效应和短期效应是不同的。
例如,在搜索引擎上显示不够匹配的搜索结果会导致用户再次搜索,搜索份额可能在短期内会增加,但随着用户体验下降并切换到更好的搜索引擎,搜索份额从长期来看会减少;同样,展示更多的广告可以在短期内增加广告点击和营收,但长期来看,却会因为广告点击甚至搜索的减少而造成营销的减少。
执着于短期的 AB 实验,会使我们倾向于高估技术的短期效应,而低估其长期效应。
2. 为什么要做长期的 AB 实验
2.1 归因
数据驱动文化的团队会使用实验结果来跟踪评估团队的目标,在这种情况下需要对实验的长期效应进行正确的测量和归因。分析如果不引入新功能,从长远来看,产品获得的效果是怎么样的;引入新功能获得成功的原因,是由于外部政策影响、竞品变化还是用户的体验得到提升。这种归因是非常具有挑战性的
2.2 积累经验
长期和短期的 AB 实验在某种业务场景下是否存在差异,如果存在是什么原因造成的?产品引入新功能对用户的体验用什么影响,如果用户被新功能吸引,但只体验一次,则说明新功能可能不太满足用户需求;如果用户需要花费很长时间才能体验到新功能,则说明用户引导可能不够。了解这种差异可以为产品后续的升级迭代积累经验
2.3 推广结论
通过测量某种场景下的某些实验的长期效应,我们可以尝试总结并推广实验结论。之后在这类场景下做 AB 实验时,我们能否通过这些长期效应,创建可预测长期效应的短期指标,将这些指标作为我们实验的护栏指标;或者在决策中考虑那些推广的结论
3. 为什么长期的 AB 实验容易踩坑
我们先来介绍一种最常见最流行的做长期实验的方式:即延长短期实验的运行时间,长期运行它。
下图展示了随着时间推移,测得的实验效应变化。第一个实验周期测得的百分比增量测量值 P1 被认为是短期效应;而最后一个测量值 PT 则被认为是长期效应。
我们以此为例分析下这种简单的方式容易踩那些坑,导致长期实验最后一周的测量值 PT 可能无法代表实验真正的长期效应:
3.1 实验设计不合理
3.1.1 随机化单元设计不合理
如果随机化单元设置成用户级别,但根据 cookie 进行试验的随机化,随着时间推移,实验组的用户可能因为使用新 cookie 而被随机分配到对照组,时而存在于实验组,时而存在于对照组,从而带来偏差。
3.1.2 幸存者偏差
并非实验开始时的所有用户都可以存在到实验结束。
如果实验组和对照组之间的用户生存率不同,则 PT 会有幸存者偏差。
如果不喜欢新功能的试验组用户随着时间流逝而启用产品,那 PT 只包含了哪些仍然存在的用户以及新加入实验的用户,从而带来偏差。
3.1.3 实验效应稀释
用户是可以使用多个设备体验功能,而如果实验仅测量其中的一个子集。那实验时间越长,用户在实验期间使用多个设备的可能性就越大。对于最后一周内访问的用户,实际上实验只包括了在整个时间段 T 中一部分的用户体验, 以 PT 衡量的结果不是用户在时间 T 曝光于实验的长期效应,而是稀释后的结果。
3.2 实验组和对照组之间存在潜在的干扰
3.2.1 直接关联
用户行为往往会受到网络中其他人的影响,尤其是熟悉的人的行为的影响。
如果被测试功能对用户有显著的影响,即使其本身可能需要一段时间才能被用户发现并使用,但经过渗透用户的社交圈,通过网络传播可能很快就被发现并使用了。
例如如果实验组会促使用户给其他用户发送更多的私信,那么对照组用户也会回复这些私信,并可能更主动发送私信。如果实验关注指标是私信发送总数,那对照组关注指标也会增长,测出来的试验组数据和对照组数据差别会偏小,而不能完整的捕捉到新算法的收益
3.2.2 间接关联
实验组和对照组可能会因为共享某种资源而产生间接关联,造成干扰。
例如 uber 测试一个溢价算法,效果很好以致于实验组的用户更愿意打车,那么在路上可能接客的司机数量减少了,对应的对照组的价格会升高,导致照组用户愿意打车的意愿降低了。这种情况,会高估实验组和对照组的差别。
又如关于搜索引擎基于的关联模型的实验,如果我们使用从所有用户那里收集到的数据训练实验组和对照组,实验组的关联模型可以更好的预测用户喜欢点击什么,那么实验运行时间越长,实验组产生的 ' 好的 ' 点击数据也会使对照组收益。实验组和对照组的差别会降低。
3.3 实验用户的行为变化
随着用户对被测功能的学习并适应变化,用户的行为也会发生变化。
如果被测功能是新功能,也许需要一段时间才能被用户注意并使用,但是一旦发现它是有用的,长期来看,用户就会频发使用。
如果被测功能是对已有功能的修改,用户由于已经适应了旧功能,用户可能会需要时间适应新功能;也可能用户会在短期内对新功能产生兴趣,投入更多的时间和探索,但长期来看,用户行为最终会达到一个平衡点。
对于这些情况,实验的短期效应和长期效应存在不同
3.4 外部生态系统的变化
3.4.1 季节性变化
不同季节,商家会采取不同的营销活动,导致用户的购买意图不同。例如双十一期间用户的购买意图会比非双十一期间表现不同
3.4.2 重大事件
例如政策发生变化、大型社会事件,都可能会影响用户的被测试功能的表现
3.4.3 竞品影响
如果竞争对手启动了相同的功能,则可能影响用户对被测试功能的体验,该功能的价值可能会下降。
3.4.4 启动其他新功能
长期实验运行期间可能会启动许多其他实验,并且可能与被测试的功能进行交互,随着时间推移,可能会对实验产生影响。
4. 如何做长期的 AB 实验
实验长期效应的偏差可能是由于不同原因引起的,以下介绍几种改善长期实验的测量方式来预防或者修正这种偏差。
注意没有一种方式可以完全解决所有的偏差,都可能存在某种局限性,建议使用前评估这些方法的局限性。
4.1 群组分析
在实验开始之前构建稳定的用户群,并仅分析对该用户群的短期效应和长期效应。这种方法可以帮助解决幸存者偏差和实验效应稀释的问题。
但这种方式有几点需要注意:
1. 群组的稳定性对这种方法的有效性非常重要。如果随机化单元是基于 cookie 的,由于 cookie 流失率很高,群组的稳定性则比较差,导致这种方法不能很好的纠正偏差
2. 群组必须具备代表性。如果群组不能代表总体人群,那分析结果可能无法推广到整个人群。
4.2 后期分析
该方式的关键是在实验运行一段时间后,使对照组用户和实验组用户在测量期间内的产品体验完全相同。
对于这种方式有两种选择:第一种在运行一段时间(时间 T)后关闭实验,然后在时间 T 和时间 T + 1 期间测量实验组用户和对照组用户之间的差异;或者可以将实验组发布给所有用户来应用此方式。
这种方式本质上是在最后一段时间内做了一个 A/A 实验,根据后期的 A/A 实验测量长期效应。
但这种方式有个前提隐患,即系统可能‘记住’了实验期间的信息,我们称之为系统的习得效应。常见的例子是通过机器学习模型向实验组用户展示更多的广告,实验组用户使用足够长的时间后系统可能会更了解用户,即使在后期进行了 A/A 实验,也仍然会向他们展示更多的广告。
如果实验中,系统的习得效应为零,那 A/A 实验之后实验组和对照组用户都曝光于完全相同的一组功能。给定足够多的实验,测量用户的习得效应,然后从新的短期实验中外推出长期效应。
这种方式能有效的将效应与随时间变化的外在因素和其他新功能带来的潜在交互影响分割开来。因为用户的习得效应是单独测量的,能为实验短期效应与长期效应的不同带来更多的分析依据。
但这种方式存在幸存者偏差和实验效应稀释的问题,可与群组分析方式结合使用。
4.3 实验留白
长期运行对照组是存在一定的成本的,代价可能是昂贵的,因为他们一直没有获得实验组的新功能。因此如果迫于时间、迭代周期的压力,需要将被测试的新功能推全给所有用户,一种方式就是实验留白。实验结果出来之后,将实验组流量发布给 90%、95% 的用户,剩下的用户留在原来的对照组数周或在数月。
留出实验是长期运行实验的一种典型方式,但需要注意的是由于对照组流量比例此时比较小,统计功效会变低,要确保仍有足够的流量不会影响实验的目标