分享实录 | 一文了解A/B测试与业务增长的底层逻辑

技术

本文是火山引擎开发者社区Meetup分享-《 ab测试驱动业务增长》的实录整理,第一篇介绍A/B测试与火山引擎A/B测试产品以及A/B实验背后的逻辑,第二篇介绍如何正确开启一个实验。

picture.image

文 | Yang 来自 字节跳动数据平台团队

A/B实验的基本思想就是:我们在线上流量中取出一小部分(较低风险),完全随机地分给原策略A和新策略B(排除干扰),再结合一定的统计方法,得到对于两种策略相对效果的准确估计(量化结果)。

这一套基于小样本的实验方法同时满足了低风险,抗干扰和量化结果的要求,因此不论在互联网产品研发还是科学研究中,都被广泛使用。

A/B Test

为什么我们需要A/B测试?

假设没有 A/B实验,我们上线了一个新的feature或者上线了一个新的策略之后,其实是没有办法去评估的,没有办法有信心的告诉大家,我的指标增长是因为我上线的功能带来的。它有可能受周期波动的影响,也有可能是受同期上线的其他功能的影响,有可能只是一个正常的增长而已。因此我们就需要通过A/B实验来控制变量,如果说你在A/B实验里对时间人群和其他的环境全部都保持一样,只控制了一个单一变量,就是上线的新功能和没有上线新功能,其实数据的一个增长就能非常明显解答你这个feature到底对指标的影响是多大。

A/B实验能帮我们解决什么问题?

picture.image

  1. 在日常工作中,比如产品设计,可能经常会出现“到底是谁的方案更好”的争论。在没有数据作证下空口说服对方其实是很难且风险很高的一件事情。而A/B实验就可以帮我们解决这个问题,能够有效地去消除分歧。不用battle,直接上A/B实验,看结果做决策。
  2. 互联网公司日常的工作,不管是算法优化,产品迭代,其实本质上都属于创新和试错的过程,而 A/B实验能够检验我们的想法,帮助我们加速正向创新。
  3. 通过A/B实验,能够快速准确定位一些产品中的问题,特别有时会存在一起反直觉的错误,或者说一个非常隐性的问题,可以通过数据来揭示这些仅通过经验很难找到的问题。
  4. 通过 A/B实验&feature flag,它是能够降低我们产品发布的风险。我们可以在对不影响全部用户的情况下,选取线上一部分用户,先在一个小范围内去进行试错。对那如果他效果不好,其实对产品影响面是非常有限的。如果效果很好,那我们可以逐步再把量给扩大,实现低风险以及平稳的上线,其实这就是所谓的“灰度发布”的概念。

A/B Test

火山引擎A/B测试

火山引擎A/B测试经历了字节跳动内部多年的打磨,于2021年正式对外开放。在实验自动分流、流量正交互斥、指标设计和解读、置信度统计等方面,火山引擎A/B测试都积累了非常成熟的技术基础,使用效果也得到了客户的认可。

火山引擎A/B测试提供从实验设计、实验创建、指标计算、统计分析到最终评估上线等贯穿整个实验生命周期的服务,助力业务在快速迭代的路上,大胆假设、小心求证。在先进的底层算法加持下,火山引擎A/B测试通过科学分流和智能统计引擎等功能,保障实验结果可靠有效。

目前,火山引擎A/B测试已覆盖推荐、广告、搜索、UI、产品功能等多种业务场景,在各种特殊场景下提供特殊的实验解决方案,让A/B实验更易用。

picture.image

火山引擎 A/B 测试架构图

上图是火山引擎 A/B 测试架构图,火山引擎 A/B 测试是一个一站式的多站全场景实验平台。

SDK层

最底层支持了各种各样的服务端和客户端 SDK 去给大家进行一个平台的接入。

分流服务

分流服务是这款产品的核心能力。我们的底层算法是可以对用户群体去进行均匀随机的分流,保证各实验组样本的一个同质性,实验结果也是更加可靠的。

特型实验

火山引擎 A/B 测试是可以支持各场景下的不同的实验需求,然后也是经过字节跳动内部长时间的积累,为大家包装出了在适用于各种特殊场景下的一些特型的实验模板。

  • 编程实验:这个也是最全能最万能的一种实验类型不管是算法还是产品上的一些 UI 的实验类型,都是可以通过编程实验来实现的。
  • 可视化实验:可视化实验其实就是通过一些可视化拖拽的方式去改变产品或者说页面布局上的一些前端元素,然后来完成这个实验组和对照组的配置。所见即所得——这是新手非常友好的一种实验形式,然后也可以降低开发成本。
  • 多链接实验:主要是用户会访问统一的落地页 URL ,然后会分流至不同的 URL 落地页。这块是适用于一些落地页活动运营的一些场景,比如说去测试不同的落地页的一些转化率或者说是其他的一些效果数据等。
  • 推送实验:在活动推送中,大家可以配置多个文案落地页,去开启实验,去查看活动推送效果。推送实验是支持 mab 智能调优的文案赛马功能,可以帮助大家尽快地拿到最大的收益。
  • 广告实验:广告实验包括 拆分对比实验 ,主要是对比不同广告素材去进行 A/B 实验,然后提高广告主投放的一些 ROI 然后去指导后续广告的一些投放动作。其次还有 增效度量实验 ,就是我们的 CIA 实验,通过将广告是否曝光作为变量,然后结合多媒体广告投放的能力度量广告曝光提升转化量。
  • 灰度发布:架构图右边是feature flag 也就是灰度发布能力。除了灰度发布之外,我们还有feature的管理以及自定义灰度规则等能力。
  • 统计策略:最左上角看的话,其实就是字节跳动内部A/B测试同款的成熟统计策略。这块的设计依照于鉴定统计学假设检验的方法论,包括一些 p-value MD 置信区间等这种统计学的数据,进行实验数据评估。除此之外,也有以贝叶斯统计为原理的实验引擎。在数据分析方面提供了包括漏斗分析、热力图分析、群体洞察等这些更加细致的分析手段,帮助大家更好地洞察实验结果。

那接下来的话我们来看一下 A/B 测试背后的一些理论。

A/B Test

A/B测试背后的理论

一个实验的背后其实是包括了几个核心的部分,第一个就是一直在提到的用户分流,然后第二块的话是数据,然后第三部分其实就是实验报告的产出。本文重点介绍分流原理和火山引擎A/B测试的核心能力之一——用户分流。

分流原理

当我们说用户分流其实也是在说开启一个 A/B 实验,用户分流决定了用户到底是会被哪一些实验命中,然后到底应该进入哪个实验组?

这其实就是从整体的流量中去抽取部分流量,然后把抽取的流量进行随机的分配,分配到 A 组跟 B 组之中。然后这块也会尽量地去减少抽样误差。

其实我们的分流服务就像一个无情的分组机器。大家可以看一下下面这张图。

picture.image

这块是我们分流服务区在的一个位置,它其实本质上就是一个快速输入和一个 respond 的输出。

picture.image

它第一个作用就是可以保证用户随机均匀地进入到不同组,并且它是一个按规矩办事,你的实验参数决定了你到底进不进实验以及进哪组。

第二,我们会保证在均匀进组的同时,为了支持业务方开更多的实验,刚刚提到的这个实验量级是非常大的,我们是需要去进行流量的复用的,因为线上的流量是有限的。这块我们采用了 Overlapping 的实验框架,也就是实验层的设计。实验层技术其实就是为了让多个实验可以变形,相互不干扰,并且都可以获得足够的流量去研发的这样的一个流量分层技术。

简而言之,我们会将整体的用户流量去复制无数遍,然后形成无数个流量层,从而可以让我们的整体流量能被复用无数次。

这里其实是有两个原则,第一个是同层之间、同层之内的流量它是一个互斥的关系。比如说我流量层 3 的实验3跟实验4,它就是在同一层上,然后它们这两个实验的流量之间是互斥的,那层跟层之间是正交的关系。

那怎么样理解正交呢?那其实可以看一下这个例子。

picture.image

这里有两个实验层,我们开了两个实验,实验 A 是处于实验层1,实验 B 是处于实验层2。

那这时候我会把这个实验 A 的流量去均匀的打散在我们的实验 B 的对照组跟实验组中。那这时候如果发现实验组 B1 它的指标上涨了,那其实是跟 A1 没有关系的,因为已经被均匀打散了。

总结,我们会建议相关的实验都开在同一层上,因为这个流量是互斥的。如果你的这个实验是没有太多的相互干扰的话,其实是可以复用流量,开在不同层上的。

在下篇中我们会重点介绍如何正确开启一个A/B实验,需要关注哪些细节。

picture.image

点击 阅读原文

了解

火山引 擎A/B测试

产品介绍

火山引擎A/B测试

A/B测试,摆脱猜测,用科学的实验衡量决策收益,打造更好的产品,让业务的每一步都通往增长。 后台回复数字“8”了解产品

- End -

欢迎关注字节跳动数据平台官方公众号

32
0
0
0
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论