「Joy的自习室开张」,讲一讲我眼中的A/B Test
前言
开启「Joy的自习室」这个栏目,起因是昨天下班跟做marketing的好友闲聊。我的自我反省结论:我当下的学习模式本质是另一种形式的懒惰。因为「学习」可以很快速地获得反馈,记下一二三四五行获取的「知识」。故久而久之,「学习」像一个作弊器,遇到问题第一反应是学习,而思考的优先级被延后。
于是我打开了自己的印象笔记,每月、每天的to do list,下班后的学习笔记,待办的学习tag,归类的笔记标签……诸如此类,看上去我真的是一个「超级努力」的人,在互联网行业的工作强度下,依旧保持着学习输入。但深入挖掘一下这些笔记,则经不起推敲。信息的本质是为了吸收,故信息需要发散,也需要收敛,否则毫无意义。所以这些笔记本身只是我思维懒惰的证明,仅此而已。
故「Joy的自习室」栏目用于记录我的信息收敛和思考,如果能影响到他人,那将是意料之外的收获了。回顾我最近几个月的工作,最大的收获莫过于对一系列增长实验的认知,我在7月时写了增长黑客的书评,彼时的我还是一个增长实验的小白。如今3个月过去,大大小小实验经历了不少,姑且也算有些收获,遂将此作为这个栏目的开篇。

A/B Test 是什么?
A/B Test是一种灰度发布方式,即为了一个目标制定两个方案,在实验环境里让一部分用户使用 A 方案,另一部分用户使用 B 方案,记录下用户使用情况,通过数据指标反馈看哪个方案更接近目标结果,并推导该结论离开实验环境推广到全部流量环境可信。
A/B 实验可以测试的内容非常广泛,从产品UI,产品功能,运营活动分析,文案内容,页面布局,甚至是服务端策略等等,都可以通过A/B 实验数据来优化迭代。
为什么要做A/B Test?
灰度发布:A/B Test是一种灰度发布方式,能够平滑过渡。在初始灰度时就可以发现、调整问题,保证整体系统的稳定,影响范围最小化。
可逆方案:可逆方案对产品而言就是多了试错的可能。当实验方案出现了bug,或与对照组数据相差悬殊,那么就可以全量切换回原来的对照组。这里必须说明,回滚并不是自我打脸,一切经由数据验证的结论才有意义。
数据驱动:一个产品功能只有以数据驱动,才能更加有力地支持这个功能的全线发布。A/B Test只放量部分用户,通过对照度和试验组的数据指标对比,就能在短时间内确定哪种方案的可行性更高。
怎么做A/B Test?
1、明确实验目标
在做A/B test前,确定基准值(baseline)和最小预期提升,明确此次实验的目标。
2、确定数据指标
计算实验所需的最小样本量、最小实验流量、实验运行时间,可通过实验预期目标进行推导;
选择实验关注的重点指标及辅助指标,并及时与数据分析师确认数据埋点与数据统计口径。
3、实验变量控制
唯一变量:根据实验目标,确认本次实验的唯一变量;
分组受控:实验分组在受控情况下进行测试,受控是指除了要测试的唯一变量外,实验组与对照组的差别(包含时间、人群特质、流量等)要尽量缩小;
分组随机:为了保证分组随机,一些AB实验前会进行AA实验;
「AA实验:为检查分组机制是否随机,所以建2个对照组和2个实验组。在进行AB实验之前,首先检验两个对照组差异是否显著,即AA实验;若对照组1和对照组2两组差异不显著则可以放心开始AB实验,若两组差异显著,则AB实验的结果需要结合AA的结果做校正。」
由于我目前接触的业务是「双边市场」,有两个互相提供网络收益的用户群体,且平台方为它们提供的两种产品或服务同时进行定价和补贴,所以为了保证实验分组的随机性和减少其他策略的干扰,常采用「时间片轮转」的方式做实验,例如以1小时为轮转,则实验组与对照组分配如下:

4、样本科学分流
样本科学分流需要达到以下四个标准:
均匀性:确保分流样本各个维度分配比例均匀,且分布随机;
唯一性:通过精准高效的算法,确保单个用户每次登录产品时被分配到的实验版本是唯一的;
定向性:可根据样本标签来实现精准的定向分流;
分层分流:可以满足并进行大量A/B实验测试需求。
5、实验结果分析
分析实验结果不光要观察数据指标本身的变化,还要观察统计显著性。
「统计显著性(Statistical significance):是指零假设为真的情况下拒绝零假设所要承担的风险水平,又叫概率水平,或者显著水平/置信水平。在增长实验中是指对照组和实验组之间转化率差异的真实水平程度。」
如对比对照组和实验组的某个实验指标发现转化率有差别,而统计显著性为90%。则代表造成差别中有90%的可能性是真实存在的。而10%的可能性是随机误差引起的。当统计显著性越高,则随机误差的可能性就越低,得到的结果就越可靠。
同时统计显著性要求也会影响实验样本数量的选择。统计显著性要求越高,对结果的需求越确定,则实验所需要的样本数量越大。建议一般情况统计显著性要求至少为95%。