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


背景

AB實驗可謂是互聯網公司進行產品迭代增加用戶粘性的大殺器。但人們對AB實驗的應用往往只停留在開實驗算P值,然后let it go。。。let it go 。。。

讓我們把AB實驗的結果簡單的拆解成兩個方面:

\[P(實驗結果顯著) = P(統計檢驗顯著|實驗有效)× P(實驗有效) \]

如果你的產品改進方案本來就沒啥效果當然怎么開實驗都沒用,但如果方案有效,請不要讓 statictical Hack 浪費一個優秀的idea

如果預期實驗效果比較小,有哪些基礎操作來增加實驗顯著性呢?

通常情況下為了增加一個AB實驗的顯著性,有兩種常見做法:增加流量或者增長實驗時間。但對一些可能對用戶體驗產生負面影響或者成本較高的實驗來說,上述兩種方法都略顯粗糙。

對於成熟的產品來說大多數的改動帶來的提升可能都是微小的!

在數據為王的今天,我們難道不應該采用更精細化的方法來解決問題么?無論是延長實驗時間還是增加流量一方面都是為了增加樣本量,因為樣本越多,方差越小,p值越顯著,越容易檢測出一些微小的改進。

因此如果能合理的通過統計方法降低方差,就可能更快,更小成本的檢測到微小的效果提升

CUPED(Controlled-experiment Using Pre-Experiment Data)應運而生。 下面我會簡單總結一下論文的核心方法,還有幾個Bing, Netflix 以及Booking的應用案例。

論文

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鏈接

核心方法總結

論文的核心在於通過實驗前數據對實驗核心指標進行修正,在保證無偏的情況下,得到方差更低, 更敏感的新指標,再對新指標進行統計檢驗(p值)。

這種方法的合理性在於,實驗前核心指標的方差是已知的,且和實驗本身無關的,因此合理的移除指標本身的方差不會影響估計效果。

作者給出了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是實驗前的每周房間預定量,博客鏈接在案例分享里。

實戰攻略

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.

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用更少的樣本更短的時間得到了顯著的結果。了解細節請戳上面的博客,作者講的非常通俗易懂。

想更多了解AB實驗高端系列的朋友,戳這里呦👇

AB實驗的高端玩法系列1 - AB實驗人群定向/個體效果差異/HTE 論文github收藏
AB實驗的高端玩法系列3 - AB組不隨機?觀測試驗?Propensity Score


Ref

  1. A/B Testing for the Next Decade. CHALLENGES, COMPETITIONS AND OPPORTUNITIES. ALEX DENG @ MICROSOFT 2015


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM