附上学习链接:
如何做一次完美的 ABTest?
引言
ABTest通常是比较产品的某一个变量在不同的版本里面设置不同的值带来的作用以及影响(比如一个页面用红色的按钮、另一个用蓝色的按钮),其中版本A是当前正在使用的版本,而版本B是改进版。在进行实验时一般是比较实验组和对照组在某些指标上是否存在差异,当然更多时候是看实验组相比对照组某个指标表现是否更好。
更多时候我们关注的比例类的数值,如点击率、转化率、留存率等。这类比例类数值的特点是,对于某一个用户(样本中的每一个样本点)其结果只有两种,“成功”或“未成功”;对于整体来说,其数值为结果是“成功”的用户数所占比例。如转化率,对于某个用户只有成功转化或未成功转化。
- 确定实验组和对照组
- 排除混杂因素
- 计算最小样本量
- 确定实验指标
- 收集实验数据
- 指标显著性计算
- 确定显著性根本原因
- 给出实验结论
实验前准备
做实验之前,我们先来回答几个问题
1. 你进行实验是想证明什么?
eg.我想通过改变设备登录按钮的颜色来提高账号的设备登录率
2. 你的对照组和实验组将是什么样子?
eg.对照组就是目前的样子,请看下图,登录的按钮是蓝色的背景,实验组我想把登录的按钮背景改成橙色,从而看看设备登录率是否有提升。
3. 如何避免混杂因素?
混杂因素就是研究对象的个体差异,即对照实验的无关变量
eg.要使实验组和对照组的样本个体差异尽量相同,需要选择最优的划分用户的策略(如根据用户标签)。我们采用一种策略,将可能成为混杂因素的那些因素最终在对照组和实验组中具有同票同权。
样本量
做A/B实验需要多少样本?
为何要计算样本量?
理论上,样本量越多越好
在现实操作中,样本量应该越少越好,这是因为:
- 流量有限:需要考虑开发成本问题
- 试错成本大:假设拿50%的用户来跑实验,一旦实验组总收入下降过多则损失巨大
置信度和检测效能
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个不好的产品上线。
样本量的计算
实验平台提供了计算样本量的小工具
当前业务日常的比例(基线比率): 比如当前我们进行的账号设备登录率实验,那么这个基线比率就是当前的设备登录率,比如15%
期望提升的最小比率(最小可探测效应): 在我们的实验中,我们选定期望提升的最小比率为5%。这意味着,如果粉色按钮真的提高了5%的设备登录率,我们希望实验能够有足够把握检测出这个差别
确定指标
在进行实验时一般是比较实验组和对照组在某些指标上是否存在差异,当然更多时候是看实验组相比对照组某个指标表现是否更好。所以我们在进行实验之前就应该先确定好实验中需要需要对比的指标,更多时候我们关注的比例类的指标,如点击率、转化率、留存率等。后续我们做实验的显著性分析的时候,也是分析的比例类指标。
埋点
当我们确定了需要分析的具体指标之后,就需要我们进行埋点设计,把相关的用户行为收集起来,供后续的流程进行数据分析,从而得出实验结论。
Ps:对于 ABTest我们需要知道当前用户是处于对照组还是实验组,所以埋点中这些参数必须要有。
实验中观察
- 观察样本量是否符合预期,比如实验组和对照组分流的流量是否均匀,正常情况下,分流的数据不会相差太大,如果相差太大,就要分析哪里出现了问题。
- 观察用户的行为埋点是否埋的正确
实验后分析
- 当我们做过 ABTest 之后,需要对数据进行分析来确定本次实验的效果,这就需要进行实验的显著性分析,看看实验的显著性差异,如果结果不显著,则不具备参考性。
- 显著性差异是一个统计学名词。它是统计学上对数据差异性的评价。在作结论时,通常情况下我们用 P>0.05 表示差异性不显著;0.01<P<0.05 表示差异性显著;P<0.01表示差异性极显著。
- 当数据之间具有了显著性差异,就说明参与比对的数据来自于具有差异的两个不同总体,这种差异①可能因参与比对的数据是来自不同实验对象群体,比如把中年人和老年人相比,②也可能来自于实验处理对实验对象造成了 根本性状改变(正是我们AB实验期望的),因而实验的数据会有显著性差异。
- 从 3 可知,显著性差异不一定就代表实验是有效的,可能是因为混杂因素导致的,这就需要做实验样本的进一步分析,确定是不是混杂因素的影响。
- 最终通过分析,给出本次实验是否有效,如果有效那么本次实验带给业务方的提升是多少的结论。
总结
如何做一次完美的 ABTest?
- 确定对照组和实验组,最好是做单变量的实验,一次只改变一个变量。
- 分流时尽量排除混杂因素,一般情况下采用随机分流即可。
- 检查流量是否达到最小样本量要求,达不到要求则没法进行后续的分析,实验结果不可信。
- 确定本次实验的对比指标,就是如果方案之间存在差别需要通过什么来衡量?
- 准确收集用户行为数据,这就要求埋点必须正确。
- 分析指标的显著性,如果指标不显著则表示实验无效。
- 确定引起显著性的根本原因,排除混杂因素导致实验结果的显著性。
- 最终给出实验结论:有效 or 无效。