A/B測試是基於數據來進行優選的經常使用方法,可是你真的瞭解A/B測試背後的統計學原理嗎?當A/B測試遇到非簡單狀況時(如分組不夠隨機時,或用戶量不夠大到能夠忽略組間差別,或不但願大規模A/B測試長期影響一部分用戶的收益),該怎樣經過掌握理論知識來更好的指導實踐呢?本文嘗試經過由淺入深的介紹,但願可以幫助你們對A/B測試有更加深刻的理解。算法
當面對衆多選擇時,咱們應該怎麼選才能最大化咱們的收益(或者說最小化咱們的開銷)呢?舉例來講,怎麼選擇最優的上班的路線才能使途中花費的時間最少?在這個例子中,咱們的收益多是依據於上班時間,但一樣能夠是燃料成本或交通時間。機器學習
任何問題,只要它的每一個選項可以被屢次進行測試,而且每一個選項在被測試時都能返回固定的結果,那麼它就能使用A/B測試技術來進行優化。在上述例子中,天天的上下班路線是肯定的,因此咱們可以在帳本中記下往返路線的長度。長此以往,上下班的人會從數據中發現到一些模式(例如路線A比路線B花的時間更少),而後最終一致選擇某條路線。那麼什麼樣的路線對於用戶來講纔是一個好的方案呢?是考慮路線A仍是B?何時用戶纔有充分的數據去肯定哪條線路是最好的?測試線路好與很差的最優策略又是什麼?圖1用形式化歸納定義了問題。ide
圖1 形式化定義的問題。在這個場景中,參與的用戶正面臨一個選擇,根據他的決策會生成一個結果,而這個結果會對應一份給參與者的反饋。假設用戶持續地暴露於這個決策,他應該怎麼制定得到最大收益(或等效地說,最小成本)的策略?佈局
圖1中假定了用戶屢次處於須要進行選擇的場景中,每一次進行決策都會達成一項結果,而這個結果會關聯相應的反饋。在上下班這個例子中,假定他天天都須要上下班,並且他每次上下班都必須進行線路的選擇,產出的結果是此次上下班中全部因素的結合體,反饋就是從這些因素中構建出來的(陳運文 達觀數據)。學習
這是個淺顯的例子,在互聯網產品研發時,有大量相似的場景須要作出各類正確的選擇,例如:測試
常常遇到的問題是,咱們應該怎麼評估各不相同的決策,以及應該採用哪些策略來測試咱們的產出? A/B測試(A/B testing)就是其中之一的方法。A/B測試近年來很受歡迎,但大部分產品經理也許會簡單地認爲它只不過是一種包含兩個組的實驗,其實背後有更爲複雜的數學統計理論知識。優化
接下來讓咱們深刻一點了解具體細節:當進行A/B測試時,一般會採用兩個(或多個)組:A組和B組。第一個組是對照組,第二個組會改變其中一些因素。就以着陸頁優化爲例,A組會展現現有的着陸頁,B組會展現一個內容或者內容做了某些修改的新着陸頁。A/B測試的目的就是嘗試瞭解新的佈局是否在統計上顯著地改變了轉化率。網站
特別值得注意的是,將用戶分配到對應的組須要通過深思熟慮。對於A/B測試,咱們能夠高效地進行隨機分組。當用戶數量較大時,各組間用戶行爲能夠假設是相同的(即組間沒有誤差)。可是,這裏有三個很是重要的關鍵點,是你們有必要進一步理解其數學理論原理的緣由:搜索引擎
假設咱們已經構建了兩組數目較大的用戶組,這些用戶組的區別僅在於他們到達的着陸頁。咱們如今但願能測試兩組間的轉化率在統計上是否存在明顯差別。因爲樣本量大,咱們能夠採用雙樣本單尾z-檢驗(two-sample, one-tailed z-test)。另外,對於較小的樣本集合,咱們能夠依賴於t-檢驗。編碼
z檢驗(z-test)是在數據是正態分佈和隨機抽樣的假設下運行的,目的是驗證測試集(B組)是否與該對照集(A組)有顯著不一樣,可是如何執行這個測試呢?
假設有來自A組和B組中的每一組的5,000個樣本。咱們須要一個數學公式來講明咱們的零假設(null hypothesis)——兩組羣體的轉化率沒有顯著的正差別,和備擇假設(或稱對立假設,alternative hypothesis)——不一樣人羣間的轉化率確實存在着正差別。
咱們可將採樣轉化率視爲一個正態分佈的隨機變量,也就是說,採樣的轉化率是在正態分佈下對轉化率的一個觀測。要了解這一點,請考慮從同一組中提取多個樣本進行實驗將致使略有不一樣的轉化率。每當對某組進行抽樣時,可得到羣體轉化率的估計,對於A組和B組都是如此。爲此咱們提出一個新的正態隨機變量,它是A和B組的隨機變量的組合,是差值的分佈。讓咱們用X來表示這個新的隨機變量,定義爲: X=X_e-X_n
其中, X_e 表示實驗組的轉化率的隨機變量, X_n 表示對照組的轉化率的隨機變量。如今咱們能夠寫出零假設和備擇假設。零假設能夠表示爲: H_0:X=0
這表示實驗組和對照組是相同的。兩個隨機變量 X_e 和 X_n 分佈在相同的羣體平均值周圍,因此咱們的新隨機變量X應該分佈在0左右。咱們的備擇假設能夠表示以下: H_a:X>0
實驗組的隨機變量的指望值大於對照組的指望值;該羣體的平均值較高。
咱們能夠在零假設的前提下,對X的分佈執行單尾z檢驗,以肯定是否有證據支持備擇假設。爲了達到這個目的,咱們對X進行採樣,計算標準分,並測試已知的顯著性水平。
X的採樣等效於運行兩個實驗,肯定它們各自的轉化率,並將對照組和實驗組的轉化率相減。按照標準分的定義,能夠寫做:
其中, P_{experiment} 是實驗組的轉化率, P_{control} 是對照組的轉化率,SE是轉化率差值的標準差。
爲肯定標準偏差,注意到轉化過程是符合二項分佈的,所以訪問該網站能夠被看做單次伯努利試驗(single Bernoulli trial),而積極結果(完成轉化)的可能性是未知的。假設樣本數量足夠大,咱們可使用普遍採用的Wald方法(參考Lawrence D. Brown, T. Tony Cai, and Anirban DasGupta, 「Confidence Intervals for a Binomial Proportion and Asymptotic Expansions,」 The Annals of Statistics 30, no. 1 (2002): 160–201.)將該分佈近似爲正態分佈。爲了捕獲特定轉化率的不肯定性,咱們能夠將標準偏差(SE)寫入實驗組和對照組,其中p是轉化的可能性,n是樣本數量,具體以下:
從二項分佈(np(1-p))的方差獲得分子,而分母表示當採用更多的樣本時,轉化率的偏差會隨之降低。請注意正面結果的機率等同於轉化率,而且由於兩個變量的標準偏差能夠經過相加來合併,獲得以下結果:
經過替換,可得到以下的z檢驗公式,這是一個符合二項分佈的Wald(或正態)區間的公式:
z的值越大,反對零假設的證據就越多。爲了得到單尾測試的90%置信區間,咱們的z值將須要大於1.28。這實際上這是指在零假設(A組和B組的人口平均值是相同的)的條件下,等於或大於這個轉化率差值的偶然發生的機率小於10%。 換句話說,在對照組和實驗組的轉化率來自具備相同平均值的分佈的假設前提下,若是運行相同的實驗100次,只會有10次具備這樣的極端值。咱們能夠經過95%的置信區間,更嚴格的邊界和更多的證據來反對零假設,這時須要將z值增長到1.65。
研究影響z大小的因素會帶來不少有用的幫助。很顯然,若是在一個給定的時間點從一個實驗集和一個對照集中提取兩個轉化率,轉化率的差值越大將致使z分數越大。所以就有了更多的證據代表兩個集合分別來自不一樣的人羣,並且這些人羣帶有不一樣的均值。然而樣品的數量也很重要,如你所見,大量樣本將致使整體較小的標準偏差。這代表運行實驗的時間越長,轉化率的估算越準確。
設想你在負責大型零售網站,設計團隊剛剛修改了着陸頁。每週有約20,000用戶,並能夠量化用戶的轉化率:即購買產品的百分比。設計團隊向你保證新網站將帶來更多的客戶。但你不太肯定,但願運行A / B測試來看看效果是否真的會提升。
用戶在第一次訪問網站時被隨機分配到A組或B組,並在實驗期間始終保留在該組中,實驗結束時評估兩組用戶的平均轉化率。統計結果是,新着陸頁的平均轉化率是0.002,而原先的着陸頁的平均轉化率是0.001。在着陸頁永久更改成新設計以前,你須要知道這一增加是否足夠明確。下面這段代碼幫你回答這個問題。
這段代碼獲取實驗中z的值,在上述參數條件下z值爲1.827,超過了92%置信區間,但不在95%的區間內。能夠說,從控制分佈中抽取數據的機率小於0.08。所以在該區間內數據提高是顯著的。咱們應該否認零假設,接受備擇假設,即組之間有差別,第二組具備較高的轉化率。若是咱們控制了用戶組的全部其餘方面,就意味着網站的新設計產生了積極的效果。
你應該可以從代碼中看到轉化率分佈的標準偏差對返回的z值有直接影響。 對給定的常數值p_experiment和p_control,兩個組的SE越高,z的數值越小,結果就越不顯著。還注意到因爲SE的定義,z的數值與樣本的數量具備直接關係,對於給定的轉換機率也一樣如此。圖2展現了這種關係。
圖2 展現了A / B組的固定轉化率,以及A / B組中的用戶數量和z值之間的關係。 假設轉化率不會隨着咱們收集更多數據而改變,咱們須要每一個組中大約3,000個用戶達到70%的置信區間。 要達到80%的置信區間時須要每組約5000個用戶,達到90%時須要 7500個用戶,達到95%時須要12000個用戶。
圖2中可見對於兩個組的給定轉化率,測試組中的用戶越多,備擇假設的證據就越充分。直觀上來看這很容易理解:當收集的數據越多,咱們對結果越自信!咱們也能夠繪製一張相似的圖,保持用戶數量不變,改變組之間的差別。但必須注意,對正在關注的應用,不該該指望效果的大幅度變化。
對於很是小的效果變化,每每都須要建立至關大的對照組和測試組來實現AB測試,這個的代價每每是很大的。設想下在零售商場中,天天觀察到的用戶數量,每每須要好久的時間才能得出明顯的結論。在實際業務應用中,會遇到的問題是:當你運行測試時總體運行的效果是受到很大影響的,由於必須有一半的用戶處於效果不佳的實驗組,或者有一半的用戶處於效果不佳的對照組,並且你必須等待測試完成才能中止這種局面。
這是被稱爲探索利用難題(explore-exploit conundrum)的一個經典問題。咱們須要運行次優方法,以探索空間,並找到效果更好的解決方案,而一旦找到了更好的解決方案,咱們還須要儘快利用它們來實現效果提高。可否能夠更快地利用新的解決方案,而沒必要等待測試徹底完成呢?答案是確定的。下面簡單介紹下多臂賭博機(multi-armed bandit,MAB)的概念。
多臂賭博機(multi-armed bandit,MAB)的名字來源於著名的賭博遊戲角子賭博機(one-armed bandit)。對那些從沒去過賭場的人,咱們來作下解釋:角子機(又稱老虎機)是一個須要你拉槓桿(或搖臂)的賭博機器,根據機器展現的數值,你可能會獲得一筆獎勵,也可能(更大概率)得不到任何東西。和你想的同樣,這些機器的設置都對莊家有利,因此能獲的獎勵的概率是很是很是小的。
多臂賭博機(理論上的)擴展了這種形式,想象你面對的是一堆角子賭博機,每一個賭博機都被分配按照一個獨立的機率進行獎勵。做爲一個玩家,你不知道在這些機器後的獲獎機率,你惟一能夠找到獲獎機率的方法是進行遊戲。你的任務是經過玩這些機器,最大限度地提升所獲的獎勵。那麼你應該使用什麼策略呢?
爲了更嚴格地定義問題,咱們經過數學形式化來表達,假設如今有k個賭博機,可觀察到的每臺的獲獎機率等於 p_k 。假設一次只能拉動一個搖臂,而且賭博機只會按照它關聯的機率機型獎勵。這是一個設置了限定局數的有限次的遊戲。在遊戲期間任意時間點時,水平線H被定義爲容許的剩餘遊戲的數量。
對全部機器用戶會嘗試最大化的獲獎回報。在遊戲中的任一時間點,咱們均可以經過使用稱爲遺憾值(regret)來度量用戶的表現。遺憾值的意思是,假設用戶能在每一步選擇最優的賭博機,獲得的獎勵和目前得到的實際獎勵的差值。遺憾值的數學定義爲:
其中T表示咱們到目前爲止進行過的步數, r_t 表示在第t步得到的獎勵, mu_{opt} 表示每一局從最優賭博機返回來的指望獎勵。遺憾值的數值越低,策略越優。但由於這個度量值會受到偶然性的影響(獎勵可能會被從最優賭博機選擇中得到的指望獎勵更高),咱們能夠選擇使用遺憾值的指望值代替,定義爲:
其中 μ_t 是在第t步從賭博機中得到的平均獎勵(不可觀測的)。由於第二項是來自所選策略的指望獎勵,因此它將小於或等於來自最優策略(每一步都選擇最優的賭博機)的指望獎勵。
Epsilon優先(Epsilon first)是MAB策略中最簡單的一種方式,它被認爲和事先執行A/B測試方法具備同等意義。給定ε,執行探索空間操做的次數爲(1 – ε) × N,其中N是遊戲中總共的局數,剩餘的次數都是執行後續探索的局數。
update_best_bandit算法會持續統計記錄每個賭博機的獎勵收入和遊戲局數。變best_bandit會在每一局結束進行更新,記錄當前具備最高獲獎機率的賭博機的編號,流程以下:
Epsilon貪婪(epsilon-greedy)策略中,ε表示咱們進行探索空間的機率,和進行利用已知最優搖臂的事件互斥
該方法的特色:不須要等到探索階段完成,才能開始利用有關賭博機的獎勵表現的知識。但要當心,該算法不會考慮效果數據的統計意義。所以可能發生這樣的狀況:個別賭博機的獎勵峯值致使後續的全部局遊戲都錯誤地選擇了這個賭博機(陳運文 達觀數據)。
Epsilon遞減(epsilon-decreasing)策略在實驗開始階段,會有一個很高的ε值,因此探索空間的可能性很高。ε值會隨着水平線H上升而不斷遞減,導致利用似然知識的可能性更高。
須要注意這裏有幾種方法去來選擇一個最優的速率來更新ε值,具體取決於賭博機的數量,以及他們各自進行獎勵的權重。
與A / B測試相似,貝葉斯賭博機(Bayesian bandits)假設每一個賭博機的獲獎機率被建模爲獲獎機率的分佈。當咱們開始實驗時,每一個賭博機都有一個通用的先驗機率(任意賭博機的獎勵比率初始都是同等的)。在某一個賭博機上進行的局數越多,咱們對它的獎勵信息就瞭解越多,因此基於可能的獎勵機率更新其獲獎機率分佈。當須要選擇玩哪個賭博機的時候,從獲獎機率分佈中採樣,並選擇對應樣本中具備最高獎勵比率的賭博機。圖3提供了在給定時間內對三個賭博機所含信息的圖形化表示。
圖3 使用貝葉斯賭博機策略對三個賭博機的獲獎機率信息進行建模。第一、2和3個賭博機的平均獲獎率分別爲0.一、0.3和0.4。 第1個賭博機具備較低的平均值並且方差也比較大,第2個賭博機具備較高的平均值和較小的方差,第3個賭博機具備更高的平均值和更小的方差。
能夠看到關於賭博機的獲獎機率分佈的信息被編碼爲三個分佈。每一個分佈具備遞增的平均值和遞減的方差。所以,咱們不太肯定獎勵指望值爲0.1的真實獎勵率,最可靠的是獎勵指望值爲0.4的賭博機。由於賭博機的選擇是經過對分佈進行抽樣來進行的,因此分佈指望值是0.1的賭博機的搖臂也可能被拉動。這個事件會發生在第2個賭博機和第3個賭博機的採樣樣本獎勵值異常小,並且第1個賭博機的採樣樣本異常大時,相應代碼以下(陳運文 達觀數據):
總結:A/B測試和貝葉斯賭博機的特色
A/B測試和貝葉斯賭博機的各自的優勢和侷限是:二者有各自適用的場景,也驗證的變量數量也各不相同,具體以下表。
此外,兩個方法的收斂速度也很不同。在A/B測試中是指得到統計意義,在貝葉斯賭博機中是指累積遺憾值再也不增長。以本章最開始的網站優化爲例,首先請注意,任何行爲的改變多是微小的(<0.01),而咱們已經知道貝葉斯賭博機相比大的改變提高,須要更多的收斂時間。若是加了多種選擇,在同一個實驗中測試多種登錄頁面,將更加會影響收斂速度。假如用戶變化致使的底層分佈變的比模型收斂更快呢?好比,季節趨勢,銷售或者其餘因素可能會影響。
顯然,收集的數據越多,對效果的潛在變化的把握度就越高。當2個組劃分自己就存在統計差別時,經過多臂賭博機而不是A/B測試的方法能夠從機率上修正咱們選擇的分佈。本文還重點介紹了z檢驗(z-test)的數學知識,由於其構成了A/B測試的統計理論基礎。
如對文本挖掘領域的技術實踐感興趣,可前往下載達觀研究院編寫而成的《達觀數據技術實踐特刊》,該書集合了當下最熱門的人工智能領域天然語言處理、個性化推薦、垂直搜索引擎三大方向的技術實踐總結,融合了達觀技術團隊在服務華爲、中興、招行、平安、京東雲等不一樣行業上百家企業後的技術感悟,是國內第一本系統介紹NLP、深度學習等AI技術實踐應用的電子刊,歡迎各位技術愛好者前往下載。
【本文版權歸達觀數據(http://www.datagrand.com)全部,如需轉載請註明出處。】
【本文做者】陳運文 達觀數據CEO 【做者簡介】達觀數據CEO。復旦大學博士,知名計算機技術專家,國際計算機學會(ACM)和電子電器工程師學會(IEEE)會員,中國計算機學會(CCF)高級會員,上海浦東「百人計劃」專家和政協委員,在人工智能領域有30餘項國家發明專利,曾擔任盛大文學首席數據官、騰訊文學高級總監、百度核心技術研發工程師。在機器學習、天然語言處理、搜索推薦等領域有豐富的研究和工程經驗,成功帶領達觀數據成爲中國文本智能處理領域的領先企業。