从假设检验到A/B测试

1. 前言

A/B测试常用于算法优化(推荐,广告,搜索等),运营策略选择,UI设计等,是互联网产品迭代中最常用的评价手段。其核心思想是控制变量法,一般我们有A和B两个产品版本,让A和B只有某个变量不同;再将用户分为均匀的两组,测试用户对于A和B的反应差异,来判断A和B哪种更优。

A/B测试的过程很直观,但其背后是有严谨的统计学理论支撑的,本文就尝试来分析一下A/B测试的理论基础。

2. 假设检验

2.1 定义

假设检验是A/B测试的基础。在总体的分布未知时,提出某些假设,并根据样本数据来判断应该接受还是拒绝该假设,这一决策过程称为假设检验

2.2 例子

这里参考概率论教材(浙大第四版)上的经典例子,来说明假设检验的过程。

某车间用一台包装机包装葡萄糖,袋装糖的净重是一个服从正态分布的随机变量。当机器正常时,其均值为0.5 kg, 标准差为0.015 kg. 某日开工后为了检验包装机是否正常,随机抽取n袋它包装的糖,称得净重数据(限于篇幅,这里不列出具体数值和计算过程),问该机器是否正常?

设这一天袋装糖的净重随机变量为 X \sim N(\mu, 0.015^2),问题是根据样本数据来判断\mu是否等于0.5. 为此我们可以提出两个对立的假设:

H_0: \mu0 = \mu1 = 0.05

H_1: \mu0 \ne \mu1

如果我们做出决策接受H_0,则认为机器工作正常;否则认为不正常。

我们知道样本均值\overline{X}\mu的无偏估计,\overline{X}的观测值\bar{x}可以一定程度上反映\mu的大小。因此如果假设H_0为真,则|\bar{x}-\mu|的值应该不会太大。由正态分布的抽样分布可知\overline X \sim N(\mu, \frac{\sigma^2}{n}),则当H_0为真时Z = \frac{\overline{X}-\mu_0}{\sigma/\sqrt{n}}\sim N(0, 1),上述问题就转化为衡量|Z|的大小。设k是一个很小的正数,当|Z| < k时就接受H_0, 反之则拒绝H_0.

然而上述决策依赖的是样本数据,存在犯错误的可能,当H_0为真时仍有可能拒绝H_0. 将这种错误概率记为 P(当H_0为真时拒绝H_0
),简记P_1, 我们希望将这种犯错概率控制在一个很小的数字\alpha,即:

P_1 <= \alpha

为了确定常数k, 将上式右端取等号,即

P_1 = P(|Z| \ge k) = P(|\frac{\overline{X}-\mu_0}{\sigma/\sqrt{n}}| \ge k) = \alpha

由于当H_0为真时,Z=\frac{\overline{X}-\mu_0}{\sigma/\sqrt{n}} \sim N(0, 1),根据正态分布分位点的特性可得k = z_{\alpha/2},该值通过查正态分布分位点表格可得。

结合样本数据计算出|\frac{\overline{X}-\mu_0}{\sigma/\sqrt{}n}|值并和z_{\alpha/2}比较,即可判断是否接受原假设H_0.

2.3 假设检验的原理

小概率事件被认为在一次试验中不可能出现。在上述例子中,|\frac{\bar{x}-\mu_0}{\sigma/\sqrt{}n}| \ge z_{\alpha/2}是小概率事件。若H_0为真,那么一次试验得到的观测值\bar{x}就满足|\frac{\bar{x}-\mu_0}{\sigma/\sqrt{}n}| \ge z_{\alpha/2}几乎是不可能发生的。如果发生,则我们有理由怀疑假设H_0的正确性,进而拒绝H_0。反之若观测值\bar{x}满足|\frac{\overline{X}-\mu_0}{\sigma/\sqrt{}n}| < z_{\alpha/2},则没有理由拒绝H_0, 只能接受。

这里数字\alpha被称为显著性水平,统计量Z=\frac{\overline{X}-\mu_0}{\sigma/\sqrt{}n}被称为检验统计量H_0称为原假设,H_1为备选假设。假设检验的工作就是根据样本数据,在两者之间做出决策。

当检验统计量取某个区域C中的值,我们拒绝原假设H_0,则称区域C拒绝域,拒绝域的边界点称为临界值C的补集称为接受域。上述例子中的拒绝域为|\frac{\bar{x}-\mu_0}{\sigma/\sqrt{}n}| \ge z_{\alpha/2},临界值为-z_{\alpha/2}+z_{\alpha/2}. 拒绝域和临界值如下图所示。

正态分布的拒绝域和临界值

在使用上述方法确定拒绝域时有一定的缺陷。例如当我们取\alpha = 0.05时可以拒绝H_0,但取\alpha=0.01时也可能会拒绝H_0。通常我们引入p值(probability value)的概念。p值是由检验统计量的样本观察值得出的原假设可以被拒绝的最小显著性水平

2.4 第I类和第II类错误

2.4.1 概念

  • 第I类错误:弃真,即假设H_0实际上为真,我们可能会拒绝H_0
  • 第II类错误:取伪,即H_0实际上不为真,但我们接受了H_0

实际工作中我们往往只控制第I类错误,原因是在第I类错误中,真实分布是已知的,可以很容易地确定小概率事件;而在第II类假设中,真实分布是未知的,无法确定小概率事件的范围。

控制第I类错误的方法就是选一个相对较小的\alpha值,一般取0.1, 0.05, 0.001等。

2.4.2 选取假设的原则

由于我们只控制第I类错误,即我们对待两类错误的态度是不对等的,因此我们在选择假设的时候要谨慎。一般来说有两个选择假设的原则:当犯某类错误有严重后果时,原则是将后果严重的错误归为第I类错误;如果没有严重后果时,一般选取H_0为维持现状。这里分别举两个例子来说明:

  • 药品检测

在药品检测时,有两种错误:1. 把假药判为真药;2. 把真药判为假药。显然第一种错误更严重,因此我们可以这样选择假设: H_0: 该药为假药,H_1: 该药为真药。这样我们就把“把假药判为真药”归到第I类错误中。

  • 产品迭代 (A/B测试)

在决策是否使用新方案时,我们一般选取H_0:新方案没有优势, H_1: 新方案有优势。我们对待新方案应该持谨慎态度,这样第I类错误就是新方案有优势但没有选取。一旦H_0被拒绝了,说明有较强的理由使用新方案。

3. A/B测试

3.1 基本流程

A/B测试的流程

如图所示,用户分流是A/B测试的第一步也是最核心的一步。需要基于各种规则将流量(用户)分成2个(或多个)互不交叉的组。分组要保证均匀性和一致性,让不同组内用户的分布类似,来保证A/B测试的正确性。

分组后让用户使用不同的服务并收集用户反馈,再进行效果评估,来决定使用更优的版本。效果评估的标准一般是根据具体业务来决定,如点击率,转化率,人均观看时长等等。

3.2 A/B测试的原理

A/B测试的流程很直观,就是控制变量然后选择更优。但这一过程背后的理论支撑是什么呢?这里就要结合前文的假设检验来分析了。首先复习一下中心极限定理:

3.2.1 李雅普诺夫(Lyapunov)中心极限定理

设随机变量X_1, X_2, ..., X_n互相独立,无论他们服从什么分布,当n\rightarrow +\infty时,\sum_{i=1}^n X_i都服从正态分布N(\sum_{k=1}^n\mu_k, ~\sum_{k=1}^n\sigma_k^2)

也就是说,当我们的流量(样本量)足够大时,随机变量(用户)的和都近似服从正态分布。假设用户在A/B测试中被分为了A和B两组,样本量分别为m和n, 这里m和n足够大且m \approx n. 设A和B中的用户分别为X_i, i = 1,...,mY_j, j = 1,...,n,由中心极限定理可知,随机变量\sum_{i=1}^mX_i\sum_{j=1}^nY_j都服从正态分布,其均值\frac{1}{m}\sum_{i=1}^mX_i\frac{1}{n}\sum_{j=1}^nY_j也服从正态分布。

3.2.2 A/B测试中的假设检验

在A/B测试中,我们将用户均匀地分为两组(对照组A和实验组B),每组使用不同的策略,根据收集用户反馈来进行决策。这里总体是指这个app的所有用户,样本是指对照照A和实验组B中的每一个用户。

下面用一个例子来说明。在视频推荐场景中,假如我们优化的指标是人均观看时长(以天为单位)。对照组A和实验组B中每个人的平均观看时长都是一个随机变量,分别记为X_1, X_2, ..., X_mY_1, Y_2, ..., Y_n. 由中心极限定理可知,\overline X = \frac{1}{m}\sum_{i=1}^mX_i\overline Y =\frac{1}{n}\sum_{j=1}^nY_j也是随机变量,且都服从正态分布,记为N(\mu_1, \sigma_1^2)N(\mu_2, \sigma_2^2); 两者之差也服从正态分布,即\overline Z = \overline X - \overline Y\sim N(\mu_1-\mu_2, \sigma_1^2 + \sigma_2^2)

根据假设检验的基本步骤,我们提出原假设和备择假设:

H_0: \mu_1 - \mu_2 = 0,即实验组的策略没有带来人均观看时长的变化

H_1: \mu_1 - \mu_2 \neq 0,即实验组的策略带来了人均观看时长的变化

由此可见,A/B测试问题就转化成了第一节里提到的的假设检验问题。

首先计算出检验统计量的值:Z =\frac{(\overline X - \overline Y) }{\sqrt{S_1^2/m+S_2^2/n}}, S_1, S_2分别是\overline X\overline Y的样本方差。

下面求出拒绝域,令P(H_0为真时拒绝H_0) = P(|\frac{(\overline X - \overline Y) }{\sqrt{S_1^2/m+S_2^2/n}}| > k) = \alpha,得出拒绝域为

|Z| \ge z_{\alpha/2}, 即当\overline X - \overline Y \in (~-z_{\alpha/2}\sqrt{S_1^2/m+S_2^2/n}, ~+z_{\alpha/2}\sqrt{S_1^2/m+S_2^2/n}~)时接受原假设,认为该算法不能带来人均观看时长的改变;否则拒绝原假设,认为该算法确实带来了人均观看时长的改变。

值得一提的是,这里使用的假设检验方法称为z-检验。在A/B测试中,样本量都很大,可以使用z-检验。当样本量较少时(n<30)时,一般使用t-检验。关于z-检验和t-检验的区别,推荐这篇文章:https://bytepawn.com/ab-testing-and-the-ztest.html,此处不再详述。

4.总结

A/B测试的理论基础包括假设检验、中心极限定理、正态分布、样本估计等统计学知识,看似简单的逻辑,背后其实是严谨的统计理论支撑。

5.参考资料

  1. 《概率论与数理统计》浙大第四版
  2. “构建企业级推荐系统系列”AB测试平台的工程实现
  3. A/B测试与假设检验(一)
  4. AB测试-详细过程和原理解读
  5. A/B Test的统计学原理
  6. ab-testing-and-the-ztest
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,794评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,050评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,587评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,861评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,901评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,898评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,832评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,617评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,077评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,349评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,483评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,199评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,824评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,442评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,632评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,474评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,393评论 2 352

推荐阅读更多精彩内容