提升使用者體驗的必殺器——A/B實驗統計方法解密
導讀:A/B 實驗是很多技術團隊非常關注的內容,本文內容由滴滴出行效能平臺部傾情呈現,介紹 A/B 實驗所涉及的重要統計學知識。
前言
持續快速有效的A/B實驗是實現業務從十到百增長、獲得更好的使用者體驗的必殺器,而其背後的黑科技來源於統計。本文將介紹使用Apollo進行A/B實驗所涉及的重要統計學知識,以幫助大家更好的設計實驗並解讀實驗結果,做出科學有效的資料驅動決策。
為什麼統計對於A/B實驗如此重要呢?因為A/B實驗從本質上來說是一個基於統計的假設檢驗過程,它首先對實驗組和對照組的關係提出了某種假設,然後計算這兩組資料、確定這兩組資料差異是否存在統計上的顯著性,最後根據上述結果對原假設做出判斷。但是事實上,我們關心的重點並不是實驗組和對照組這一小部分使用者,而是我們的新方案最終全量曝光給所有使用者會帶來多大的影響。如果這是一個不太成功的方案,直接全量上線,等到真正造成大量使用者損失就無法挽回了。而統計的價值在於其先驗性,能幫助我們在事情尚未發生時通過手頭有限的資訊來預測和估計我們不瞭解的結果,且具有一定的準確度。
因為統計能根據有限資訊一定程度上準確推測全量資訊,所以它滿足了我們同時驗證多個idea的需求。使得平臺可以同時並行跑大量實驗,大大提高測試效率。而測試效率與業務增長速度呈高度正相關,即使100個實驗裡有80個與預想的轉化率提升無關,也幫助驗證了100個idea,擋住了80個無效的嘗試,這就是為什麼統計對於A/B實驗來說如此有高價值的原因。
這看起來很簡單,但其實也不簡單。如果我們想知道兩個機器學習模型哪個使用者體驗更優,我們可以隨機選取10000個使用者做實驗,對5000個使用者採用第一個模型,另外5000個使用者採用第二個模型,經過一週的的觀察,得到第一個組轉化率為40%,第二個組轉化率為41%。那麼能否認為第二個模型的使用者體驗更好呢?如果簡單粗暴來看,41% 明顯高於40%,我們可以認為對於這10000個使用者來說,第二組的方案確實使用者體驗更好。但需要注意的是,這10000個使用者僅是這個實驗中的樣本,樣本永遠不可能是總體的完美代表,用樣本估計總體是有偏的,那麼這次估計可不可信,多大程度可信,這是統計需要解決的問題。
接下來,讓我們來快速定義一些術語:
總體 (Population): 我們最終關注的全部物件。例如,如果我們的實驗物件是10%的使用者,那麼它與剩下90%使用者組成的全部使用者是總體。
樣本 (Sample): 總體中的小部分使用者,這是我們的實驗物件。例如,如果我們的實驗物件是10%的使用者,那麼樣本就是這10%的使用者。
樣本量 (Sample Size): 樣本的總個數。
樣本統計量 (Sample Statistics): 它本身是個很寬泛的概念,可以是樣本均值,可以是比率, 可以是方差。但是在A/B實驗中,由於我們目標是瞭解實驗組和對照組方案的好壞,樣本統計量特指這兩組的差異, 如實驗組和對照組的轉化率之差,用p2-p1表示。
抽樣 (Sampling): 採用某種特定的方法,從總體中選取一部分有代表性樣本的方法,比如隨機抽樣。
分佈 (Distribution): 你可以把分佈想象成一個橫軸為觀測值,縱軸為出現頻率的圖,比如扔骰子只可能出現1-6這6種可能,重複扔50次骰子,它的分佈也許如下:
正態分佈 (Normal Distribution): 又叫高斯分佈。它的分佈圖是一個兩頭少/中間多的對稱的鐘形曲線。自然界的許多隨機事件都服從這種分佈, 如人的身高,體重。對於正態分佈的資料,有68.2%個落在距離總體均值1個標準差 (σ) 的範圍內,95.4%個落在距離總體均值2個標準差 (σ) 的範圍內,99.7%個落在距離總體均值3個標準差 (σ) 的範圍內(中心極限定理和正態分佈的運用),有95%個落在距離總體均值1.96倍個標準差 (σ) 的範圍內。
伯努利分佈 (Binomial Distribution): 只有0和1兩種取值。都可以表達為是或否的問題。例如,拋一次硬幣是正面向上嗎?新出生的小孩是女孩嗎?轉化率就滿足這種分佈。
中心極限定理 (Central Limit Theorem): 隨著抽樣次數增多,樣本均值的抽樣分佈趨向於服從正態分佈。這裡需要注意的是,抽樣次數並不是樣本量,一次實驗只是一次抽樣,只能得到一個樣本均值。而n次抽樣會得到n個值,這些值的分佈才是正態分佈。舉個例子,在下圖中當抽樣次數達到30次時,樣本均值的分佈逐漸呈一個對稱的鐘形曲線。中心極限定理是概率論的重要定理,它是接下來談到的顯著性檢驗的基礎。 如果一組資料屬於正態分佈,我們可以根據正態分佈的概率密度函式推算出置信區間或p-value,當一組資料不屬正態分佈時,我們仍然可以依據中心極限定理和正態分佈的函式推匯出置信區間和p-value。
關於置信區間和p-value在下文重點談到。
(Source: Dawson B, Trapp R G: Basic & Clinical Biostatistics, 4th Edition)
有了以上背景知識鋪墊,我們接下來繼續說A/B實驗。理想狀態中,樣本能夠完美的代表總體。例如:總體有100,000個使用者,有10,000個使用者成功轉化,那麼轉化率為10%。理想狀態中,抽取100個使用者做實驗,那麼一定有10個使用者轉化。在這個例子中,樣本的轉化率10%是嚴格等於總體轉化率10%的。但是現實沒有這麼完美。現實情況下,在這100個樣本中,也許只有2個人轉化,也許有20個人轉化。這就是樣本之間的波動。由於樣本的隨機性,樣本的觀測值(如轉化率)和總體的真實引數(如總體轉化率)存在差距。這種差距能用抽樣誤差衡量。 抽樣誤差越大,用樣本估計總體的結果就越不準確。正因為抽樣誤差的存在,我們用樣本觀測值直接作為總體引數的估計值是不可取的。因此,直接比較實驗組和對照組轉化率的大小還不足以支撐一個有力的決策。我們需要更多的資訊來描述這次抽樣用樣本估計總體的準確程度。置信區間和p-value正起到了這個作用。
如何理解置信區間和抽樣誤差?
問題重述
為比較實驗組和對照組的轉化率差異,我們需要首先收集實驗組和對照組的轉化率資料,經過7天的觀察,對照組的轉化率為40%, 實驗組為41%,是否實驗組轉化率優於對照組?
你也許會說因為實驗組轉化率比對照組高了1%, 所以實驗組能實現更高的轉化率。但是由於抽樣誤差的存在,這樣的描述也許並不準確。更smart的表述可能是這樣的:
我認為實驗組轉化率相比對照組轉化率高0.8-1.2%(1% ± 0.2 %), 置信度為95%。
在這句話中,1%是實驗組和對照組的絕對差異(即41%-40%), ± 0.2 % 是抽樣誤差,絕對差異±抽樣誤差給出了置信區間的範圍為0.8%-1.2%。
置信度95%說的是我們95%確信實驗組轉化率相比對照組轉化率高0.8-1.2%。從概率論的角度解釋,就是在其他引數不變的情況下,如果我們重複做同樣的實驗100次,那麼有95次得出的實驗組和對照組的轉化率差異都在0.8%-1.2%這個區間內。因此置信區間是一個區間使得重複實驗n次具有一定概率(這個概率就是置信度)的結果都落在此區間內。而置信度是人為給定的,我們需要在實驗開始前選定一個置信度(工業屆常用95%),它會影響這個實驗所需的樣本量大小和顯著性檢驗的結果。
用圖說話:
如果我們想知道在這個世界上有多少人喜歡吃橘子,我們不可能去調查世界上所有人的喜好,只能通過抽樣的方法用樣本來推斷總體。假設在這個世界上有50%的人真正喜歡吃橘子(p=0.5),但是否真的是50%我們是不確定的。於是我們試圖通過隨機抽樣來驗證這個值到底對不對,於是我們每次隨機抽取100個樣本,並且重複抽樣n次。如果用 p̂ 來表示每次抽樣喜歡吃橘子的人的比例,那麼重複抽樣n次會得到n個 p̂ 。根據正態分佈的概率密度函式,不管 p̂ 落在距離總體均值 μ 多麼遠的地方, 總有68.2%個落在距離總體均值1個標準差 (σ) 的範圍內,95.4%個落在距離總體均值2個標準差 (σ) 的範圍內,99.7%個落在距離總體均值3個標準差 (σ) 的範圍內(中心極限定理和正態分佈的運用)。特別的,有95%個落在距離總體均值1.96倍個標準差 (σ) 的範圍內。
反過來思考,以一次抽樣的觀測值 p̂ 為中心,往前和往後推大約1.96 σ 的區間,就有可能抓住那個真實的的 p 。如果重複抽樣無數次,構成無數個這樣的區間,有95%個區間會包含真實的 p , 只有5%個區間不包含。在這個例子裡,如果一次隨機抽樣的結果是80%的人喜歡吃橘子,標準差為sqrt(0.2*0.8/100)=0.04 (伯努利分佈),那麼可以說我們95%肯定這個世界上愛吃橘子的人的比率在[80%±1.96*0.04] 這個區間內。通過上面的例子,我們知道置信區間的上界是樣本均值+抽樣誤差,下界是樣本均值-抽樣誤差,95%置信度下的抽樣誤差是1.96*樣本標準差。
當得到了一個置信區間後,我們需要通過統計上的假設檢驗來判斷這次抽樣的結果是否具有統計上的顯著性。在這個例子中,由於 [80%±1.96*0.04] 這個區間不包含我們事先假設的0.5,並且我們已經95%肯定這個區間包含真實值,那麼先前假設的0.5是非常值得懷疑的,是我們應該拒絕的。
如何理解假設檢驗
假設檢驗是依據反證法思想,首先對總體引數提出某種假設(原假設),然後利用樣本資訊去判斷這個假設是否成立的過程。在A/B實驗中一般有兩種假設:
原假設 (H0):反對的假設。
備擇假設 (H1, or Ha):支援的假設。
假設檢驗的目標是拒絕原假設,它的核心是證偽。一般來說我們在多個備選項中選出其中的某一個有兩種思考過程,一種是基於滿意法的思考,也就是找到那個看上去最可信的假設;另一種是證偽法,即剔除掉那些無法證實的假設。滿意法的嚴重問題是,當人們在沒有對其他假設進行透徹分析的情況下就堅持其中一個假設,當反面證據如山時往往也視而不見。而證偽法能克服人們專注於某一個答案而忽視其他答案,減少犯錯誤的可能性。證偽法的思考過程類似於陪審團審判,首先假定一個人無罪,然後收集證據證明他有罪,如果有足夠證據說明他有罪,就拒絕他無罪的假設。
在上篇文章我們提到的吃橘子的案例裡,世界上有50%的人愛吃橘子是我們的原假設。由於一次實驗得出的置信區間 [80%±1.96*0.04] 不包含0.5,並且我們95%確信這個區間包含真值,只有5%的概率出錯,而5%概率非常小,小到我們可以接受,所以拒絕原假設。
在A/B實驗中,我們的目標與橘子案例不同的是,我們不是要估算全部使用者的轉化率,而是在實驗組和對照組之中選出更優的方案。因此A/B實驗的估計量不再是p,而是p2-p1 (實驗組和對照組的轉化率之差)。原假設是p2-p1=0 (即兩者沒有差異),因為只有當我們懷疑實驗組和對照組的結果不一樣, 才有實驗的動機,而我們支援的備擇假設是 p2-p1≠0(兩者有差異)。如果p2-p1≠0,在此基礎上我們還需要確定這種差異是否具有統計上的顯著性以支撐我們全量上線實驗組方案。
由於抽樣誤差的存在,A/B實驗可能出現四種結果,而這四種結果中存在兩種假設檢驗錯誤:當原假設H0為真,卻拒絕原假設;和當H0為假,卻沒有拒絕原假設H0。這兩種錯誤分別用 α (alpha) 和 β (beta) 表示,相應的,做出正確假設檢驗判斷的概率分別是1-α 和 1-β。
一類錯誤和統計顯著性
一類錯誤(Type I Error)指錯誤的拒絕原假設。對於A/B實驗來說就是實驗組相比對照組有提升,然而實際卻沒有差別。這裡所說的有提升,是相對於樣本而言的,在總體上實驗組是否相比對照組有提升,這是我們關心卻無從知曉的。也許對於樣本使用者,實驗組存在提升,但對於總體使用者而言,這樣的提升並不存在。當我們想知道這次實驗的提升,是否適用於總體,是否能使假設檢驗犯一類錯誤的概率保持在非常低的水平(例如5%以下)時,我們就需要特別關注實驗是否具有統計顯著性 (Statistical Significance)。要想判斷實驗是否具有統計顯著性,p-value至關重要。
p-value是什麼?
以萬能的扔硬幣為例。我們的原假設是硬幣是均勻的,備擇假設是硬幣不均勻。下表為扔硬幣的次數和出現正面朝上的概率。
當扔硬幣1次,正面朝上了,如果硬幣是均勻的,那麼發生這件事的概率是0.5;
當扔硬幣2次,兩次正面都朝上,如果是均勻的硬幣,那麼發生這件事的概率是0.5*0.5=0.25;
接著你扔了3次,4次,每次都正面朝上。當扔硬幣5次的時候,仍然是正面朝上,如果硬幣是均勻的,那麼發生這件事的概率只有0.5^5=0.03。這是一個非常小的概率,因為如果硬幣是均勻的,是不太可能發生這樣極端的事情的。但是這樣極端的事情卻發生了,這使你懷疑原假設的正確性,因為一枚不均勻的硬幣極有可能投出這樣的結果,因此你拒絕了原假設,接受了備擇假設,認為這是一枚不均勻的硬幣。
我們回到什麼是p-value的問題,在這個例子裡,假設一枚硬幣是均勻的,扔了n次,n次都正面朝上的概率就是p-value。對於A/B實驗而言,p-value是在實驗組和對照組沒有差別這個前提條件成立的情況下,實驗仍然檢測到差異以及更極端情況出現的概率。如果p-value非常小,就拒絕原假設,認為實驗組和對照組沒有差別這個前提是錯誤的。那麼怎麼定義非常小這個概念?這時需要用到顯著性水平 (significance level) 來做標尺。顯著性水平是人為給定的假設檢驗中犯一類錯誤的可接受上限,用α表示,在工業屆它的取值一般是5%,這說明我們尋求95%可能性正確的結果。當p-value超過這個值時(即p-value>0.05),我們會認為這個實驗犯一類錯誤的概率太高,因此用這個實驗估計總體是不可信的。當p-value小於顯著性水平時(p-value<0.05), 實驗達到統計上的顯著性,認為這個實驗犯一類錯誤的概率比較小,因此適用於總體。
這裡需要注意的是,統計顯著性並非實際顯著性 (Practical Significance)。p-value只能告訴你兩個版本是否存在差異,並不能說明實驗組到底比對照組好了多少。舉個例子,在某個A/B實驗中,實驗組相比對照組只有0.1%的提升,p-value=0.001,這說明這次實驗是達到統計顯著的,但是實驗效果卻只提升了0.1%。是否會為了這0.1%的提升而全量上線實驗組方案,還需要從成本等角度全面衡量實驗的商業效果。因此做決策不能僅憑藉統計顯著性。
另外,對於很多實驗,在實驗前段時期的顯著性是在顯著和不顯著之間上下波動的,我們需要足夠多的樣本量和更長的實驗週期來涵蓋前期的波動直到顯著性趨於平穩。
(Source: Statistics for Online Experiments)
上圖為統計顯著性的波動隨樣本量增大的變化情況。在實驗剛開始時,統計顯著性的波動是非常明顯的,這可能受到新奇效應 (Novelty Effect) 的影響。對於使用者存在感知的A/B實驗,如UI的改版、運營方案的更新、新功能的上線等,實驗組所做的任何改變都可能引起使用者的注意,好奇心會驅使他們先體驗一番,從而導致A/B實驗中實驗組效果一開始優於對照組,p-value極小,實驗效果非常顯著。但是一段時間過去後,使用者對於新的改變不再敏感,實驗組效果回落,顯著性可能會下降,最後趨於穩定。足夠的樣本量能保證一個合理的實驗週期,從而避免這種新奇效應的影響。
統計顯著性還可以通過置信區間來判斷。A/B實驗的原假設是實驗組與對照組沒有差異,即p2-p1=0, 那麼在剛才的例子裡,在樣本量達標的前提下,如果實驗求得的置信區間不包含0,也可以說明我們95%確信實驗組相比對照組存在提升。
二類錯誤和統計功效
在A/B實驗中,我們還需要注意二類錯誤 (Type II Error)。二類錯誤指沒有正確的拒絕原假設,即當原假設為假時沒有拒絕原假設, 犯這種錯誤的概率為 β。對於A/B實驗來說就是實驗組和對照組沒有差異,但實際實驗組和對照組有差異。
一類錯誤和統計顯著性有關;二類錯誤則和統計功效 (Power) 有關。統計功效是正確的拒絕原假設的概率, 即 1-β。為了讓實驗結果更準確,實驗需要提高統計功效, 一般來說提升到80%以上,犯二類錯誤的概率控制到20%一下,實驗結果就比較可信了。
更大的樣本量和更長的實驗週期能獲得更高的統計功效和更準確的測試。為什麼這麼說?因為對於很多A/B實驗來說,實驗組相比對照組的實際提升值非常小,對於這樣微小的提升值,需要更多的樣本使其被檢測到。通過給定的統計功效值(如80%)和預期提升幅度, 可以推匯出一個實驗需要的最小樣本量值。比較實驗實際進入的樣本量和最小樣本量值,如果實際樣本量能達到這個值,並且達到預期提升幅度,說明統計功效足夠,此時就可以下結論了。
總結A/B實驗結果的注意事項
1:樣本量達標
根據給定的統計功效預估實驗最小樣本量,根據歷史資料表現推測未來每日進入樣本量。通過最小樣本量/每日進入樣本量估算實驗時長。這可以保證實驗達到統計功效,減小犯二類錯誤的概率。
2:觀察實際提升
對比實驗組相比對照組的指標在實驗週期內的累積提升值。比如我希望實驗組相比對照組在某核心指標上有正向提升,實驗累積結果確實出現了正向提升。
3:觀察統計顯著性
若實驗週期結束後的累積p-value<0.05, 或置信區間不包含0, 則拒絕原假設,說明實驗組和對照組有差異,實驗具有統計顯著性。反之,則不拒絕原假設,說明實驗組和對照組沒有統計上的顯著差異。特別的,觀察p-value在實驗週期的波動,是否在實驗後期趨於穩定。
4:結合2和3和心理預期判斷是否應該採納實驗組方案
如果實驗累積結果有符合預期的提升,並且實驗檢測出統計顯著性。這時需要結合其他因素(如全量上線實驗組方案的成本)衡量該提升幅度是否值得我們採納實驗組方案。一般來說實驗組的提升幅度越大,實驗效果越明顯。在A/B實驗前,你需要建立一個心理預期,比如實驗組相比比對照組至少實際提升2%,才認為實驗組的版本有實際價值。這個最小預期提升幅度 (MDE) 需要在做實驗前就具備大致意識,根據具體優化需求確定。如果實驗組相比對照組有提升,且檢測到統計顯著性,卻沒有達到你心理預期的最小提升,實驗組方案就不值得被採納。
本系列文章介紹了A/B實驗的統計原理,從抽樣和中心極限定理,到統計顯著性和統計功效,再到如何將這些理論知識與實際的測試相結合來解讀實驗結果,希望能幫助大家做出正確的資料驅動決策。