火山引擎 A/B 测试的思考与实践

314次阅读  |  发布于3年以前

本文整理自火山引擎开发者社区 Meetup 第四期同名演讲,主要为大家介绍了为什么要做 A/B 测试、火山引擎 A/B 测试系统架构及最佳实践。

为什么要做 A/B 测试

首先我们看一个案例。字节跳动有一款中视频产品叫西瓜视频,最早它叫做头条视频。为了提升产品的品牌辨识度,团队想给它起个更好的名字。经过一些内部调研和头脑风暴,征集到了西瓜视频、奇妙视频、筷子视频、阳光视频 4 个名字,于是团队就针对一共 5 个 APP 名称进行了 A/B 实验。这个实验中唯一改变的是应用市场里该产品的名称和对应的 logo,实验目的是为了验证哪一个应用名称能更好地提升“头条视频” APP 在应用商店的点击率。最后西瓜视频和奇妙视频的点击率位列前二,但差距不显著,结合用户调性等因素的综合考量后,最终决定头条视频正式更名为西瓜视频。

通过这个案例可以看到,A/B 测试可以帮助业务做最终决策。结合案例的直观感受,我们可以这样来定义 A/B 测试:在同一时间对目标受众做科学抽样、分组测试以评估效果。

以上图图示为例,假设我们有 100 万用户要进行 A/B 测试:

以上就是我们对 A/B 测试的定义。目前,A/B 测试已被 Google、Facebook、亚马逊等大型互联网公司广泛采用;字节跳动更是在 2012 年成立之初便开始使用 A/B 测试,公司内部一直流传一句话:一切皆可 A/B 测试。A/B 测试在字节跳动已是非常基础的设施和文化,目前,字节跳动累计已有 80W+ 的 A/B 实验,日新增实验 1500+,同时运行试验 1W+,服务 500+ 业务线。

那我们为什么要做 A/B 测试呢?我总结有 3 点原因:

A/B 测试系统实现

了解了我们为什么要做 A/B 测试,下面我们来看一下火山引擎的 A/B 测试系统是如何实现的。

上图是火山引擎 A/B 测试系统的架构示意图,整体架构分为几层:

下面介绍几个实验流程的实现。

客户端实验参数传递及生效过程

客户端实验的流程如上图所示:

服务端实验参数传递及生效过程

服务端的实验和客户端类似:

统计分析实践

在统计分析中,我们总结了一些有用的实践经验:

这里也跟大家分享一些 A/B 实验设计背后的思考:

字节跳动 A/B 测试最佳实践

在字节跳动,A/B 测试已经是一种企业文化,大家都认可其价值,达成共识才能一起探讨。A/B 测试跟其他环节是紧密相关的。我们在收集和分析数据之后会得到一些洞察,基于这些洞察可以知道有些环节是比较薄弱的,可进行提升,然后就可以提出假设,设计 A/B 实验,完成实验之后评估效果。有可能实验没有达到预期效果,可以对实验进行迭代继续收集数据,这样就形成了以 A/B 测试为核心的业务增长闭环。

下面为大家介绍如何完整进行一次 A/B 实验。

如何产生好的实验想法

关于如何产生好的实验想法,我们可以从定量分析和定性分析几个角度来看。前面提到的构建完善的指标体系就是定量分析,这里不再赘述。在收集到指标数据以后,对于指标发生的异动进行现象分析,针对已存在问题(非异动),则可以进行新的产品策略或者运营策略迭代执行。

定性分析可以分为三个方面:

如何建立一个有效的实验假设

我们需要针对一个用户群体做出改变,然后产生一定的影响。但是这个假设不是无脑定的,要有逻辑性是合理的,最终能通过指标来评估变化的影响。针对这几个要素,我们总结出了设计 A/B 实验的 PICOT 原则,即 Population、Intervention、Comparison、Outcome、Time,明确对什么样的用户做出了什么样的改变,然后进行分组比较,最终需要设计衡量结果的指标,并决策实验要进行多长时间。

A/B 测试效果评估

看哪些数据

上图是一份 A/B 测试实验报告,可以看到指标在实验版本里是绝对值,还有变化值以及置信区间。置信区间是指假设策略全量上线,你有 95% 的把握会看到真实的指标收益在 [,] 这个范围内。置信区间越窄且不包含 0,可信度就越高。从「查看图表」进入选择差异值可以观察累计 diff 趋势图,如果呈现置信区间逐渐变窄的现象,说明随着样本量越来越大,我们对评估结果的信心就越来越强。

指标变化是显著的吗

A/B 实验的结果有以下几种:

接下来我们可以再看两个案例。

哪个首页新 UI 版本更受欢迎

今日头条 UI 整体风格偏大龄被诟病已久,不利于年轻和女性用户泛化,历史上几次红头改灰头实验都对大盘数据显著负向。因此团队设计了 A/B 实验,目标是在可接受的负向范围内,改一版用户评价更好的 UI。通过控制变量法,对以下变量分别开展数次 A/B 实验:

综合来看,效果最好的 UI 版本如图 2 所示,全量上线。

新 UI 上线后,Stay duration 显著负向从-0.38% 降至 -0.24%,图文类时长显著 +1.66%,搜索渗透显著 +1.47%,高频用户(占 71%)已逐渐适应新 UI。

选择更优的视频上滑引导产品形态

某款短视频在刚面世时,很多用户都不知道上滑的玩法,因此就设计实验验证如何能更好地引导用户上滑。实验目标定为优化后提升新用户留存,上滑操作渗透率提升 1%,错误操作渗透率下降 1%。定向受众为新用户,面向 10% 的线上流量进行为期 1 个月的实验。

我们做了两轮实验,第一轮实验结果并不符合预期,上滑操作渗透率下降 1% 且显著,错误操作渗透率提升 1.5%,不符合预期。新用户留存未见显著上升。但在不符合预期的情况下,还是能做一些分析来发现原因。因此经过改进我们做了第二轮实验,结果上滑操作渗透率上升 1.5% 且显著,新用户 7 日内留存提升 1%-1.8%,且指标结果呈显著,符合预期。

上面的例子就说明了我们可以把 A/B 测试当成一个理解用户的工具。

展望

最后想跟大家一起展望一下 A/B 测试行业未来的情况。从行业前景来看:

从技术趋势上来看,有这样几个发展方向:

Q&A

Q:A/B 测试对用户体量有没有基本限制?小用户量在进行 A/B 测试时有什么要注意的吗?

A:A/B 测试方法本身对用户量没有限制,但是如果实验样本太少,就很难看到显著的结果,收益比较小。

Q:火山引擎 A/B 测试和算法等数据科学有哪些结合的尝试和实践?

A:我们内部在做的一些事情可以简单介绍一下:比如基于多臂老虎机的智能实验,已经在开始应用一些算法。此外我们也在探索参数搜索的实验,提升搜索参数的速度,让 A/B 测试更智能化。

Q:A/B 实验一般要测试多才可以看到结果?

A:严格意义上,开多久是和实验能带来的影响有关系的,以我们的经验值来看,一般是要覆盖一个完整的用户生命周期。我们一般是以周为单位,实验至少开启 1-2 周。

Q:A/B 测试在实验结果上有没有自动归因的能力,帮用户直接定位到是什么原因引起实验结果好或者差的?

A:前面提到的一些智能化探索会对自动归因有帮助,但是自动归因还有一个很重要的点是,A/B 测试实验数据背后的原因可能需要很多业务知识的输入或者很有力的指标建设才能推断出来。

Q:如此多的实验,如何保证实验的正交?

A:我们通过大量的模拟实验,以及对系统监控的自检来保证正交,一旦发现数据超过了阈值就会及时进行调整。

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8