📝浅谈A/B Testing的理论基础
00 分钟
2022-3-22
2023-9-12
type
status
date
slug
summary
tags
category
icon
password

01

什么是A/B Testing?

据说2000 年,Google 工程师就进行了他们的第一次 A/B 测试,用于确定搜索结果页面上展示多少条对用户最友好。从此之后A/B Testing就广泛应用于网页、App功能和内容的优化。下面是一些经典的A/B Testing驱动业务增长的案例。
  • 亚马逊个性化推荐的 A/B test,发现个推能显著提升收益。
  • 亚马逊在07年发现:页面每增加100ms延迟,收入将会下降1个百分点。
  • 08年奥巴马竞选美国总统期间,通过对不同风格的募捐网站进行测试,挑选出了最优版本将网站注册转化率提升了40.6%,最终这些用户额外带来了5700万美元募捐资金。
下面我们通过一个例子来看一下A/B Testing的例子。
背景:一个购物网站的产品经理认为将商品详情页的加入购物车按钮放大并添加动态效果能够提升用户浏览产品详情页面时的加购率(假设定义为统计时间内的点击加购的UV/产品详情页UV)。于是他让开发同学开发了一个新的产品详情页版本A。然后随机让一部分客户看到新的产品详情页版本A,剩余客户继续看到现有产品详情页B。
版本
详情页UV
加购UV
加购率
A(新版本)
100000
510
0.51%
B(原版本)
100000
500
0.5%
上线7天后的数据结论如上,我们能否得出新版本能够提升加购率的结论?
在理想的情况下,我们就可以用观察到的数据借助假设检验来回答新版本是否能够提升加购率。一般而言,A/B Testing会大致按照下面的流程进行。
1. 提出一些改进业务指标的假设,如新功能,新的展示形式等
2. 针对这个假设开发相应的新版本
3. 将一定量的流量随机分配给新版本(treatment group)和现有版本(control group)
4. 观察一定周期内两个版本内关键业务指标的变化。
5. 利用假设检验判断最初提出的假设是否成立,如果成立就扩大新版本的流量,如果不成立就视情况下线新版本、继续观察或进行新的测试。
在实际应用中,A/B Testing会面临很多难题,具体可以参考文章第4部分或书籍《关键迭代》。

02

感性认识假设检验

在工作和生活中,我们通常会根据历史数据、经验或直觉建立一些假设,如我们认为吸烟会增加肺癌的发病率。那么对于我们假设的否定或者对立面就是吸烟不会增加肺癌的发病率,这个假设我们通常称为零假设(null hypotheis)。假设检验的思想就是在零假设成立的条件下,我们观察到的数据有多大的概率是由于随机性造成的,如果在零假设成立的条件下我们能观察到当前实际数据的概率很低,我们就有理由拒绝零假设,从而接受我们的假设。这个过程可以概括为下图。
notion image

03

第一类错误、第二类错误和最小样本量

假设检验是通过观察数据(样本)来进行判断,但观察数据并不能代表整体,因此用观察数据得到的结论是有不确定性。这个不确定性有两种可能,一种是假阳性,即零假设为真的情况下,根据观察数据得出得出拒绝零假设的结论。这种错误发生的概率计作alpha,也称为显著性水平。一般的应用中,会要求显著性水平为5%或1%。与显著性水平等价的一个概念是置信度,即置信度=1-alpha
另一类我们关心的错误就是假阴性,我们称之为第二类错误,即零假设不成立的条件下,我们根据观察数据得出零假设成立的结论。第二类错误的概率我们称之为beta,由1-beta我们可以定义另一个概念,统计功效。实际应用中一般会保证80%的统计功效,这也意味着我们可以接受20%的假阴性率。
第一类错误和第二类错误之间的关系可以通过下面的图片来理解。在样本量不变和需要实际观察到的最小指标变动量不变的情况下,第一类错误和第二类错误之间其实是一种tradeoff。一个减小会导致另一个增大。
notion image
notion image
在实际应用中,是否是alpha越小越好呢?答案是,不一定。我们需要根据业务实际情况来判断哪一类错误对我们来说代价更大。如在工厂生产质量的检验中中,我们可能更加关注第二类错误,因为漏检出一个次品造成的损失可能是巨大的,但是错把一个合格品监测为不合格品的损失相对会更小。但在司法判决中,一个第一类错误(假阳性)就代表着一个无罪之人要承受牢狱之灾。
在实际应用中要进行假设检验必然面临一个问题就是我要用多少流量/客户量进行测试呢?这就涉及到一个概念最小样本量。在统计量、第一类错误概率、第二类错误概率和实际有意义的最小指标变动(我们想要检测到的最小指标变动)确定的情况下,我们可以通过公式直接计算得到需要的最小样本量。

04

A/B Testing实践的一些问题

在实际应用中,A/B Testing会面临很多实际的难题。一些常见的问题如下。有兴趣继续学习的同学推荐大家去看一本书《关键迭代》,相信大家可以在书里找到部分问题的答案。
1. 如何选择关键指标和护栏指标
2. 如何选择随机化单元(cookie、设备ID、页面、手机)?
3. 如何保证实验组和对照组的客户/流量是随机分配且同质的?
4. 如何给同时进行的测试分配流量并尽量降低测试之间的相互干扰?
5. 如何避免同时测试造成的用户体验不一致的?如有的测试系统可能按照设备ID切分流量,可能导致同一个用户同时可以看到实验组和测试组的内容,用户体验不一致。
6. 如何解决之前进行的测试对后续测试的影响?
7. 如果客观条件不允许进行测试,我们该如何通过数据进行决策?
 

评论