AB实验的高端玩法系列2 - 更敏感的AB实验, CUPED!

背景

AB实验可谓是互联网公司进行产品迭代增长用户粘性的大杀器。但人们对AB实验的应用每每只停留在开实验算P值,而后let it go。。。let it go 。。。html

让咱们把AB实验的结果简单的拆解成两个方面:
\[P(实验结果显著) = P(统计检验显著|实验有效)× P(实验有效)\]
若是你的产品改进方案原本就没啥效果固然怎么开实验都没用,但若是方案有效,请不要让 statictical Hack 浪费一个优秀的ideagit

若是预期实验效果比较小,有哪些基础操做来增长实验显著性呢?github

一般状况下为了增长一个AB实验的显著性,有两种常见作法:增长流量或者增加实验时间。但对一些可能对用户体验产生负面影响或者成本较高的实验来讲,上述两种方法都略显粗糙。ide

对于成熟的产品来讲大多数的改动带来的提高可能都是微小的!post

在数据为王的今天,咱们难道不该该采用更精细化的方法来解决问题么?不管是延长实验时间仍是增长流量一方面都是为了增长样本量,由于样本越多,方差越小,p值越显著,越容易检测出一些微小的改进。ui

所以若是能合理的经过统计方法下降方差,就可能更快,更小成本的检测到微小的效果提高idea

image.png-172.7kB

CUPED(Controlled-experiment Using Pre-Experiment Data)应运而生。 下面我会简单总结一下论文的核心方法,还有几个Bing, Netflix 以及Booking的应用案例。spa

论文

Deng A, Xu Y, Kohavi R, Walker T. Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-experiment Data. Proceedings of the Sixth ACM International Conference on Web Search and Data Mining. New York, NY, USA: ACM; 2013. pp. 123–132. Paper连接orm

核心方法总结

论文的核心在于经过实验前数据对实验核心指标进行修正,在保证无偏的状况下,获得方差更低, 更敏感的新指标,再对新指标进行统计检验(p值)。htm

这种方法的合理性在于,实验前核心指标的方差是已知的,且和实验自己无关的,所以合理的移除指标自己的方差不会影响估计效果。

做者给出了stratification和Covariate两种方式来修正指标,同时给出了在实际应用中可能碰到的一些问题以及解决方法.

stratifiaction

这种方式针对离散变量,一句话归纳就是分组算指标。若是已知实验核心指标的方差很大,那么能够把样本分红K组,而后分组估计指标。这样分组估计的指标只保留了组内方差,从而剔除了组间方差。
\[ \begin{align} k &= {1,2,...,K} \\ \hat{Y}_{strat} &= \sum_{k=1}^{K} w_k * (\frac{1}{n_k}*\sum_{x_i \in k} Y_i )\\ Var(\hat{Y}) &= Var_{\text{within_strat}} + Var_{\text{between_strat}}\\ &=\sum_{k=1}^K\frac{w_k}{n} \sigma_k^2 + \sum_{k=1}^K\frac{w_k}{n} (\mu_k - \mu)^2\\ &>=\sum_{k=1}^K\frac{w_k}{n} \sigma_k^2 = Var(\hat{Y}_{strat}) \end{align} \]

Covariate

Covariate适用于连续变量。须要寻找和实验核心指标(Y)存在高相关性的另外一连续特征(X),而后用该特征调整实验后的核心指标。X和Y相关性越高方差降低幅度越大。所以每每能够直接选择实验前的核心指标做为特征。只要保证特征未受到实验影响,在随机AB分组的条件下用该指标调整后的核心指标依旧是无偏的。

\[ \begin{align} Y_i^{cov} &= Y_i - \theta(X_i - E(x))\\ \hat{Y}_{cov} &= \hat{Y} - \theta(\bar{x} - E(x))\\ \theta &= cov(X,Y)/cov(X)\\ Var(\hat{Y}_{cov}) & = Var(\hat{Y}) * (1-\theta^2) \end{align} \]

stratification和Covariate实际上是相同的原理,从两个角度来看:

  • 从回归预测的角度,实验核心指标是Y,下降Y的方差就是寻找和Y相关的自变量X来解释Y中信息的过程(提高\(R^2\)),X能够是连续也能够是离散的
  • 从投资组合的角度,Y是组合中的一项资产,想要下降交易Y的风险(方差),就要作空和Y相关的X资产来对冲风险,相关性越高对冲效果越好

下图摘自Booking的案例,他们的核心指标是每周的房间预约量,Covariate是实验前的每周房间预约量,博客连接在案例分享里。
image.png-138.3kB

实战攻略

covariate的选择

这里的选择包括两个方面,特征的选择和计算特征的pre-experiment时间长度的选择。

核心指标在per-experiment的估计一般是很好的covariate的选择,且估计covariate选择的时间段相对越长效果越好。时间越长covariate的覆盖量越大,且受到短时间波动的影响越小估计更稳定。

没有pre-experiment数据怎么办

这个现象在互联网中很常见,新用户或者好久不活跃的用户都会面临没有近期行为特征的问题。做者认为能够结合stratification方法对有/无covariate的用户进一步打上标签。或者其实不只局限于pre-experiment特征,只要保证特征不受到实验影响post-experiment特征也是能够的。

而在Booking的案例中,做者选择对这部分样本不做处理,由于一般缺失值是用样本均值来填充,在上述式子中就等因而不作处理。

Attention

Covariate选择的核心是\(E(X^{treatment}) = E(X^{control})\),这一点不论你选择什么特征, 是pre-experiment仍是post-experiment都要保证。

固然也有用CUPED来矫正实验组对照组差别的,但这个内容不在这里讨论。

应用案例

Bing 加载时间对用户点击率的影响

论文中做者在实际AB实验中检验了CUPED的效果。Bing实验检测检测加载时间对用户点击率的影响。 一个本来运行两周只有个别天显著的实验在用CUPED调整后在第一天就显著,当把CUPED估计用的样本减小一半后显著性依旧超过直接使用T-test.
image.png-655.1kB

Netflix 多种方法的实际效果对比

Huizhi Xie,Juliette Aurisset.Improving the Sensitivity of Online Controlled Experiments: Case Studies at Netflix

Netflix尝试了一种新的stratification, 上述论文中的stratification被称做post-stratification由于它只在估计实验效果时用到分组,这时用pre-experiment估计的分组几率会和随机AB分组获得的实验中的分组几率存在必定差别,因此Netflix尝试在实验前就进行分层分组。经过多个实验结果,Netflix获得如下结论:

  • 大样本下,post-strat在实际中更灵活和pre-strat表现至关
  • 可否成功找到和实验核心指标相关的covariate是成功的关键

Booking.com 新日历交互对用户影响

How Booking.com increases the power of online experiments with CUPED

实验效果对好比下,CUPED用更少的样本更短的时间获得了显著的结果。了解细节请戳上面的博客,做者讲的很是通俗易懂。
image.png-152.8kB

想更多了解AB实验高端系列的朋友,戳这里呦👇

AB实验的高端玩法系列1-实用HTE(Heterogeneous Treatment Effects)论文github收藏


Ref

  1. A/B Testing for the Next Decade. CHALLENGES, COMPETITIONS AND OPPORTUNITIES. ALEX DENG @ MICROSOFT 2015
相关文章
相关标签/搜索