AB实验原理与实践
关于数据科学工程实践一书的学习笔记与实践拓展,不足之处,望笔者多多指正。
1、AB实验介绍
1.1、什么是AB?
A/B 实验也被称为分离式组间实验或对照实验,是一种科学的因果推断统计方法,被广泛应用于科研领域(药物测试)。随着商业领域产品和活动的精细化运营,尤其是互联网行业中,A/B 实验也受到了越来越多的关注。简单描述 A/B 实验在产品优化中的应用方法:在产品正式迭代发布之前,为同一个目标制定方案,将用户流量对应分成几组,在保证每组用户特征相同的前提下,让用户分别看到不同的产品或者活动策略(可以是策略 1 与策略 2,也可以是实验组或对照组),根据几组用户的真实数据反馈,科学地帮助产品经理进行决策。
1.2、AB实验有什么用?
因果关系是很多互联网、生物等领域的核心关注点,如:今天用户为什么涨?怎样可以让用户多购买、活跃性更高?而探究事物的因果关系是该试验的根本目的。通过科学的AB试验可以解决如下两个统计学问题:
-
相关性缪误:比如国家的综合实力与国民博士数量成正比,所以国家的综合实力高可以导致国民博士数量增加;显然无法通过相关推出因果【有因果一定相关,有相关不一定有因果】,而通过AB控制单因素的差异进行试验,可以科学地推断事物间的因果关系。
-
潜在结果与因果效果:潜在结果即未加入影响因子前的结果,因果结果未加入影响因子后的结果,即分别为AB实验各自的结果。举个例子:如果去超市搞打折营销,某用户购买了4个苹果,如果做不做AB的实验的因果探究得到的结果可能恰恰相反。
2、AB实验过程与原理
2.1、AB实验前需要明确的几点
(1)明确实验要素与目标;
开始实验前,分析师与业务方应该明确以下的几类要素:
- 实验目的:是想通过改变哪几类影响因子改变哪几类指标,即探究哪几类事物间的因果关系;
- 实验单元:可以说是实验对象,如某APP双11打折促销,实验对象是打开APP的这类用户;
- 操作因子:即实验中的自变量,如上述例子的操作因子是折扣券;
- 操作因子水平:操纵因子在实验中设置的水平,即操纵因子可能的取值。因此,操纵因子水平决定了实验组的数量,例如在上述实验中,操纵因子水平为是否有折扣券,所以只有一个实验组,即发放折扣券的用户,而对照组则是空白对照,即无折扣券的用户。实际上,操纵因子水平可以有多个,当实验目标为折扣大小对于App浏览– 下单率的影响时,操纵因子水平可以是不同折扣,这样就有了多个实验组。
- 因变量:随着操作因子变动的变量,以上述案例为例:因变量为下单率;
- 效能:操作因子导致因变量变化的量,如上述例子有促销后下单率上升了3%,那么3%就是实验效能;
注意的是可以影响实验效能的除了操作因子,也会受到如:背景因子、偏执因子以及混淆因子等要素的影响。
(2)明确核心指标
核心指标是衡量实验组是否优于对照组的重要指标,明确核心指标有助于我们在复杂的指标大盘结果中找到重点,快速做出决策。特别是在同时订阅多个指标时,一般将一些指标作为关注指标,将一个指标作为核心指标。
(3)提出假设
A/B 实验的本质是假设检验,它首先对实验组和对照组的关系提出了某种假设,然后计算这两组数据的差异并确定该差异是否存在统计上的显著性,最后根据上述结果对假设做出判断。A/B 实验的原假设是两组没有差异,备择假设是两组有差异,所谓有无差异是对于这个实验的指标而言的,有一点反证法的意思。因此整个实验过程的核心目标为拒绝原假设,证伪后说明原假设不成立。一般情况下提出的原假设内容为: p 1 = p 2 = 0 , p 1 、 p 2 为 A B 两 组 试 验 的 指 标 值 p_1=p_2=0,p_1、p_2为AB两组试验的指标值 p1=p2=0,p1、p2为AB两组试验的指标值
2.2、AB实验流程
(1)明确目标(最小预计提升MDE)
简言之,在进行AB实验前,业务和分析同学需要建立一个心理预期,比如实验中用户的点击率至少提升2%的效果时,才算达到预期的目标,那此时的MDE也就是下文中的 Δ \Delta Δ;
(2)基于MDE预估样本量
预估样本量的目的是为了保证实验过程中保证测试的相对准确(第一类错误
α
\alpha
α)与足够好的统计功效(第二类错误
β
\beta
β)的,关于两类错误含义的简单介绍可见下表:
假设检验的几类情况
决策 | 接受 H 0 H_0 H0 | 拒绝 H 1 H_1 H1 |
---|---|---|
H 0 为 真 , A B 无 用 p 1 H_0为真,AB无用p_1 H0为真,AB无用p1 | 正确决策,TN(1- α \alpha α) | 第一类错误(拒真), α \alpha α |
H 0 为 假 , A B 有 用 p 2 , H_0为假,AB有用p_2, H0为假,AB有用p2, | 第二类错误(取伪), β \beta β | 正确决策(1- β \beta β) |
两类错误的关系可见下图便于理解;
在统计学知识体系中,考虑不同的因素,得到的对应的样本量计算公式也有所不同,这里,主要据笔者了解主要使用的样本量计算公式如下:
- 只考虑第一类错误
α
\alpha
α的样本量预估
n = 2 σ 2 ∗ z 1 − α / 2 2 Δ 2 n=\frac{2 \sigma^{2}*z_{1-\alpha / 2}^{2}}{\Delta^{2}} n=Δ22σ2∗z1−α/22 - 同时考虑第一类
α
\alpha
α与第二类的错误
β
\beta
β额样本量预估
n = 2 σ 2 ( z 1 − α / 2 + z 1 − β ) 2 Δ 2 n=\frac{2 \sigma^{2}\left(z_{1-\alpha / 2}+z_{1-\beta}\right)^{2}}{\Delta^{2}} n=Δ22σ2(z1−α/2+z1−β)2
其中:
Δ
\Delta
Δ:样本均值预期最小提升;
σ
2
\sigma^{2}
σ2 :样本方差,一般情况下取
σ
2
=
p
(
1
−
p
)
\sigma^{2}=p(1-p)
σ2=p(1−p),p为关键比率(指标)
Z:正态分布累计概率为 x 时对应的分位数,(一般
α
=
0.05
时
,
z
1
−
α
/
2
=
1.96
\alpha=0.05时,z_{1-\alpha / 2}=1.96
α=0.05时,z1−α/2=1.96,
β
=
0.1
时
z
1
−
β
=
1.28
\beta=0.1时z_{1-\beta}=1.28
β=0.1时z1−β=1.28)
α
\alpha
α:第一类错误(拒真)
β
\beta
β:第二类错误(取伪)
(3)基于预估样本量预估实验时长
一般来说,如果业务同学与分析同学将放量限死(考虑影响用户数量尽可能的小),比如限制在10%的用户流量是1000,但是实验预估样本量是5000,那么预估的实验时长就是5天(对于比较看重交易日的互金领域就是一周),一般在实际的业务中取一周的比较多。
(4)AA实验对比
在开始AB实验,需要先进行或同步进行一组等量等时长的AA实验,主要目的为:
- 检查分组流量的分组是否均匀,消除组内差异对实验的影响;
- 根据AA的实验结果参考,可以判定AB实验结果是否需要矫正(其实可上面的点差不多);
2.3、根据实验结果进行决策
在统计学中,根据样本量的大小的不同(一般以30为界),大样本量使用Z检验,小样本量使用t检验;这里按照比例进行Z检验计算。
(1)AA&AB实验结果计算方法
A/B 实验结束后,样本量达到实验预期提升所需数量,对关键指标(购买、点击率、转化率、留存率等)进行显著性检验,计算公式为:
z
=
x
ˉ
B
−
x
ˉ
A
S
A
2
n
A
+
S
B
2
n
B
z=\frac{\bar{x}_{B}-\bar{x}_{A}}{\sqrt{\frac{S_{A}^{2}}{n_{A}}+\frac{S_{B}^{2}}{n_{B}}}}
z=nASA2+nBSB2xˉB−xˉA
其中:
A:对照组
B:实验组
x
ˉ
A
\bar{x}_{A}
xˉA::对照组样本均值;
x
ˉ
B
\bar{x}_{B}
xˉB:实验组样本均值;
S
A
2
S_{A}^{2}
SA2:对照组样本方差;
S
B
2
S_{B}^{2}
SB2::实验组样本方差;
n
A
n_{A}
nA:对照组样本量;
n
B
n_{B}
nB:实验组样本量
(2)根据实验结果做出决策
实验的结果的评估方式一般为两种
- 根据显著性检验的Z检验值进行决策,一般取 α \alpha α=0.05,对应的Z临界值为1.96,(>1.96拒绝原假设,<1.96接受原假设)
- 根据置信区间进行决策,相当于Z临界的另外一种公式的体现,根据关键指标是否在置信区间内(在接受原假设,不在拒绝原假设)
3、设计一个AB实验【基于火山引擎】
3.1、ABtest平台介绍
该平台为字节火山引擎下的一个子功能(AB试验平台),通过申请账号与试用可以得到为期两周的试用
3.2、 建立一个简单的试验(以推送试验为例)
(1)新建试验
(2)类型选为推送
3.3、 编辑试验信息
(1)编辑名称
(2)AB版本设置
(3)关键指标设置
评价AB两个版本的好坏的需要选定一个关键评价指标进行对比对位最终评判的依据,同时,一个版本的上线也需要关注其他一些指标,但关键评价指标一般只有一个。
(4)根据预期目标计算预期样本量
可定义的变量指标有:
- WAU周活
- 核心指标基准线(核心评价指标的历史均值)
- 校验灵敏度MDE
- 统计功效power(1- β \beta β)
- 试验天数
设置好试验流量后,即可开始调试,完成试验创建
3.4、 根据试验结果进行最终决策
由于试用版本展示无法将实际的放进去进行试验,但是试验列表给出几个完成测试的试验报告如下图:
-
一个测试失败的AB
-
一个测试成功的AB
4、总结
本文介绍的AB实验将策略或者新产品的潜在效果与实际效果进行对比,帮助我们科学、有效地比较两个策略的效果。但是运用于实际业务的过程中仍然有以下不足与待解决的疑问:
- 用户特征多差异大的情况下,如何做到科学的分流,本文暂未提出方案(具体解决方案可见试验设计一书);
- 在较多AB实验需求用户流量较多的情况,那些实验流量需要进行互斥、那些进行正交实验,仍有待后文进一步的详细阐述;
- 在用户流量的较少的情况的下是否还适用AB实验?
最后,目前认为分析同学需要对AB保持客观的认知,比如: - 版本迭代过程中,没有最好的版本,只有最合适的版本,AB测试的目的是进行科学的决策;
- AB测试不是万能的,实验前后同时需要业务同学根据经验判断实验的合理性,但是不会AB对于分析同学而言是万万不能的;
- AB并不是最好的评估方式,AB的局限在于在实际的业务侧里并不是所有的业务场景都满足使用AB的实验要求;
5、参考
谢梁、王子玲等《数据科学工程实践》
火山引擎