當面對眾多選擇時,如何選才能最大化收益(或者說最小化我們的開銷)?比如,怎麼選擇最優的上班的路線才能使途中花費的時間最少?假設每天上下班路線是確定的,我們便可以在帳本中記下往返路線的長度。A/B測試便是基於數據來進行優選的常用方法,在記錄多次上班路線長度後,我們便會從數據中發現到一些模式(例如路線A比路線B花的時間更少),然後最終一致選擇某條路線。當A/B測試遇到非簡單情況時(如分組不夠隨機時,或用戶量不夠大到可以忽略組間差異,或不希望大規模A/B測試長期影響一部分用戶的收益),該怎樣通過掌握理論知識來更好的指導實踐呢?本文嘗試通過由淺入深的介紹,希望能夠幫助大家對A/B測試有更加深入的理解。NO.1達觀數據A/B測試數學原理為什麼需要A/B測試任何問題,只要它的每個選項能夠被多次進行測試,並且每個選項在被測試時都能返回固定的結果,那麼它就能使用A/B測試技術來進行優化。在上述例子中,每天的上下班路線是確定的,所以我們能夠在帳本中記下往返路線的長度。那麼什麼樣的路線對於用戶來說才是一個好的方案呢?是考慮路線A還是B?什麼時候用戶才有充分的數據去確定哪條線路是最好的?測試線路好與不好的最優策略又是什麼?圖1用形式化概括定義了問題。
圖1 形式化定義的問題在這個場景中,參與的用戶正面臨一個選擇,根據他的決策會生成一個結果,而這個結果會對應一份給參與者的反饋。假設用戶持續地暴露於這個決策,他應該怎麼制定獲得最大收益(或等效地說,最小成本)的策略?圖1中假定了用戶多次處於需要進行選擇的場景中,每一次進行決策都會達成一項結果,而這個結果會關聯相應的反饋。在上下班這個例子中,假定他每天都需要上下班,而且他每次上下班都必須進行線路的選擇,產出的結果是這次上下班中所有因素的結合體,反饋就是從這些因素中構建出來的(陳運文 達觀數據)。這是個淺顯的例子,在網際網路產品研發時,有大量類似的場景需要做出各種正確的選擇,例如:1著陸頁優化(Landing-page optimization)在用戶點擊去往的頁面(著陸頁),如何獲得最大的轉化率(常用計算方法為有購買行為或深度網頁交互行為的用戶數佔網站訪問總用戶數的比率)。決策要考慮到著陸頁的形式和內容(要從可能已有的3或4個備選方案中做出選擇),希望能夠從候選集合中選出最好的著陸頁,以能夠吸引來訪的用戶,並讓深度交互或者購買行為的概率最大化。2廣告創意優化(Ad creative optimization)在線廣告提出了許多適合機器學習技術應用的挑戰,其中之一就是如何選擇廣告的形式和內容。當我們決定將要進行廣告展示,以及確定了廣告的價格後,在這個廣告位上選擇放置什麼廣告呢?我們需要對大量的決策進行測試,選出正確的廣告創意組合。NO.2達觀數據A/B測試的數學原理什麼是A/B測試經常遇到的問題是,我們應該怎麼評估各不相同的決策,以及應該採用哪些策略來測試我們的產出? A/B測試(A/B testing)就是其中之一的方法。A/B測試近年來很受歡迎,但大部分產品經理也許會簡單地認為它只不過是一種包含兩個組的實驗,其實背後有更為複雜的數學統計理論知識。具體細節當進行A/B測試時,通常會採用兩個(或多個)組:A組和B組。第一個組是對照組,第二個組會改變其中一些因素。就以著陸頁優化為例,A組會展示現有的著陸頁,B組會展示一個內容或者內容作了某些修改的新著陸頁。A/B測試的目的就是嘗試了解新的布局是否在統計上顯著地改變了轉化率。特別值得注意的是,將用戶分配到對應的組需要經過深思熟慮。對於A/B測試,我們可以高效地進行隨機分組。當用戶數量較大時,各組間用戶行為可以假設是相同的(即組間沒有偏差)。但是,這裡有三個非常重要的關鍵點,是大家有必要進一步理解其數學理論原理的原因:1問題1怎樣驗證兩個組的用戶的行為是無偏差、完全相同的2問題2當兩個組的用戶行為不完全相同時(例如分組不夠隨機或者組內用戶數量較小時),該如何設計AB測試以實現期望的驗證結果3問題3當用戶基礎行為受其他因素影響發生整體變化了呢?例如季節、時間波動、熱度等因素影響下,怎樣更好的剔除幹擾來評估結果NO.3達觀數據A/B測試的數學原理AB測試的統計理論假設我們已經構建了兩組數目較大的用戶組,這些用戶組的區別僅在於他們到達的著陸頁。我們現在希望能測試兩組間的轉化率在統計上是否存在明顯差異。由於樣本量大,我們可以採用雙樣本單尾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來表示這個新的隨機變量,定義為:
其中,Xe表示實驗組的轉化率的隨機變量,Xn表示對照組的轉化率的隨機變量。現在我們可以寫出零假設和備擇假設。零假設可以表示為:
這表示實驗組和對照組是相同的。兩個隨機變量Xe和Xn分布在相同的群體平均值周圍,所以我們的新隨機變量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分數越大。因此就有了更多的證據表明兩個集合分別來自不同的人群,而且這些人群帶有不同的均值。然而樣品的數量也很重要,如你所見,大量樣本將導致總體較小的標準誤差。這表明運行實驗的時間越長,轉化率的估算越準確。NO.4達觀數據A/B測試的數學原理評估效果的代碼實現設想你在負責大型零售網站,設計團隊剛剛修改了著陸頁。每周有約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圖2展示了A / B組的固定轉化率,以及A / B組中的用戶數量和z值之間的關係。假設轉化率不會隨著我們收集更多數據而改變,我們需要每個組中大約3,000個用戶達到70%的置信區間。要達到80%的置信區間時需要每組約5000個用戶,達到90%時需要 7500個用戶,達到95%時需要12000個用戶。圖2中可見對於兩個組的給定轉化率,測試組中的用戶越多,備擇假設的證據就越充分。直觀上來看這很容易理解:當收集的數據越多,我們對結果越自信!我們也可以繪製一張類似的圖,保持用戶數量不變,改變組之間的差異。但必須注意,對正在關注的應用,不應該期望效果的大幅度變化。NO.5達觀數據A/B測試的數學原理A/B測試方法的副作用和處理辦法對於非常小的效果變化,往往都需要創建相當大的對照組和測試組來實現AB測試,這個的代價往往是很大的。設想下在零售商場中,每天觀察到的用戶數量,往往需要很久的時間才能得出明顯的結論。在實際業務應用中,會遇到的問題是:當你運行測試時整體運行的效果是受到很大影響的,因為必須有一半的用戶處於效果不佳的實驗組,或者有一半的用戶處於效果不佳的對照組,而且你必須等待測試完成才能停止這種局面。這是被稱為探索利用難題(explore-exploit conundrum)的一個經典問題。我們需要運行次優方法,以探索空間,並找到效果更好的解決方案,而一旦找到了更好的解決方案,我們還需要儘快利用它們來實現效果提升。能否可以更快地利用新的解決方案,而不必等待測試完全完成呢?答案是肯定的。下面簡單介紹下多臂賭博機(multi-armed bandit,MAB)的概念。1多臂賭博機的定義多臂賭博機(multi-armed bandit,MAB)的名字來源於著名的賭博遊戲角子賭博機(one-armed bandit)。對那些從沒去過賭場的人,我們來做下解釋:角子機(又稱老虎機)是一個需要你拉槓桿(或搖臂)的賭博機器,根據機器展示的數值,你可能會得到一筆獎勵,也可能(更大機率)得不到任何東西。和你想的一樣,這些機器的設置都對莊家有利,所以能獲的獎勵的機率是非常非常小的。多臂賭博機(理論上的)擴展了這種形式,想像你面對的是一堆角子賭博機,每個賭博機都被分配按照一個獨立的概率進行獎勵。作為一個玩家,你不知道在這些機器後的獲獎概率,你唯一可以找到獲獎概率的方法是進行遊戲。你的任務是通過玩這些機器,最大限度地提高所獲的獎勵。那麼你應該使用什麼策略呢?2多臂賭博機策略為了更嚴格地定義問題,我們通過數學形式化來表達,假設現在有k個賭博機,可觀察到的每臺的獲獎概率等於p_k。假設一次只能拉動一個搖臂,並且賭博機只會按照它關聯的概率機型獎勵。這是一個設置了限定局數的有限次的遊戲。在遊戲期間任意時間點時,水平線H被定義為允許的剩餘遊戲的數量。對所有機器用戶會嘗試最大化的獲獎回報。在遊戲中的任一時間點,我們都可以通過使用稱為遺憾值(regret)來度量用戶的表現。遺憾值的意思是,假設用戶能在每一步選擇最優的賭博機,得到的獎勵和目前獲得的實際獎勵的差值。遺憾值的數學定義為:
其中T表示我們到目前為止進行過的步數,r_t表示在第t步獲得的獎勵,u_opt表示每一局從最優賭博機返回來的期望獎勵。遺憾值的數值越低,策略越優。但因為這個度量值會受到偶然性的影響(獎勵可能會被從最優賭博機選擇中獲得的期望獎勵更高),我們可以選擇使用遺憾值的期望值代替,定義為:
其中μ_t是在第t步從賭博機中獲得的平均獎勵(不可觀測的)。因為第二項是來自所選策略的期望獎勵,所以它將小於或等於來自最優策略(每一步都選擇最優的賭博機)的期望獎勵。3Epsilon優先方法Epsilon優先(Epsilon first)是MAB策略中最簡單的一種方式,它被認為和事先執行A/B測試方法具有同等意義。給定ε,執行探索空間操作的次數為(1 – ε) × N,其中N是遊戲中總共的局數,剩餘的次數都是執行後續探索的局數。update_best_bandit算法會持續統計記錄每一個賭博機的獎勵收入和遊戲局數。變best_bandit會在每一局結束進行更新,記錄當前具有最高獲獎概率的賭博機的編號,流程如下:
4Epsilon貪婪Epsilon貪婪(epsilon-greedy)策略中,ε表示我們進行探索空間的概率,和進行利用已知最優搖臂的事件互斥
該方法的特點:不需要等到探索階段完成,才能開始利用有關賭博機的獎勵表現的知識。但要小心,該算法不會考慮效果數據的統計意義。因此可能發生這樣的情況:個別賭博機的獎勵峰值導致後續的所有局遊戲都錯誤地選擇了這個賭博機(陳運文 達觀數據)。5Epsilon遞減Epsilon遞減(epsilon-decreasing)策略在實驗開始階段,會有一個很高的ε值,所以探索空間的可能性很高。ε值會隨著水平線H上升而不斷遞減,致使利用似然知識的可能性更高。
需要注意這裡有幾種方法去來選擇一個最優的速率來更新ε值,具體取決於賭博機的數量,以及他們各自進行獎勵的權重。6貝葉斯賭博機與A / B測試類似,貝葉斯賭博機(Bayesian bandits)假設每個賭博機的獲獎概率被建模為獲獎概率的分布。當我們開始實驗時,每個賭博機都有一個通用的先驗概率(任意賭博機的獎勵比率初始都是同等的)。在某一個賭博機上進行的局數越多,我們對它的獎勵信息就了解越多,所以基於可能的獎勵概率更新其獲獎概率分布。當需要選擇玩哪一個賭博機的時候,從獲獎概率分布中採樣,並選擇對應樣本中具有最高獎勵比率的賭博機。圖3提供了在給定時間內對三個賭博機所含信息的圖形化表示。
圖3使用貝葉斯賭博機策略對三個賭博機的獲獎概率信息進行建模。第1、2和3個賭博機的平均獲獎率分別為0.1、0.3和0.4。第1個賭博機具有較低的平均值而且方差也比較大,第2個賭博機具有較高的平均值和較小的方差,第3個賭博機具有更高的平均值和更小的方差。可以看到關於賭博機的獲獎概率分布的信息被編碼為三個分布。每個分布具有遞增的平均值和遞減的方差。因此,我們不太確定獎勵期望值為0.1的真實獎勵率,最可靠的是獎勵期望值為0.4的賭博機。因為賭博機的選擇是通過對分布進行抽樣來進行的,所以分布期望值是0.1的賭博機的搖臂也可能被拉動。這個事件會發生在第2個賭博機和第3個賭博機的採樣樣本獎勵值異常小,而且第1個賭博機的採樣樣本異常大時,相應代碼如下(陳運文 達觀數據):
NO.6達觀數據A/B測試的數學原理總結A/B測試和貝葉斯賭博機的各自的優點和局限是:兩者有各自適用的場景,也驗證的變量數量也各不相同,具體如下表。
此外,兩個方法的收斂速度也很不一樣。在A/B測試中是指獲得統計意義,在貝葉斯賭博機中是指累積遺憾值不再增加。以本章最開始的網站優化為例,首先請注意,任何行為的改變可能是微小的(<0.01),而我們已經知道貝葉斯賭博機相比大的改變提升,需要更多的收斂時間。如果加了多種選擇,在同一個實驗中測試多種登陸頁面,將更加會影響收斂速度。假如用戶變化導致的底層分布變的比模型收斂更快呢?比如,季節趨勢,銷售或者其他因素可能會影響。
顯然,收集的數據越多,對效果的潛在變化的把握度就越高。當2個組劃分本身就存在統計差異時,通過多臂賭博機而不是A/B測試的方法可以從概率上修正我們選擇的分布。本文還重點介紹了z檢驗(z-test)的數學知識,因為其構成了A/B測試的統計理論基礎。ABOUT關於作者陳運文 達觀數據 CEO。復旦大學博士,知名計算機技術專家,國際計算機學會(ACM)和電子電器工程師學會(IEEE)會員,中國計算機學會(CCF)高級會員,上海浦東「百人計劃」專家和政協委員,在人工智慧領域有30餘項國家發明專利,曾擔任盛大文學首席數據官、騰訊文學高級總監、百度核心技術研發工程師。在機器學習、自然語言處理、搜索推薦等領域有豐富的研究和工程經驗,成功帶領達觀數據成為中國文本智能處理領域的領先企業。+相關閱讀技術乾貨 | 如何做好文本關鍵詞提取?從三種算法說起技術乾貨 | 一文詳解LDA主題模型技術乾貨 | fastText原理及實踐技術乾貨|集成學習算法(Ensemble Method)淺析技術乾貨 | XGBoost原理解析技術乾貨 | 一文詳解高斯混合模型原理