AB Test,即有A、B两个设计版本。通过小范围发布,得到并比较这两个版本之间你所关心的数据,最后选择效果最好的版本。对于互联网产品来说,通过A/B测试提升点击转化率,优化获客成本可以得到越来越多的关注。本文作者从案例实战出发,为我们分享了AB Test系统设计及其原理。


一、A/B Test的前世今生
A/B Test的思想最初应用于化学、生物、医疗等传统学术研究领域,叫做双盲实验,在2000年由谷歌引进到在互联网中进行了第一次A/B Test。A/B Test解决的是在现有认知下不确定哪种方案更优的问题,避免了拍脑袋决策,那么什么场景下适合做A/B Test呢? 首先有两个条件:- 有两个到多个待选方案;
- 有最直接的数据指标可衡量各待选方案,如:比率、数值。

二、abtest案例引出
关于A/B Test的案例有很多,最常见的无非就是一个按钮的颜色或者是按钮的文案,虽然很经典但未免太简单,以至于有的地方涉及到的实验知识点无法详细展开。今天我们就拿一个工作中的实际例子来举例: 某产品想上线付费发表情功能,于是产品同学A设计了一套付费引导流程:点击表情按钮->弹出付费引导弹窗->点击付费弹窗支付按钮->支付成功。 在需求评审上,产品同学B提出了不同意见:为什么不在用户点击具体某个表情的时候再弹出付费弹窗,使用如下引导逻辑:点击表情按钮->弹出表情面板->点击具体某个表情->弹出付费引导弹窗->点击付费弹窗支付按钮->支付成功。 根据以上逻辑,两个方案的转化漏斗如下:
- A方案看到付费引导弹窗人数 = n*x%
- B方案看到付费引导弹窗人数 = n*100%*a%*100%=n*a%
- A方案付费用户数 = A方案看到付费引导弹窗人数*y%*z% = n * x% * y% * z%
- B方案付费用户数 = B方案看到付费引导弹窗人数*b%*c% = n * a% * b% * c%

三、abtest实验设计
1. 版本设计
实验版本的设计要遵循变量的单一性,不能一下子改变多个因素,如同一个按钮不能同时改变按钮颜色和按钮文字,实验设计越简单越容易得出正确的结论。 案例时间:2. 实验时长
业界的实验时长一般是2-3周,最短时长建议不要少于7天。因为不同日期活跃的用户群体可能不一样,所以最好要覆盖一个周期,如7天、14天、21天。 那实验时长是不是越长越好呢,也不是的,实验时间过长会把各版本的区别拉平了,不同时期用户对不同策略的反应不一样。 例如0元夺宝玩法刚出来的时候用户会特别感兴趣,时间久了大家都知道这是一个套路会慢慢免疫选择性忽略掉,在玩法诞生之初进行实验可能效果会很显著,时间长了之后这玩法的效果就会慢慢下降。 实验结果也是有时效性的,仅对当前时间当前用户群有效果并不是放之四海而皆准,所以实验时间不宜过长,应快速验证快速迭代。3. 选择指标
一个改动影响的指标可能是多方面的,例如更改了加购物车按钮的颜色,点击该按钮的人可能会增多,从而间接导致下单的人数增多。那如何从众多指标当中选择出实验效果指标呢?可以从以下几个方面进行筛选:

4. 案例时间
基于前面的例子,影响最为直接的指标为点击付费弹窗支付按钮人数,但是这个跟各实验组具体人数也有关系,所以应该转化为比率。 分母应该是点击表情按钮人数而不是展示付费引导弹窗人数,因为两个版本的展示付费引导弹窗触发条件不一样,方案B已经人为的过滤掉一批低质量用户,必然会对展示点击率产生影响。 本实验间接影响的正向指标为付费人数,同理也需转化为付费率。正如产品同学A所说,发表情改为付费发送会降低那些点击表情按钮意欲发表情的用户的体验,有关用户活跃性的指标同时也需要关注,如:人均使用时长、留存率,这些活跃性指标均可作为本实验的负向指标来关注。
5. 计算最小样本量
之所以要计算最小样本量,主要有以下几点原因:- 样本量太小不能代表整体的情况,容易受到偶然因素影响,这就要求计算出至少抽取多少样本量才能代表整体情况;
- 避免浪费流量,通常有多个迭代同时进行,给其他迭代留出实验空间;
- 如果实验是负向的,可以避免带来大面积不必要的损失。

- α:表示出现第一类错误的概率,也称为显著性水平,常见的取值有1%、5%、10%、20%,一般取值5%,即犯第一类错误的概率不超过5%,常见的表示方法为:1-α,称为统计显著性,表示有多大的把握不误诊。
- β:表示出现第二类错误的概率,一般取值20%,更常见的表示方式为统计功效power=1-β,即有多大把握能检查出版本差异。

p=(0.075+0.079+0.087+……+0.083+0.077+0.081) / 30=0.08
- 确定MDE值,新方案至少比旧方案提升多少才能达到我们的预期,即计算新方案的ROI,避免实际收益不能弥补新方案的研发和推广成本,这里我们取比原方案提升10%,即新方案期望的点击率为:p(新方案支付按钮点击率)=0.08*(1+10%)=0.088,可得MDEΔ=0.088-0.008=0.008;
- 计算Z值,本实验中我们取α=5%,β=20%,通过NORMSINV计算,得:
6. 圈选用户
计算出了实验所需人数,下一步就是从总用户群体中抽取出对应人数进行实验,这一步我们将会面临着两个问题:如何从一个总体中按一定比例抽取随机样本;如果同时进行的实验中有互斥的怎么办。 针对以上两个问题我们有以下三种解决方案,下面分别介绍下: 1)单层方案 所有流量按某个参数(UserID,DeviceID、CookieID、手机号等)分成n个桶,假设选定UserID,有以下两种方法:



四、abtest实验评估
流量经过分流后进入到每个实验组,经过一段时间后各实验版本将会产生实验数据,经过统计各组数据之间是否存在显著性差异以及差异大小,就可以得出各版本之间是否有差异,哪个版本更好的结论。 显著性检验同样有多种方法:T检验、Z检验、卡方检验。 Z检验使用的是总体方差,T检验使用的是样本方差,卡方检验是比较两组数值的分布,因此Z检验比T检验和卡方检验效果更明显,检验精确度是:Z检验>T检验>卡方检验,下面以Z检验为例进行介绍。 AB测试需要比较出哪个实验组表现更好,因此使用的是单尾检验。原假设为新方案不优于旧方案,然后计算出在原假设成立的条件下,计算所得实验样本数据特征的概率原假设发生的概率P值,和显著性水平α进行比较以判断是否拒绝原假设。 如果P值小于显著性水平,说明我们在原假设的条件下几乎不会得到这样的数据,所以我们应该拒绝原假设。取显著性水平α为5%,具体步骤如下:1. 计算Z值
根据实验数据得到对照组均值为p1、实验样本数n1,实验组均值为p2、实验样本数n2,有以下公式:
2. 得出实验结果
1)方法一 将上一步得到的Z值与α对应的Z值比较,如果Z(实际) >= Z(1- α),则拒绝原假设,可通过Excel函数计算。- 【双侧检验】NORMSINV(1-α/2)。例如:NORMSINV(1-0.05/2)=1.959963985
- 【单侧检验】NORMSINV(1-α)。例如:NORMSINV(1-0.05)=1.644853627
3. 案例时间
通过一段时间的实验,各实验组人数为方案A:n1=18953,方案B:n2=18879,点击率数据得到如下: 根据历史数据计算出支付按钮点击率均值p:p1=(0.078+0.084+0.075+……+0.081+0.075+0.082) / 14=0.081
P2=(0.086+0.092+0.091+……+0.087+0.088+0.089) / 14=0.089
1)计算Z值 2)计算P值 P=1-NORMSDIST(Z(实际))= 1-NORMSDIST(2.789943083)= 0.002635865 3)得出结论 P值0.002635865远小于显著性水平0.05,说明在当前的数据表现下,原假设几乎不可能发生,拒绝原假设,认为方案B是优于方案A的。 4)计算置信区间 显然我们再做一次实验的话方案B的支付按钮点击率均值不一定还是0.089,有可能会上下波动,那么这个波动范围是多少呢,我们可以由样本统计量构成的总体参数计算出估计区间。计算公式如下: 标准误是描述样本均数的抽样误差,样本的标准误差为(n为样本量): 样本均值为p,样本置信区间为: 方案B的均值为0.089,方差为0.081079,显著性水平为5%,样本量为18879,则方案B的标准误为:
五、abtest系统核心功能架构图
经过上面的分析,我们已经知道了A/B Test的完整流程。 一个产品需要测试的点往往是非常多的,如果每次实验都要像上面那样人工走一遍显然效率是非常低的,A/B Test又是近年兴起的增长黑客的秘密武器,需要进行快速迭代快速验证,所以将以上流程自动化是非常有必要的。 下面我们就来看看A/B Test系统需要哪些模块,各模块之间是怎么配合的。
1. 配置模块
- 配置实验名称、版本等信息;
- 选择实验指标,并从数据仓库获取所有实验的指标配置,若有当前在运行的实验与本次实验选择指标一致,则自动化选择该实验为互斥实验;
- 选择实验对象,如圈选进行过充值的用户进行实验;
- 根据配置的指标及统计参数,计算出需要多少用户量,根据选择的实验对象,从数仓中同步选择的实验对象每天有多少该实验对象用户,计算出需要多少天才能达到最小样本量,并自动化推荐实验时长。
2. 预警模块
若实验快到期,或者实验样本量与预期的出入较大,则向业务方预警及时进行调整。3. 分流模块
实验配置好并上线后,用户访问APP时,向该模块该用户对应的实验配置信息,分流模块根据现有正运行的实验配置,计算出该用户属于哪些实验,进行互斥处理后返回对应最终实验的版本,客户端展示对应的实验版本。4. 分析模块
- 从数据仓库中读取实验的指标数据、样本量数据、其他辅助指标数据,进行分析;
- 针对每天新进实验组的用户数据,进行同期群分析,观察每天新增实验用户的数据波动情况,常见应用于留存分析。
声明:本文由网站用户竹子发表,超梦电商平台仅提供信息存储服务,版权归原作者所有。若发现本站文章存在版权问题,如发现文章、图片等侵权行为,请联系我们删除。