1. 首页
  2. 数据分析

【长文干货】AB测试:原理流程、实际案例及面试指南

 

00
写在前面

 

AB测试我们在工作当中,尤其是在很多的互联网大厂里面,经常是用来验证一个功能最终是否会被上线的重要手段,也是在数据分析面试当中经常会出现的一个考点,所以AB测试重要性就不言而喻了。但是很多同学一提到AB测试就会头皮发麻,感觉自己知道什么是AB测试,但是具体的统计学原理、样本量&试验周期计算、骤和效果验证却是一头雾水,也不知道在面试当中会怎么考。今天通过理论和实际案例的形式详细、系统地和大家啃一啃AB测试这块硬骨头。

 

本文有理论公式,也有实践案例,深入浅出,大神小白皆宜。

涉及到一些统计学的理论和公式,是为了辅助大家理解AB测试的原理,知其然知其所以然,有基础的同学可以好好研究!

小白说我看不懂理论公式,没关系!有理论公式的地方就有实际栗子,有栗子不怕你理解不了!

更任性的同学,我看到公式脑壳就疼,更不想手算,好吧,工具已经备好,直接拿去用!

面试的同学,想要了解AB测试的常见问题,文末已经安排!

目的只有一个,无论AB测试的各种疑问,这篇文章尽可能满足你的需求,安排!

 

640-10
01
AB测试原理简介

 

1、什么是AB测试?

AB测试其实来源于假设检验,我们现在有两个随机均匀的样本组A、B,对其中一个组A做出某种改动,实验结束后分析两组用户行为数据,通过显著性检验,判断这个改动对于我们所关注的核心指标是否有显著的影响。

640-14

在这个实验中,我们的假设检验如下:

原假设H0:这项改动不会对核心指标有显著的影响

备选假设H1:这项改动会对核心指标有显著影响

如果我们在做完实验之后,通过显著性检验发现P值足够小,我们则推翻原假设,证明这项改动会对我们所关注的核心指标产生显著影响,否则接受原假设,认为该改动未产生显著影响。如果用一句话来概括的话,AB测试其实就是随机均匀样本组的对照实验。这个就是AB测试的原理。

 

2、AB测试的一般流程

AB测试会涉及到产品、开发、数据部门,流程较长,环节较复杂,对于很多还没有真正工作,或者说没有切实接触过AB测试的同学来说,实施起来可能有一定的难度,但是一般来说主要有以下几个步骤:

640-12

1、一般在开始实验之前,我们首先需要和相关的产品或者项目经理确定这个实验所要验证的改动点是什么。

2、在确认改动点之后,数据分析师需要设计实验中所需要去观测的一些核心指标,比如点击率、转化率等。
3、确定完核心指标之后,下一步就是计算实验所需的最少样本流量,实验样本越大,我们的结果越可信,但是对我们用户的不良影响就越大。所以我们需要计算能够显著地证明我们的策略有效的最少样本量。
4、然后还要结合目前的日均活跃的用户量,计算实验持续的时间周期。
5、在计算完所需样本量之后,就要设计流量分割策略,根据实验需要对样本流量进行分流分层,保证样本的随机和均匀分布,避免出现辛普森悖论。
6、以上准备工作就绪,就需要和PM以及开发同学确认可以开始实验。一般在上线正式实验之前,会通过小流量去看一段时间的灰度实验。这个灰度实验的目的就是为了验证我们这个改动并不会造成什么特别极端的影响。
7、在灰度之后就会正式发版,等到实验周期结束,我们对实验的结果进行显著性检验。
以上就是AB测试中所采用的一套常规流程。

 

02
明确改动点和观测指标

 

1、明确改动点

实验开始之前,首先要和产品或者项目经理明确实验的变量是什么?我们要保证AB测试的“单一因素原则”,即每一个实验的评估的因素都是单一因素,一次实验不能糅合多个影响因素,否则会导致实验效果难以区分是哪个因素的影响。

 

2、明确观测指标

观测指标可以分为两种类型:

1、绝对值类指标。我们平常直接计算就能得到的单个指标,不需要多个指标计算得到。一般都是统计该指标在一段时间内的均值或者汇总值,比如DAU,平均停留时长等。这类指标一般较少作为AB测试的观测指标。

2、比率类指标。与绝对值类指标相对应,我们不能直接计算得到,而是通过多个指标计算得到。比如某页面的点击率,我们需要先计算页面的点击数和展现数,两者相除才能得到该指标。类似的,还有一些转化率、复购率等等。AB测试观测的大部分指标都是比率类指标。

为什么这里要区分不同类型的观测指标,因为在接下来的样本量计算中,这两类指标的样本量计算有所差别。

 

03
样本量、实验周期计算

 

1、AB测试样本量计算

A/B 测试样本量的选取基于大数定律和中心极限定理。在计算样本量之前,我们先大致了解一下大数定律和中心极限定理

1. 大数定律:当试验条件不变时,随机试验重复多次以后,随机事件的频率近似等于随机事件的概率。

2. 中心极限定理:对独立同分布且有相同期望和方差的n个随机变量,当样本量很大时,样本的均值近似服从标准正态分布N(0,1)。

说人话就是:只要样本量足够大,样本就能够代表整体的表现。这个足够大到底是多大呢?

每一个实验组所需的样本量计算公式如下:

640-13

在这个公式当中,

σ代表的是样本数据的标准差,衡量的是整体样本数据的波动性,可以计算样本的标准差计算得到。

而δ代表的是预期实验组和对照组两组数据的差值,比如说期望点击率从20%提升到25%,那么δ就是5%。

而α和β,也就是我们在统计学当中所经常提到的,犯第一类错误的概率和第二类错误的概率。

其中:

1、α为犯第一类错误的概率,把没有犯第一类错误的概率1-α称为置信水平。一般情况下,α取值为0.05。

2、β为犯第二类错误的概率,把统计功效定义为1-β,一般情况下,β取值0.2,则统计功效的取值为0.8。

当观测的指标为绝对值类型/比率型指标时,样本的标准差的计算公式有所差异,

当观测指标为绝对值类指标时:

640-11

当观测指标为比率类指标时:

640-15

其中PA、PB分别为对照组和实验组的观测数据,举个栗子,我们希望点击率从20%提升25%,那么PA=20%,PB=25%,δ=5%

 

如果上面的公式觉得不好理解,那我们就举个栗子计算一下!

栗子1-对于绝对值指标:
某商品详情页平均停留时长的标准差是20秒,优化了商品详情页后,预估至少有5秒的绝对提升,AB测试每个组需要的最少样本量:
σ=20,δ=5
每个组所需的最少样本量  = 8*20*20*2/5*5=256

 

栗子2-对于比率类指标:
某商品详情页点击率20%,优化了该功能后,预期点击率提升到25%,AB测试每个组需要的最少样本量:
对照组PA:20%,实验组PB:25%
每个组所需的最少样本量  = 8 * (20%*(1-20%)+25%*(1-25%))/ (25%- 20%)^2=1030
计算出单个实验组所需的样本量,若有多个实验组,乘以实验组的个数就可以得到最终的样本量。

 

 

公式虽然明白怎么算了,但是我还是不想手算怎么办?我们有现成的工具可以直接使用!

 

安利一个比较常见且好用的在线计算工具:Evans awesome AB Tools:https://www.evanmiller.org/ab-testing/sample-size.html,它的界面是这样的

640-16

其实工具都已经帮我们设计好了,关键就是我们需要理解在这个工具当中,他所提到的一些关键的指标对应的是我们刚才所说的哪个指标?
第一个需要我们确定的是baseline conversion rate,这个baseline conversion rate指的是我们在开始实验之前,对照组本身真实的表现情况,如果说我们在这个实验当中想要去观测的是点击率变化,那么baseline conversion rate就是原来的点击率是多少,对应的就是前面提到的PA
第二个需要我们确定的是minimum detectable effect,这个指的就是你的改动预期带来的提升,举之前的例子,我们希望通过优化,点击率从20%提升到25%,那么这个绝对(absolute)提升是5%(25%-20%),如果选择相对(relative)提升,就是30%(26%-20%)/20%=30%,这个对应的就是前面提到的δ
除了这两个参数之外,还有就是significance level,也就是我们所说的显著性水平,这个就对应前面的第一类错误的概率,也就是α,一般为5%。还有statistical power,也就是我们前面所说的统计功效,statistical power一般用1-β来表示,这里的话也就是80%,和之前保持一致。
Evans AB Tools这个工具不仅可以计算AB测试的样本量,AB测试结果的显著性分析验证也可以使用,卡方检验、T检验、方差分析等,应有尽有,从样本量计算到结果验证,一个工具就搞定了!我们后面的结果验证就是用这个工具进行的,这里就不再展开了。

640-17

 

 
04
AB测试流量分割

 

 

1、辛普森悖论

为什么要进行合理的流量分割
再举个栗子!

我们对APP上一个按钮进行了颜色调整,需要比较一下颜色调整前后用户点击率是否提高?经过一段时间的试验,我们得到了两组试验的数据,计算出了两组试验的点击率,如下:

640-18

数据中我们发现,单独看这一试验,无论是女性人群和男性人群,数据表现都是A组中较好,但是,总计却是B组效果较好,细分的结果和总计的结果相悖,这就是我们常说的辛普森悖论

 

640

 

那么,问题出在哪里呢?我们发现这个AB测试的两个组的性别选取有问题,性别特征并没有均衡的分布在两个组中。很明显,A组里女性用户只有男性用户的1/3,而B组里女性用户是男性用户的3倍。

所以,这一组不成功的AB测试,主要是因为流量分割忽略了一个重要的“隐藏因素”,也就是性别比例。性别上的差异在A、B组中也成为了影响结果的一个变量,从而导致最终的结果相悖。正确的试验实施方案里,除被测试的变量外,其他可能影响结果的变量的比例都应该保持一致,这就需要对流量进行均匀合理的分割。

 

2、分流分层原理

流量的分割常用的有分流和分层。

 

1)分流

用户分流是指按照地域、性别、年龄等把用户均匀地分为几个组,1个用户只能出现在1个组中。但是实际情况中,往往会同时上线多个实验,拿广告来说,有针对样式形态的实验,有针对广告位置策略的实验,有针对预估模型的实验。如果只是按照这种分流模式来,在每组实验放量10%的情况下,整体的流量只能同时开展10个实验。这个实验的效率是非常低的。为了解决这个问题,提出了用户分层、流量复用的方法。

 

2)分层

同一份流量可以分布在多个实验层,也就是说同一批用户可以出现在不同的实验层,前提是各个实验层之间无业务关联,保证这一批用户都均匀地分布到所有的实验层里,达到用户“正交”的效果就可以。所谓的正交分层,其实可以理解为互不影响的流量分层,从而实验流量复用的效果。

 

3)分流分层模型

640-19

对以上模型进行解释:

  • 分流:组1、组2通过分流的方式分为2组流量,此时组1和组2是互斥的,即组1+组2=100%试验流量

  • 分层:流量流过组2中的B1层、B2层、B3层时,B1层、B2层、B3层的流量都是与组2的流量相等,相当于对组2的流量进行了复用,即B1层=B2层=B3层=组2

  • 扩展:流量流过组2中的B1层时,又把B1层分为了B1-1,B1-2,B1-3,此时B1-1,B1-2,B1-3之间又是互斥的,即B1-1层+B1-2层+B1-3层=B1层

根据以上规则我们可以不断地在此模型中增加组、层,并且可以互相嵌套。这要与实际的业务相匹配,拆分过多的结构可能会把简单的业务复杂化,拆分过少的结构又可能不满足实际业务。

 

4)使用场景

对于上图所示的流量分流分层模型,如果用于某些对所有功能都有影响的运营活动,比如春节的红包运营,由于活动是整体的,UI,策略,内容等模块都会配合修改,因此要评估春节红包活动的时候就会使用组1来评估。而剩余的组2的流量,则会划分为多个层,比如UI层,推荐策略层,内容模块层等,这几层基本上是没有任何的业务关联度的,即使共用相同的流量(流量正交)也不会对实际的业务造成结果。

 

 

05
AB测试效果验证

 

1、测试效果显著性检验

AB测试后,我们需要对AB测试的结果进行显著性检验,从而判断改动是否对我们的核心指标产生了显著差异。

举个栗子,仍以点击率为例,我们运行AB测试一周,分别对1000个样本进行了测试。对照组A的点击率为7.5%,B的点击率为9%,如下表:

640-20

 

我们能否给出结论说B比A好,改动是有效果的呢?有多大的可能是因为一些随机的因素导致这样的差异呢?

假设检验可以有效地帮助我们回答这个问题。首先假设改动没有效果,即B的效果不会比A好,然后试图通过样本测试的结果来验证这个假设,如果样本足以推翻假设,那么我们就可以认为改动有效果,否则我们需要继续实验或者干脆就接受这个假设,把B方案扔掉了事。

由于我们实验的样本一般都较大(大于30),所以我们使用Z检验来检验差异显著性(样本量较小时,我们一般用T检验,对此有疑问感兴趣的同学可以查阅相关资料)。

 

2、Z检验

 

1)样本统计量Z值

Z检验是一种适用于大样本(样本容量大于30)的两组平均数之间差异显著性检验的方法。它是通过计算两组平均数之间差的Z值与理论Z值相比较,看是否大于规定的理论Z值,从而判定两组平均数的差异是否显著。

其一般步骤如下:

第一步:建立原假设 H0:μ1 = μ2 ,即先假定两组平均数之间没有显著差异,

第二步:计算统计量Z值,对于不同类型的问题选用不同的统计量计算方法,通过检验两组样本平均数的差异性,判断它们各自代表的总体的差异是否显著。

与计算样本量相似,当观测的指标为绝对值类型/比率型指标时,Z值的计算公式有所差异。

 

当观测指标为绝对值类指标时:

640-21

 

当观测指标为比率类指标时:

640-22

 

计算公式类似,只是对于绝对值/比率型指标,方差的计算方式有些差异而已。

 

2)理论Z值

样本的统计量Z值可以通过以上的公式进行计算,理论Z值可以通过查询Z值表获得,更方便的一种方法,我们可以通过Excel的NORM.S.INV函数直接计算,如下是我们常用置信水平90%、95%、99%下的理论Z值。

640-23

3)样本统计量Z值vs理论Z值比较

假设通过以上公式计算的统计量Z值 = 1.22,小于我们设定95%置信水平对应理论Z值1.96,也就是说我们暂无法判断这种差异性是显著的,所以上述样本不足以得出B比A好的结论。

 

4)继续实验

正如之前所说,由于无法得出B比A好的结论,这种情况下,我们需要做更多实验。

于是,我们又做了一周,A和B分别得到了3000个样本,对照组和实验组转化率不变。这个时候我们有信心认为B比A好了吗?

640-24

仍然是套用上述公式求统计量Z值= 2.66。超出了我们设定的95%置信水平对应理论Z值1.96,这个时候我们有了足够的信心来相信B比A好。到此为止,实验结束。

 

5)用工具直接验证

当然,如果觉得上述的显著性检验还是太麻烦,还记得我们之前安利的Evans AB Tools,我们可以用这个工具方便地进行检验!

使用方法也很简单,分别输入对照组和实验组的比率类指标对应的分子、分母和置信水平Confidence level(一般95%)。

在第一周的实验中,对照组A对应的分子、分母为75/1000(转化率为7.5%),实验组B的对应的分子、分母为90/1000(转化率为9%),设置置信水平Confidence level为95%,得出的结果如下:两组无显著性差异!

 

640-25

 

又进行了一周实验,对照组A对应的分子、分母为225/3000(转化率为7.5%),实验组B的对应的分子、分母为270/3000(转化率为9%),置信水平Confidence level仍为95%得出结论:两组有显著差异,且实验组B效果更好!

640-26

 

不用任何公式,也能方便地进行AB测试结果的显著性验证,赶紧收藏吧!

 

 

06
AB测试常见面试题

 

还有一部分同学在准备数据分析的面试,不知道数据分析面试中AB测试会考哪些?希望能给一些建议,今天,它来了!

 

1、第一类错误vs第二类错误

面试官问:你怎么理解AB测试中的第一、二类错误?
第一类错误和第二类错误,AB测试中最常提到的两个概念,前面也提到过,也是统计学中比较容易搞混的两个概念。不好理解的话,还是举个栗子,在互联网产品案例中,第一类错误代表的是一个功能的改动,本来不能给我们带来任何收益,但是我们却误认为它能够给我们带来收益。同样,第二类错误代表的是本来是一个好的产品,它本来可以给我们带来收益,但是由于我们统计的误差,导致我们误认为它并不能给我们带来收益。
640-27
往往在实际的工作中,第一类错误是我们更加不能接受的。换句更直白的话说,就是我们宁愿砍掉几个好的产品,也绝对不能让一个坏的产品上线。因为通常是一个坏的产品上线会给用户的体验带来极大的不好的影响,而这个不好的影响会非常大程度的影响到我们的日活以及留存。你要知道在现实生活中,我们把留存或者把日活提升一个百分点都已经是一个非常了不起的优化了,但是通常要实现1%的留存率。人都需要花费很长时间,也很大精力,但是你如果想要留存下降一个百分点的话,可能就是一瞬间的事情。所以第一类错误通常是我们在实际工作当中所更加不能接受的。

2、统计显著=实际显著?

面试官问:如果你发现AB测试的结果在统计上来说是显著,但是在实际中却不显著,这是为什么?
这个可能的原因是我们在AB测试当中所选取的样本量过大,导致和总体数据量差异很小,这样的话即使我们发现一个细微的差别,它在统计上来说是显著的,在实际的案例当中可能会变得不显著了。举个栗子,对应到我们的互联网产品实践当中,我们做了一个改动,APP的启动时间的优化了0.001秒,这个数字可能在统计学上对应的P值很小,也就是说统计学上是显著的,但是在实际中用户0.01秒的差异是感知不出来的。那么这样一个显著的统计差别,其实对我们来说是没有太大的实际意义的。所以统计学上的显著并不意味着实际效果的显著。
 
3、AB测试效果统计上不显著?
面试官问:如果你发现你在AB测试当中所选取的指标在统计上来说都是不显著的,你该怎么去判断这个实验的收益
对于这种情况,我们所选取的一种通用的方式是将这个指标去拆分成每一天去观察。如果指标的变化曲线每一天实验组都高于对照组,即使他在统计上来说是不显著的,我们也认为在这样一个观测周期内,实验组的关键指标表现是优于对照组的,那么结合这样一个观测,我们最终也可以得出这个优化可以上线的结论。
 
4、实验组优于对照组就能上线?
面试官问:如果你在AB测试中发现实验组核心指标明显优于对照组,那这个优化就一定能够上线吗
不一定。举个例子,比如说有的时候我们想要提升产品的视觉展现效果。但是这种优化可能是以用户等待内容展现的时间作为代价来进行提升的。所以一个方面的优化可能会导致另一个方面的劣化。在做这个优化的时候,可能会对其他部门产生一些负向的影响,进而导致公司收入的下降。所以我们在进行AB测试的时候,必须要综合评估所有方面的一些指标变动,同时对于收益和损失来做一个评估,才能确认这个优化可以最终上线。
 
5、AB测试是必须的么?
面试官问:AB测试成本很高,每个调整都需要AB测试么?
但是比如说面试官问到每一个关于我们现在想要上线一个小改动,或者说要上线一个小调整,你会如何去验证这个调整的收益?你都用AB测试去进行回答的话,他可能会反问,AB测试是需要成本的,你不觉得每一次我们如果都需要通过一个AB测试去验证的话,成本过高吗?对于这种情况,你可以说如果只是验证一个小按钮或者一个小改动,我们可以在界面上去设置一个开关,用户可以通过开关的形式自行决定我采用哪一种方式。那么我们最后就可以通过这个开关的相关指标去判断用户对于哪一种形式又有更大的倾向性。或者有的时候我们可以去做一些用户调研,比如说通过访谈或者说是设计问卷的形式,去收集一些用户的反馈。或者他们关于这些小变动的体验,所以并不是绝对的。
 
6、AB测试的其他变式考法
最后在面试当中可能会存在一些AB测试的变式考法,所谓的变式考法,就是说面试官并不会直截了当的来告诉你说下面我要考一下你AB测试的掌握怎么样?一般情况下,当你的简历当中出现的比较多量化结果的时候,面试官可能会问你,你会如何去验证这个数字的显著性?再比如说,当你在简历当中明确提到你所参与的某个项目,你的分析结果带来了一些显著的收益,那么面试官可能会问你,你会是如何验证这些收益?当出现以上信号的时候,我们就要知道面试官可能想考察你关于AB测试的知识了。有的时候你可能感觉面试官在故意刁难你,问你的明明是两个比较矛盾的问题,但是在这种情况下,其实面试官想考察的是你的一个思维的广度,在不同情况下,是不是知道能够学习更多的方式或者指标去分析这个问题。

640-28

以上就是数据分析思维—AB测试部分的内容,整个据分析思维系列的12篇文章已经更新完毕更多数据分析思维的文章请翻看历史文章,如果觉得不错,也欢迎分享、点赞和点在看哈~

 

数据分析思维系列:

 

【数据分析思维】RFM用户分层

【数据分析思维】漏斗分析

【数据分析思维】细分拆解

【数据分析思维】对比拆解

【数据分析思维】留存分析

【数据分析思维】相关性分析

【数据分析思维】预测分析

【数据分析思维】多因素影响下如何归因?

【数据分析思维】能落地的用户画像长啥样

【数据分析思维】SWOT PEST 分析法

【数据分析思维】波士顿矩阵

 

参考:

[【长文干货】AB测试:原理流程、实际案例及面试指南](https://mp.weixin.qq.com/s?__biz=MzI3NzQ5MzM5Mw==&mid=2247486853&idx=1&sn=5514cb3c314e0bc5f4ef9b43fa1f78b5&chksm=eb642e7bdc13a76d57122a5564abeb7f4335d20042d78ded79bcab3b1591ffdb9e5659caa256&scene=178&cur_album_id=1769229321178529795#rd )

 

 

发表评论

登录后才能评论