如何做一次完美的 ABTest?

avatar
vivo互联网技术 @vivo互联网

本文首发于 vivo互联网技术 微信公众号
链接: mp.weixin.qq.com/s/mO5MdwG7a…
作者:DuZhimin

越来越多的公司都在尝试 ABTest,要么是自己搭建系统,要么依赖于第三方的系统。那么在我们进行ABTest的时候,必备的基础知识有哪些?该如何一步一步的进行AB实验呢?本文将根据 AB 实验的流程带领大家一窥究竟。

一、引言

在互联网公司的业务发展过程中,用户增长是永恒的主题,因为没有增长也就没有发展,所以在业务发展的早期产品迭代速度往往是越快越好,总之一句话:“怎么快怎么来”。

而当业务发展到一定阶段后,野蛮生长的红利逐渐消退,用户增长空间在可见策略下变得不那么明显的情况下,如何合理地规划产品迭代策略就显得尤为重要了,而具体如何判断产品策略是否有效,往往就需要数据说话,其结果决定了该产品或策略的生命力以及与之配套的各类资源的调配,毕竟我们都不会将资源浪费在无效的产品和策略上。

那么通过什么样的工具或手段才能确保数据驱动策略的有效落地和实施呢?很多公司都是通过ABTest及建设与之相适配的实验基础设施平台来实现这样的目标。

2019年我们搭建了vivo的ABTest实验平台(霍金实验平台),到目前为止台累计接入业务方14个业务方进行了40个实验,在与业务方沟通过程中发现我们对ABTest的理解还不够,所以在这里我们一起学习一下相关的知识点,加深对ABTest的理解。

ABTest通常是比较产品的某一个变量在不同的版本里面设置不同的值带来的作用以及影响(比如一个页面用红色的按钮、另一个用蓝色的按钮),其中版本A是当前正在使用的版本,而版本B是改进版。在进行实验时一般是比较实验组和对照组在某些指标上是否存在差异,当然更多时候是看实验组相比对照组某个指标表现是否更好。这样的对比在统计学上叫做两样本假设检验,即实验组和对照组为两样本,假设检验的原假设H0:实验组和对照组无显著差异;备择假设H1:实验组和对照组存在显著差异。

更多时候我们关注的比例类的数值,如点击率、转化率、留存率等。这类比例类数值的特点是,对于某一个用户(样本中的每一个样本点)其结果只有两种,“成功”或“未成功”;对于整体来说,其数值为结果是“成功”的用户数所占比例。如转化率,对于某个用户只有成功转化或未成功转化。比例类数值的假设检验在统计学中叫做两样本比例假设检验。

下面我们以账号设备登录率实验来进行讲解。

二、实验前准备

1、做实验之前,我们先来回答下面几个问题:

1.1、你进行实验是想证明什么?

答:我想通过改变设备登录按钮的颜色来提高账号的设备登录率

1.2、你的对照组和实验组将是什么样子?

答:对照组就是目前的样子,请看下图,登录的按钮是蓝色的背景,实验组我想把登录的按钮背景改成橙色,从而看看设备登录率是否有提升。

【完美第一步:确定实验组和对照组】

1.3、如何避免混杂因素?

(混杂因素就是研究对象的个体差异,它们不是你试图进行比较的因素,但却最终导致分析结果的敏感度变差,比如不同城市的人,不同年龄段的人,性别……,进行实验的时候要尽量避免混杂因素对结果的影响)

答:你这里问的就是我们在做实验的时候,如何确定对照组和实验组的样本吧,就是要使实验组和对照组的样本个体差异尽量相同。如何分配每个实验方案的用户霍金实验平台已经帮我们做了,我了解到实验平台可以支持很多种划分用户的策略(唯一标识符哈希,指定特定用户,根据用户标签……),我们准备采用唯一标识符哈希的策略,它是从请求的用户中随机选择来避免混杂因素的极好办法:因为可能成为混杂因素的那些因素最终在对照组和实验组中具有同票同权。

下图是实验平台支持的分流策略:

【完美第二步:排除混杂因素】

2、样本量

做A/B实验需要多少样本?这是我们在做实验的时候都必须要回答的问题。(其实对于互联网的应用来说,流量都非常大,样本量很少是实验中需要考虑的因素,不过这里我们还是要讲一讲,因为还涉及到一些其他的概念,我们也需要了解了解)

2.1、为何要计算样本量?

理论上,样本量越多越好:

  • 从直观上看,当样本数量很少的时候,实验容易被新的样本点带偏,造成了实验结果不稳定,难以得出确信的结论。相反的,样本数量变多,实验则有了更多的“证据”,实验的“可靠性”也就越强。

在现实操作中,样本量应该越少越好,这是因为:

  1. 流量有限:大公司因为用户数量足够多,不用过于精打细算,同时跑几十个甚至上百个实验也没问题。但小公司一共就那么点流量,还要开发这么多新产品。在保证不同实验的样本不重叠的情况下,产品开发的速度会大大降低。

  2. 试错成本大:假设我们拿50%用的户来跑实验,但不幸的是,一周后结果表明实验组的总收入下降了20%。算下来,你的实验在一周内给整个公司带来了10%的损失。这个试错成本未免高了一些。

2.2、置信度和检测效能

要搞清这两个概念,我们了解一下A/B实验的基本知识。

首先,A/B测试的两个假设:

原假设(Null hypothesis, 也叫H0):我们希望通过实验结果推翻的假设。在我们的例子里面,原假设可以表述为“橙色按钮和蓝色按钮的设备登录率一样”。
备择假设(Alternative hypothesis, 也叫H1):我们希望通过实验结果验证的假设。在我们的例子里面,可以表述为“橙色按钮和蓝色按钮的设备登录率不一样”。

A/B测试的本质,就是通过实验数据做出判断:H0到底正不正确?那么就会出现下面四种情况:

1、设备登录率无区别(H0正确),实验分析结果却说有区别:

由于判断错了,我们把这类错误叫做第一类错误(Type I error),我们把第一类错误出现的概率用α表示。置信度 = 1-α 。第一类错误意味着新的产品对业务其实没有提升,我们却错误的认为有提升。这样的分析结果,不仅浪费了公司的资源,而且可能对产品进行了负向引导。

所以,在做A/B测试的时候,我们希望第一类错误越低越好。实际操作中,我们人为的对α定了一个上限,一般是5%。也就是说,在做实验的时候,我们都会保证第一类错误出现的概率永远不超过5%

2、设备登录率有区别(H1正确),实验分析结果却说没区别:

我们的判断又错了,这类错误叫做第二类错误(Type II error),用β表示。我们一般定义第二类错误β不超过20%

3、情况2和情况3是两种判断正确的场景,我们把做出这类正确判断的概率叫做检测效能

我们的做实验的根本目的是为了检测出橙色按钮和蓝色按钮的设备登录率的差别。如果检测效能低,证明即使新产品真的有效果,实验也不能检测出来。换句话说,我们的实验无卵用。

根据条件概率的定义,检测效能 = 1 -β = 80%。

对两类错误上限的选取(α是5%,β是20%)中我们可以了解到A/B实验的重要理念:宁肯砍掉4个好的产品,也不应该让1个不好的产品上线。

2.3、样本量的计算公式

大部分情况下,我们不需要详细了解样本量的计算公式,这里给出来公式,大家一起学习一下。

上面式子中p1我们称为基础值,是实验关注的关键指标现在的数值(对照组);p2我们称为目标值,是希望通过实验将其改善至的水平;α和β分别称为第一类错误概率和第二类错误概率,一般分别取0.05和0.2;Z为正态分布的分位数函数 。

因为 ABTest一般至少2组,所以实验所需样本量为2n。

2.4、这么复杂的公式我不会算,咋办?

如今霍金实验平台已经提供了计算样本量的小工具,只需要填入几个数字就可以了:

说明:

当前业务日常的比例(基线比率):比如当前我们进行的账号设备登录率实验,那么这个基线比率就是当前的设备登录率,比如15%。

期望提升的最小比率(最小可探测效应):在我们的实验中,我们选定期望提升的最小比率为5%。这意味着,如果粉色按钮真的提高了5%的设备登录率,我们希望实验能够有足够把握检测出这个差别。

实验组数:正常进行AB实验的时候,就是两个,一个对照组,一个实验组。

【完美第三步:计算最小样本量】

3、确定指标

在进行实验时一般是比较实验组和对照组在某些指标上是否存在差异,当然更多时候是看实验组相比对照组某个指标表现是否更好。所以我们在进行实验之前就应该先确定好实验中需要需要对比的指标,更多时候我们关注的比例类的指标,如点击率、转化率、留存率等。后续我们做实验的显著性分析的时候,也是分析的比例类指标。

【完美第四步:确定实验指标】

4、埋点

当我们确定了需要分析的具体指标之后,就需要我们进行埋点设计,把相关的用户行为收集起来,供后续的流程进行数据分析,从而得出实验结论。

对于 ABTest我们需要知道当前用户是处于对照组还是实验组,所以埋点中这些参数必须要有。

目前霍金实验平台通过服务端埋点技术,支持业务方实验的时候埋点数据不上报用户是处于实验组还是对照组的信息,但是建议还是业务方把用户处于的方案信息埋进去,这样数据更准确,分析的结果更可靠。

【完美第五步:收集实验数据】

三、实验中观察

1、观察样本量是否符合预期,比如实验组和对照组分流的流量是否均匀,正常情况下,分流的数据不会相差太大,如果相差太大,就要分析哪里出现了问题。

2、观察用户的行为埋点是否埋的正确,很多次实验之后,我们发现埋点埋错了。

四、实验后分析

1、当我们做过 ABTest之后,需要对数据进行分析来确定本次实验的效果,这就需要进行实验的显著性分析,看看实验的显著性差异,如果结果不显著,则不具备参考性。

2、显著性差异是一个统计学名词。它是统计学上对数据差异性的评价。在作结论时,通常情况下我们用 P>0.05 表示差异性不显著;0.01<P<0.05 表示差异性显著;P<0.01表示差异性极显著。

3、当数据之间具有了显著性差异,就说明参与比对的数据来自于具有差异的两个不同总体,这种差异可能因参与比对的数据是来自不同实验对象群体,比如把中年人和老年人相比,也可能来自于实验处理对实验对象造成了根本性状改变(正是我们AB实验期望的),因而实验的数据会有显著性差异。

4、下面给出比例类指标显著性计算公式,供大家参考(独立样本t检验):要计算p值,我们需要先计算t值,公式如下:


计算出t值后,根据t值和自由度n =N1 + N2 - 2 将 t 值转换成p值,
这里给出Excel的计算公式:p =Tdist(t,n,1)

5、这么复杂的显著性计算需要我们业务方来计算吗?

答:不需要,霍金实验平台已经支持实验指标的显著性计算


【完美第六步:指标显著性计算】

6、从3可知,显著性差异不一定就代表实验是有效的,可能是因为混杂因素导致的,这就需要做实验样本的进一步分析,确定是不是混杂因素的影响。

【完美第七步:确定显著性根本原因】

7、最终通过分析,给出本次实验是否有效,如果有效那么本次实验带给业务方的提升是多少的结论。

【完美第八步:给出实验结论】

8、听说霍金实验平台将会支持方案分流数据实时查看和指标数据实时查看 是吗?

答:是的,是的,应该不会太久。

五、总结

如何做一次完美的 ABTest?

1、确定对照组和实验组,最好是做单变量的实验,一次只改变一个变量。

2、分流时尽量排除混杂因素,一般情况下采用随机分流即可。

3、检查流量是否达到最小样本量要求,达不到要求则没法进行后续的分析,实验结果不可信。

4、确定本次实验的对比指标,就是如果方案之间存在差别需要通过什么来衡量?

5、准确收集用户行为数据,这就要求埋点必须正确。

6、分析指标的显著性,如果指标不显著则表示实验无效。

7、确定引起显著性的根本原因,排除混杂因素导致实验结果的显著性。

8、最终给出实验结论:有效 or 无效

更多内容敬请关注 vivo 互联网技术 微信公众号

注:转载文章请先与微信号:Labs2020 联系。