为了选择效果最好的方案,在进行A/B实验中,经常会同时设置多个实验组,并且分别与对照组比较。这样做会有两个问题:1. 多重比较问题;2. 衡量效果时存在选择性偏差。
为了解决这个问题,一种推荐的做法是两阶段实验,先进行一轮多方案比较,将最好的方案再单独进行一轮实验。传统做法会将第二轮的评估作为最终效果,但是会有另一个问题:3. 浪费了第一阶段的数据,降低了结果的敏感度。
微软的实验平台采用了一种将两阶段结果合并的方案——Statistical Inference in Two-Stage Online Controlled Experiments with Treatment Selection and Validation。
两阶段实验的背景
1. 多个实验方案的影响
在第一阶段中,多方案对实验评估影响如下:
- 实验效果的影响
单实验方案时,是实验效果的无偏最大似然估计;
多实验方案时,不再是无偏的; - 多重比较影响
会增加发现“显著”方案的概率,可参考我之前写过的——A/B实验设计——如何避免多重检验错误.
2. 弱相关性
先不考虑多方案,综合评估两阶段实验的一个挑战是两次实验具有相关性。
为了规避这个问题,可以将两次实验的流量互斥,但是有两个缺陷:1.每阶段可用流量少了,合计不能超过100%;2.需要额外的工程方面成本。
对线上随机实验来说,两阶段的可以近似认为是独立的,以下是解释:
假设一个用户参与了两阶段的实验,当他在对照组时,观测结果为:
其中分别代表两阶段的效果期望值,代表个人的随机影响,是对应的随机噪音。
则对照组的用户可表示为:
其中是实验干预影响。
设N为总线上用户数量,m为第一阶段实验组用户数、n为对照组,第二阶段对应用户数为m'、n'。如果两次用户分组都是随机的,而两阶段的效果分别为,则:
定理1 (Almost Uncorrelated Deltas)
假如随机分组,则:
(1)
另外,如果,而且,则:
如何理解定理1?
我们感兴趣的是相关性:
(2)
如果治疗效果与X有比例关系: ,则,根据 (1)、(2)可推导出:
。
由于在线上随机实验中,往往提升都是比较小的,即使按提升10%来看,则两次实验的相关系数会小等于0.01。
通过上述定理可知,两阶段实验的相关性很弱,可以近似认为不相关。
解决方案
检验方面
需要可以将两阶段合并进行检验的方案。
1. 传统方法
- 多重比较
比如通过Bonferroni correction矫正,可参考A/B实验设计——如何避免多重检验错误 - 计算统计显著性
荟萃分析,比如通过Fisher’s method,可参考荟萃分析简介
通过这两步可以有效的控制假阳性,但是条件比较严格,会降低敏感度,也就是假阴性较高。
2. Sharp Multiple Comparison Adjustment
传统做法偏保守,其实在本场景下可以有跟敏感的方案。
设第一阶段实验中,对照组指标数值为, 实验组为,可得到
-
Generalized step-down procedure
可知服从一个多元正态分布,而我们要的统计量是
基于零假设下,如果通过蒙特卡洛模拟大量次,每次计算,这样就可以得到的经验分布,可以带入实验中真实值得到P值。 -
Generalized weighted average test
结合到我们的场景,如何计算两阶段的合并效果?
根据定理1,利用combined Z-score思路:
通过蒙特卡洛得到的经验分布,与模拟验证阶段的结合,可以得到的经验分布。
于是可以精准得到两阶段的合并效果,很符合预设假阳性水平。
点估计方面
A/B 另一个挑战是要给出效果估计。
在第一个筛选阶段,如果我们有k个实验组,则;对照组为。
不失一般性的,我们假设;另外,参数。
在验证阶段,,可以得出 ,它是真实干预效果的无偏估计,但是是有偏的。如何与结合,并且纠正偏斜呢?
定义bias为,需要找出它的估计方法。
-
Naive-correction estimator
The λ(µ) = E(xmaxi − µmaxi) and E(H(x)) of 2000 randomly sampled µ’s.
将筛选阶段得到的各组效果作为的点估计,通过来蒙特卡洛得到的估计,则可以用作为其点估计。
需要注意的是,这是一种“plug-in"估计,因为。
将各实验组结果排序,定义,通过模拟得到与关系如下:
因此可以通过单参数模型拟合,通过计算 -
Simple linear-correction estimator
沿袭上一节,令,定义,可以通过多项式线性模型拟合:
这里原文推荐使用natural cubic splines模型,可参考三次样条(cubic spline)插值。
之后可以用它的矫正bias,这种做法被微软称为NS方法。 -
Bayesian posterior driven linear-correction estimator
上面通过MLE矫正bias的做法,会有较大方差,可以结合贝叶斯进行优化。
假设有先验,通过James-Stein estimator得到后验:
采用分层结构,先通过上面分布抽样得到,在通过分布抽样得到,后续流程与之前一直。
此方法称为JS-NS估计法,它会有更小的方差。 -
Beyond simple linear-correction
可以采用更复杂的模型来取代Simple linear-correction,但是微软的研究发现没有明显区别;将蒙特卡洛阶段次数增加到10000次后,再增加模拟次数没有明显区别。
方案验证
以下是微软的数据验证结论。
1. 假设检验
Type I error under the null hypothesis
-
固定下,模拟10000次:
BF: 3.2%假阳性,符合之前设想,过于严格;
WAvg: 5.1%假阳性,接近与期望水平。 -
,模拟10000次:
BF: 3.3%;
WAvg: 5.0%. -
,模拟10000次:
BF: 4.2%;
WAvg: 12.3%。
结论:当效果较固定时(上文假设),两者都可以较好控制假阳性;当效果较随机时,BF方法更加健壮。
Statistical power under the alternative hypothesis
Power curve of generalized weigthed average method, BF method and validation run t-test.如图,采用WAvg方法,power会明显优于单独验证二次实验或者BF方法。
2. 点估计
The estimated MSE for candidate estimators on 16 of the 200 randomly generated µ’s. The µ’s are ordered according the value H(µ) and are grouped by H(µ) < 1 and H(µ) > 1.Naive-Correction在较大时,会有较小的bias和较大的方差;
JS-NS在较小时,有最好的效果,而且方差始终小于其他方法。因此JS-NS是最好的选择。
后记
现在的实验系统大部分不支持分阶段实验的荟萃分析,但是在样本量受限等场景下,此类方法是非常有用的,但是也会更加复杂。
需要注意,文中没有考虑实验的残留效应,实际使用中需要考虑。
网友评论