AB實驗可謂是互聯網公司進行產品迭代增長用戶粘性的大殺器。但人們對AB實驗的應用每每只停留在開實驗算P值,而後let it go。。。let it go 。。。html
讓咱們把AB實驗的結果簡單的拆解成兩個方面:
\[P(實驗結果顯著) = P(統計檢驗顯著|實驗有效)× P(實驗有效)\]
若是你的產品改進方案原本就沒啥效果固然怎麼開實驗都沒用,但若是方案有效,請不要讓 statictical Hack 浪費一個優秀的ideagit
若是預期實驗效果比較小,有哪些基礎操做來增長實驗顯著性呢?github
一般狀況下爲了增長一個AB實驗的顯著性,有兩種常見作法:增長流量或者增加實驗時間。但對一些可能對用戶體驗產生負面影響或者成本較高的實驗來講,上述兩種方法都略顯粗糙。ide
對於成熟的產品來講大多數的改動帶來的提高可能都是微小的!post
在數據爲王的今天,咱們難道不該該採用更精細化的方法來解決問題麼?不管是延長實驗時間仍是增長流量一方面都是爲了增長樣本量,由於樣本越多,方差越小,p值越顯著,越容易檢測出一些微小的改進。ui
所以若是能合理的經過統計方法下降方差,就可能更快,更小成本的檢測到微小的效果提高idea
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兩種方式來修正指標,同時給出了在實際應用中可能碰到的一些問題以及解決方法.
這種方式針對離散變量,一句話歸納就是分組算指標。若是已知實驗覈心指標的方差很大,那麼能夠把樣本分紅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適用於連續變量。須要尋找和實驗覈心指標(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實際上是相同的原理,從兩個角度來看:
下圖摘自Booking的案例,他們的核心指標是每週的房間預約量,Covariate是實驗前的每週房間預約量,博客連接在案例分享裏。
這裏的選擇包括兩個方面,特徵的選擇和計算特徵的pre-experiment時間長度的選擇。
核心指標在per-experiment的估計一般是很好的covariate的選擇,且估計covariate選擇的時間段相對越長效果越好。時間越長covariate的覆蓋量越大,且受到短時間波動的影響越小估計更穩定。
這個現象在互聯網中很常見,新用戶或者好久不活躍的用戶都會面臨沒有近期行爲特徵的問題。做者認爲能夠結合stratification方法對有/無covariate的用戶進一步打上標籤。或者其實不只侷限於pre-experiment特徵,只要保證特徵不受到實驗影響post-experiment特徵也是能夠的。
而在Booking的案例中,做者選擇對這部分樣本不做處理,由於一般缺失值是用樣本均值來填充,在上述式子中就等因而不作處理。
Covariate選擇的核心是\(E(X^{treatment}) = E(X^{control})\),這一點不論你選擇什麼特徵, 是pre-experiment仍是post-experiment都要保證。
固然也有用CUPED來矯正實驗組對照組差別的,但這個內容不在這裏討論。
論文中做者在實際AB實驗中檢驗了CUPED的效果。Bing實驗檢測檢測加載時間對用戶點擊率的影響。 一個本來運行兩週只有個別天顯著的實驗在用CUPED調整後在第一天就顯著,當把CUPED估計用的樣本減小一半後顯著性依舊超過直接使用T-test.
Netflix嘗試了一種新的stratification, 上述論文中的stratification被稱做post-stratification由於它只在估計實驗效果時用到分組,這時用pre-experiment估計的分組機率會和隨機AB分組獲得的實驗中的分組機率存在必定差別,因此Netflix嘗試在實驗前就進行分層分組。經過多個實驗結果,Netflix獲得如下結論:
How Booking.com increases the power of online experiments with CUPED
實驗效果對好比下,CUPED用更少的樣本更短的時間獲得了顯著的結果。瞭解細節請戳上面的博客,做者講的很是通俗易懂。
AB實驗的高端玩法系列1-實用HTE(Heterogeneous Treatment Effects)論文github收藏
Ref