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
相關文章
相關標籤/搜索