目录

更多请看我的知乎回答:A/B test 到底应该怎么做?

什么是AB测试?

AB测试大规模出现在互联网产品迭代更新中。为Web或App界面或流程制作两个(A/B)或多个(A/B/n)版本,在同一时间维度,分别让组成成分相似的访客群组访问这些版本,收集各群组的用户体验数据和业务数据,最后分析、评估出最好版本,正式采用。

假设Group1上的实验结果为 r1, Group2上的实验结果为 r2,则AB测试的差异是 r=r1r2r 是依赖于测试样本的随机变量,应该满足:

  1. 无偏性。假设在1%流量上某功能可以提高10%的点击率,那么在全量上也应该大约提高10%。
  2. 低方差r是一个随机变量,方差越小,可靠性越高。

AB测试中如何给样本分组?-LMLPHP

什么叫样本相似?

严格来说,应该是A, B两组样本的密度函数或分布函数相似。但在高维情况下,密度函数难以估计,以密度函数相似为标准的分组操作难度较大。退而求其次,A, B两组样本的边缘密度函数相似。具体来说,就是每个指标在A, B两组中要均衡。比如A组女性占比35%,那么B组女性占比也应约35%。这样,A, B两组实验效果上的差异可以排除性别的影响。但是,这样可能忽略变量之间的交互作用。两个指标单独来看都是均衡的,但联合起来看就不均衡了。一个更好的办法是通过马氏距离来定义相似性:
d(G1,G2)=(x1ˉx2ˉ)TΣ^1(x1ˉx2ˉ)
x1ˉ, x2ˉ是两组样本的均值,Σ^是所有样本的协方差。当样本服从正态分布时,马氏距离刻画了样本分组之间的距离。

为什么要样本相似?

只有其它排除协变量对实验的影响,A, B两组实验的差异才可归因于测试元素的差异。

怎么实现样本相似?

随机化(Randomization)

将样本随机分为两组。比如,根据IP地址最后一位的奇偶性。

在样本量特别大且特征数量不是特别大时,这样做没问题。大数定律保证了各组的样本分布会收敛到总体的样本分布。 但是,当样本比较小,比如临床试验样本通常较少;或者特征数量很大,特征p和样本n是同一个数量级,比如个性化的推荐系统中;简单的随机化就可能出现分组后不均衡。

假设一个特征在两组中不均衡的概率为γ, 那么p个特征中至少有一个特征不均衡的概率大约是:β=1(1γ)p 。假设γ=0.0001, 当p=10000时, 计算得到β=0.63, 这个概率很大了。如果两组实验有差别,就很难说明到底是测试元素的差异还是某个特征的差异。

再随机化 (Rerandomization)

重复随机化过程,直到两组样本的马氏距离低于某一阈值。

协方差适应随机化(Covariance-Adaptive Randomization)

实现方法:

  1. 将样本随机排序,两两一组,(x1,x2),(x3,x4),(x5,x6),
  2. for i =1 to n/2:
    如果x2i在第一组x2i+1在第二组的马氏距离小于x2i在第二组, x2i+1在第一组,那么以大概率将x2i分在第一组, x2i+1分在第二组。反之亦然。

可以证明,协方差适应随机化得到的结果是无偏的,且达到方差的下界。

一个问题:

如果要拿小流量做实验,比如对1%的流量进行AB测试,那么应该如何挑选样本并分组?


03-12 01:56