想做长期的 AB 实验?快来看看这些坑你踩了没

长期,ab,实验,快来,看看,这些 · 浏览次数 : 323

小编点评

**AB 实验的长期效应的偏差** **1.群组分析** - 在实验开始之前构建稳定的用户群,并仅分析对该用户群的短期效应和长期效应。 **2.后期分析** - 在实验运行一段时间后,使对照组用户和实验组用户在测量期间内的产品体验完全相同。 **3.实验留白** - 在实验中,迫于时间、迭代周期的压力,需要将被测试的新功能推全给所有用户,一种方式就是实验留白。 **4.实验的长期效应的偏差** - 方法1:实验结果出来之后,将实验组流量发布给 90%、95% 的用户,剩下的用户留在原来的对照组数周或在数月。 - 方法2:在实验中,迫于时间、迭代周期的压力,需要将被测试的新功能推全给所有用户,一种方式就是实验留白。

正文

作者:江颢

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% 的用户,剩下的用户留在原来的对照组数周或在数月。

留出实验是长期运行实验的一种典型方式,但需要注意的是由于对照组流量比例此时比较小,统计功效会变低,要确保仍有足够的流量不会影响实验的目标

与想做长期的 AB 实验?快来看看这些坑你踩了没相似的内容:

想做长期的 AB 实验?快来看看这些坑你踩了没

作者:江颢 1.什么是长期的 AB 实验 大部分情况下,我们做的 AB 实验都是短期的,一到两周或者一个月之内的,通过分析这段时期内测得的实验效应得出实验结论,并最终进行推广。 长期实验即运行时间达数月甚至数年的实验,实验的长期效应指的是需要数月数年的 AB 实验才能积累的实验效应。 那什么场景下还

玩一玩 Ubuntu 下的 VSCode 编程

一:背景 1. 讲故事 今天是五一的最后一天,想着长期都在 Windows 平台上做开发,准备今天换到 Ubuntu 系统上体验下,主要是想学习下 AT&T 风格的汇编,这里 Visual Studio 肯定是装不了了,还得上 VSCode,刚好前几天买了一个小工控机,这里简单记录下 零到一 的过程

基于OCR进行Bert独立语义纠错实践

摘要:本案例我们利用视频字幕识别中的文字检测与识别模型,增加预训练Bert进行纠错 本文分享自华为云社区《Bert特调OCR》,作者:杜甫盖房子。 做这个项目的初衷是发现图比较糊/检测框比较长的时候,OCR会有一些错误识别,所以想对识别结果进行纠错。一个很自然的想法是利用语义信息进行纠错,其实在OC

软件要想做的好,测试必定少不了

摘要:有句话说道:“质量是设计出来的,而不是测出来的。”这其实就是在追根溯源bug的产生,因为只有知道了其根源才可以行之有效的解决这一问题。因此要将测试左移到软件最初的设计阶段,并贯穿整个研发活动的始终。 本文分享自华为云社区《测试左移》,作者:华为云PaaS服务小智 。 什么是测试左移 在传统的软

Vue3使用Vuex 教程(这才是真正的小白教程!)

我的项目是vue3+element-plus 我是个菜鸡,我不懂前端。想做一个tags的导航标签页。但是点击标签页之后页面仍然是会重新请求。感觉这不就跟没做一样吗? 遂百度GPT,第一种方式采用的就是存储到session里。搞了大半天,突然觉得这样好捞,遂采用vuex。虽然两者理论上区别不大,但是说

老生常谈!程序员为什么要阅读源代码?

大家好,我是码农先森。 阅读源码这是一个老生常谈的话题了,但又是很多人想做又没有付出行动的事情。前段时间我研究了 Swoole 的源代码,并且输出了系列的源码分析文章「感兴趣的朋友可以翻阅以前的文章」。虽然这个过程很枯燥和艰难,但到最后有种苦尽甘来的感觉,因为突破了自己之前一直想做又不敢做的一件事情

使用 TiDB Vector 搭建 RAG 应用 - TiDB 文档问答小助手

本文首发至TiDB社区专栏:https://tidb.net/blog/7a8862d5 前言 继上一次《TiDB Vector抢先体验之用TiDB实现以图搜图》后,就迫不及待的想做一些更复杂的应用。上一篇在 TiDB 社区专栏发布以后还是有很多社区朋友不明白向量的应用场景到底是什么,这次用一个更直

关于时间管理的一点建议

在成为 Tech Lead 之后我发现时间变得极度不够用,甚至会成为了我焦虑和殚精竭虑的源泉。因为我无法主动的去做我应该(定方向、做定期回顾)做和想做的事情,而总是被动的被他人牵着鼻子走:无穷无尽的决策请求、寻求帮助、会议邀约。

如何在移动端数据可视化大屏实现分析?

本文由葡萄城技术团队于博客园原创并首发转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 项目想做数据可视化,想同时在PC端、手机端查看数据怎么办?业务主要关心的数据包括:销售数据、业绩达成、同比、环比,各产品销售情况及潜客商机、未来收入预测等数据,最好附加人

9.前端初步设计

空了挺长时间没写了。一些琐事耽误,然后另一方面就是在写前端。因为我不是学前端出身,所以前端相对比较弱,一下子我也搞的不是很全面,最主要的是没法讲的很细致,前端这东西吧,都说简单,但是想做的很好看那还是需要一些深入学习的。上一篇的文章是邮箱发送,意在做注册的时候发送验证码。现在页面基本完成了,毕竟登录