A/B Testing

一、為什么要做A/B Testing?
A/B Testing用于產(chǎn)品方案的對比,在快速產(chǎn)品迭代的場景下會出現(xiàn)這個需求,使產(chǎn)品不斷的演化、升級。為了更好的使用A/B Testing,需要對產(chǎn)品十分熟悉,明確產(chǎn)品需要升級和迭代的方向。

二、A/B Testing的流程
假設只對新版和舊版兩個版本做測試(實際中也可以對多個版本同時測試),另外,在提升指標部分,實際中可以確定唯一的提升指標,如僅測試CTR,也可以確定多個提升指標,如CTR和Quantity,但每個因子的顯著水平以及實驗整體的最小樣本量的計算方式會與單一因子有所不同。下圖流程中標藍的為和統(tǒng)計知識比較相關的部分。

A/B Testing流程.png

三、舉個栗子
3.1 實驗假設及分流
假設我們對廣告投放的落地頁(landing page)的設計進行改版,把落地頁的版式進行調(diào)整,調(diào)整前的版本為老版本,記做A,調(diào)整后的版本為新版本,記做B。我們選定Conversion Rate作為標準,判斷B版是否優(yōu)于A版。

這里我們有兩個假設。
H0: ( 原假設,Null Hypothesis) 老版本的效果和新版本一樣,即老版本的CR和新版本的一樣。這是我們希望通過實驗推翻的假設。
H1:(備擇假設,Alternative Hypothesis),可以是老版本的效果和新版本的不一樣,或者是老版本的效果沒有新版本好。

A/BTest就是要驗證H0是否正確(這個放到下一步再說)。

另外,上線AB實驗時,需要對流量進行分流,這就需要確定分流的依據(jù)。實際中需要結合實驗的平臺(如APP或者PC,以及區(qū)分服務端還是客戶端),來決定分流依據(jù)是什么,如用戶的deviceid,或者是登錄用戶的userId等。

具體分流時,針對新老兩個版本的情況,把流量分為4份。B為實驗組(新版本)的流量,C和D為控制組的流量(老版本)。B=C+D,即實驗組和控制組的流量比例為1:1,而C和D的流量相等,B:C:D=50%:25%:25%。另外,針對一些異常流量以及B、C、D剩下來的流量,由A兜底。

C和D版本的目的是用來做AA檢測,保證實驗過程中流量是平穩(wěn)的。在AA檢測通過的情況下,再做AB檢測。

此處僅為一個實驗的例子,如果實際中一個頁面有多個實驗存在,為保證實驗和實驗之間互相獨立,則需要對實驗進行分層,保證實驗之間為正交關系,互不影響。具體來說,假設一個頁面層的流量有如下6根柱子這么多。如果現(xiàn)在同時要進行3個實驗,保證每個用戶只穩(wěn)定的分流到一個實驗中去,則需要把流量分為6份,3份黑色的為老版本,3份黃色的為新版本,但是是針對1b, 2b, 3b這三個不同的實驗。每個黑色和黃色的柱子就組成了每個實驗的老版本和新版本的全部流量。

正交分流示意.png

3.2 假設檢驗
3.2.1 四種情況
針對新版本是否比老版本好,以及我們是否能檢測到,有以下四種情況。

真實情況 真實情況
我們的判斷 沒區(qū)別(H0) 有區(qū)別(H1)
沒區(qū)別 沒效果 Type II Error (False Negative) 誤判為沒效果
有區(qū)別 Type I Error (False Positive) 誤判為有效果 Statistical Power

表格里代表了四種情況——
(1)實際沒區(qū)別,我們也判斷出來了沒區(qū)別。這種就不用管了。
(2)實際沒區(qū)別,但是我們判斷錯了,我們判斷出來有區(qū)別。這個就是Type I Error,第一類錯誤(False positive),誤判為有效果。第一類錯誤發(fā)生的概率記做\alpha。

實際中我們會非常嚴格的控制第一類錯誤發(fā)生的概率。因為第一類錯誤發(fā)生可能會帶來比較重大的損失。比如一個改版實際沒效果,你確認為有效果,投入生產(chǎn)后并不會給公司帶來收益,造成資源的浪費。

因此alpha一般都會控制在5%。即我們?nèi)萑痰谝活愬e誤發(fā)生的概率是5%。

(3)實際有區(qū)別,我們誤判為沒區(qū)別。這個就是Type II Error,第二類錯誤(False Negative),誤判為沒有效果。第二類錯誤發(fā)生的概率為\beta\。

實際中,我們對這一類錯誤的容忍程度較高。即便是個有提升的方案,但是我們沒有識別出來,也就算了,至少沒有直接負面的效果。

\beta\一般取20%。同時降低第一類和第二類錯誤的概率,就是增加sample數(shù)(population都檢測完了,當然最準確)

(4)實際有區(qū)別,我們也檢驗出來了有區(qū)別。這個叫做statistical power。是指實驗有區(qū)別的情況下,我們正確檢測出來他有區(qū)別的概率,反映了檢測的能力。舉個夸張的例子,如果新版本真的比老版本好,但是我們只有30%的能力檢測出來這一點,那這個實驗也沒有啥用。根據(jù)條件概率,statitical power = 1-\beta\。Power與alpha、sample size(主要)和effect size等因素都有關。

3.2.2 假設檢驗

先說下P值(significance level)。

假設老版本的CR是5%,而新版本的CR是5.5%。

假設H0為真,那么在原有版本的CR分布中,檢測到5.5%這個值的概率,即為P值。相在H0為真的前提下,計算CR>=5.5%的概率P(CR>=5.5% | H0 is True)。

假設H0是真的,也就是老版本和新版本的效果其實是一樣的,那么我們檢測到實驗結果是5.5%的概率有多大?

這個概率如何計算?

說到這里,再講一下z-score。z-score=(x-\mu)/\sigma。即觀測值距離這個分布的均值,隔了多少個標準差。z-score可正可負,因為觀測值可能比均值大,也可能比均值小。用z-score看p-value是多少,就要查表了,或者用R和python計算。

所以,除了知道老版本的CR均值為5%之外,我們還需要計算老版本的方差,還需要知道新版本我們的樣本量是多少。加上一些對參數(shù)的假設,我們用單邊檢測,檢測到CR為5.5%的概率如下:

z_test <- function(x, mu, s, n, tailed){
  z<-(x-mu)/(s/sqrt(n))
  if(tailed == 1) return (cat('Z-Score - ', z, '\np-value - ', pnorm(-abs(z))))
  if(tailed == 2) return (cat('Z-Score - ', z, '\np-value - ', 2 * pnorm(-abs(z))))
  if(tailed != 1 | tailed != 2) return ('can only be one or two tailed')
}

z_test(0.055, 0.05, 0.05, 100, 1)
#Z-Score -  1 
#p-value -  0.1586553

z_test(0.055, 0.05, 0.05, 1000, 1)
#Z-Score -  3.162278 
#p-value -  0.0007827011

可以看到,對樣本量的假設不一致的情況下,得到的結果也是不同的。如果這個概率<=5%(significance level,也就是我們第一類錯誤的概率),就是說我們只有<=5%的概率才能檢測到新版本的CR是5.5%,那么我們就拒絕原假設,接受備擇假設。

3.2.3 在實驗開始之前——Effect Size & Sample Size
其實在計算p值之前,在開始實驗之前,最重要的一步是確定,這個實驗要做多久?我們需要多少樣本?

我們不能邊做實驗邊看p值,等p值顯著了就把實驗停止掉。而是要在實驗開始之前就確定好實驗周期,以及Effect Size,從而計算最小樣本量是多少,依據(jù)最小樣本量及其平時我們每日的流量,計算得到實驗周期。

Effect Size是強調(diào)差異的程度(或者關系的程度),比如R方就是一種effect size。這里的Effect Size,是指第一個分布和第二個分布的均值相差有多大。不同指標的effect size會非常不同,我們希望的effect size也會不同。以轉(zhuǎn)化率為例,我們希望檢驗出來的差別至少是0.5%。如果在0.5%以下,假設是提升了0.3%,就算檢測出來了,從業(yè)務層面來說我們可能也覺得沒有意義。

Effect size.png

下圖說明了sample size和power的關系,以及effect size和power的關系。這里重點看右邊(因為我們希望通過effect size和power來反推sample size)。右邊的三個小圖,從上到下,effect size從1到2在不斷變大,相應的,power(藍色部分的面積)也在變大,即如果差別越大,檢測出來這種差別的能力就越強,這樣如果保持power不變,那需要的sample size就越小。

Power & Effect Size.png

四、A/B流程- 重新梳理
A/B Testing中,核心流程如下。在確認主指標和參數(shù)之后,可以在網(wǎng)上搜索A/B Test Sample Size Calculator計算最小樣本量,或者公司有自己的算法可以套公式計算。然后等實驗結束,做好AA檢驗,保證分流沒問題,再做AB檢驗,看P值結果就可以了。

A/B Testing核心流程.png

參考資料:
非統(tǒng)計專業(yè)?5分鐘搞懂如何計算A/B測試樣本量
P-value From Z-Score Function in R
Power & Effect Size

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 資源來自udacity 1.ab testing不能做的事? 新的實驗丟失了一些數(shù)據(jù) 2.商業(yè)案例分析 左邊的這個...
    鯨魚醬375閱讀 583評論 0 1
  • 猜猜看,我愛的是你還是他呢?痾..如果可以,我想直接對你做 A/B testing。 A/B testing 的古...
    bettysherlin閱讀 532評論 0 0
  • A/B testing 其實就是控制變量法,對比實驗。一般談論的應用是網(wǎng)上線上發(fā)布的應用、網(wǎng)頁等等 需要做分流,將...
    EatTheRice閱讀 334評論 0 0
  • 缺乏明確因果關係,成功案例難以複製 A/B testing 不是萬靈丹,它能回答 A或B版本哪個在你的目標上表現(xiàn)較...
    bettysherlin閱讀 392評論 0 1
  • 做多久 做太久可能造成損失,做得不夠久,可能無法確認結果是否真的有意義。 如果目的不是出論文,基於其它商業(yè)考量,不...
    bettysherlin閱讀 238評論 0 0

友情鏈接更多精彩內(nèi)容