天天看點

AB test | 資料分析師面試必知 !

前言

關于AB test的重要性無需多言,資料、産品等從業人員幾乎必知,好的資料科學家我想一定是知道了解業務比模型更為重要,而AB test就是伴随着業務增長的利器。

如果你心中的AB test幾乎都沒有用到中心極限定理、假設檢驗、z分布、t分布等知識

本文内容目錄:

A/B test是什麼

A/B test工作原理

進行A/B test的目的是什麼

A/B test流程(面試喜歡問)

A/B test簡例(結合Python實作)

A/B test需要注意的點

A/B test中要知道的統計學知識

1、A/B test是什麼

A / B測試(也稱為分割測試或桶測試)是一種将網頁或應用程式的兩個版本互相比較以确定哪個版本的性能更好的方法。AB測試本質上是一個實驗,其中頁面的兩個或多個變體随機顯示給使用者,統計分析确定哪個變體對于給定的轉換目标(名額如CTR)效果更好。

AB test | 資料分析師面試必知 !

2、A/B test工作原理

在A / B test中,你可以設定通路網頁或應用程式螢幕并對其進行修改以建立同一頁面的第二個版本。這個更改可以像單個标題或按鈕一樣簡單,也可以是完整的頁面重新設計。然後,一半的流量顯示頁面的原始版本(稱為控件),另一半顯示頁面的修改版本(稱為變體)。

AB test | 資料分析師面試必知 !

當使用者通路頁面時,如上圖灰色按鈕(控件)和箭頭所指紅色按鈕(變體),利用埋點可以對使用者點選行為資料采集,并通過統計引擎進行分析(進行A/B  test)。然後,就可以确定這種更改(變體)對于給定的名額(這裡是使用者點選率CTR)産生正向影響,負向影響或無影響。

實驗資料結果可能如下:

AB test | 資料分析師面試必知 !

3、進行A/B test的目的是什麼

A / B test可以讓個人,團隊和公司通過使用者行為結果資料不斷對其使用者體驗進行仔細更改。這允許他們建構假設,并更好地了解為什麼修改的某些元素會影響使用者行為。這些假設可能被證明是錯誤的,也就是說他們對特定目标的最佳體驗的個人或團隊想法利用A / B test證明對使用者來說是行不通的,當然也可能證明是正确的。

 是以說 A/B test不僅僅是解決一次分歧的對比,A/B  test可以持續使用,以不斷改善使用者的體驗,改善某一目标,如随着時間推移的轉換率。 例如,B2B技術公司可能希望從活動登陸頁面提高其銷售線索品質和數量。為了實作這一目标,團隊将嘗試對标題,可視圖像,表單字段,号召性用語和頁面的整體布局進行A / B測試更改。

一次測試一個變化有助于他們确定哪些變化對通路者的行為産生何種影響,哪些變化沒有影響通路者的行為。随着時間的推移,他們可以結合實驗中多次正向變化的效果來展示變體相對于控件的可測量的改進。

AB test | 資料分析師面試必知 !

這樣來說産品開發人員和設計人員可以使用A / B測試來示範新功能對使用者體驗變化的影響。隻要目标明确定義并且有明确的假設,使用者參與,産品體驗等都可以通過A / B測試進行優化。

4、A/B test流程①确定目标:目标是用于确定變體是否比原始版本更成功的名額。可以是點選按鈕的點選率、連結到産品購買的打開率、電子郵件注冊的注冊率等等。 ②建立變體:對網站原有版本的元素進行所需的更改。可能是更改按鈕的顔色,交換頁面上元素的順序,隐藏導航元素或完全自定義的内容。 ③生成假設:一旦确定了目标,就可以開始生成A / B測試想法和假設,以便統計分析它們是否會優于目前版本。 ④收集資料:針對指定區域的假設收集相對應的資料用于A/B test分析。 ⑤運作試驗:此時,網站或應用的通路者将被随機配置設定控件或變體。測量,計算和比較他們與每種體驗的互相作用,以确定每個使用者體驗的表現。 ⑥分析結果:實驗完成後,就可以分析結果了。A / B test分析将顯示兩個版本之間是否存在統計性顯著差異。 

AB test | 資料分析師面試必知 !

無論的實驗結果如何,需要利用試驗結果作為學習經驗生成未來可以測試的新假設,并不斷疊代優化應用元素或網站的使用者體驗。 

5、A/B test簡例(結合Python實作)

執行個體背景簡述:

某司「猜你想看」業務接入了的新推薦算法,新推薦政策算法開發完成後,在全流量上線之前要評估新推薦政策的優劣,所用的評估方法是A/B test,具體做法是在全量中抽樣出兩份小流量,分别走新推薦政策分支和舊推薦政策分支,通過對比這兩份流量下的名額(這裡按使用者點選衡量)的差異,可以評估出新政策的優劣,進而決定新政策是否全适合全流量。

執行個體A/B test步驟:

名額:CTR

變體:新的推薦政策

假設:新的推薦政策可以帶來更多的使用者點選。

收集資料:以下B組資料為我們想驗證的新的政策結果資料,A組資料為舊的政策結果資料。均為僞造資料。

分析結果(Python):

利用 python 中的 scipy.stats.ttest_ind 做關于兩組資料的雙邊 t 檢驗,結果比較簡單。但是做大于或者小于的單邊檢測的時候需要做一些處理,才能得到正确的結果。

from scipy import stats              import numpy as np              import numpy as np              import seaborn as sns                  A = np.array([ 1, 4, 2, 3, 5, 5, 5, 7, 8, 9,10,18])              B = np.array([ 1, 2, 5, 6, 8, 10, 13, 14, 17, 20,13,8])              print('政策A的均值是:',np.mean(A))              print('政策B的均值是:',np.mean(B))           
Output:              政策A的均值是:6.416666666666667              政策B的均值是:9.75           

很明顯,政策B的均值大于政策A的均值,但這就能說明政策B可以帶來更多的業務轉化嗎?還是說僅僅是由于一些随機的因素造成的。我們是想證明新開發的政策B效果更好,是以可以設定原假設和備擇假設分别是:H0:A>=BH1:A < Bscipy.stats.ttest_ind(x,y)預設驗證的是x.mean()-y.mean()這個假設。為了在結果中得到正數,計算如下:

stats.ttest_ind(B,A,equal_var= False)           
output:              Ttest_indResult(statistic=1.556783470104261, pvalue=0.13462981561745652)           

根據 scipy.stats.ttest_ind(x, y) 文檔的解釋,這是雙邊檢驗的結果。為了得到單邊檢驗的結果,需要将 計算出來的 pvalue 除于2 取單邊的結果(這裡取門檻值為0.05)。 求得pvalue=0.13462981561745652,p/2 > alpha(0.05),是以不能夠拒絕假設,暫時不能夠認為政策B能帶來多的使用者點選。6、A/B test需要注意的點1、先驗性:通過低代價,小流量的實驗,在推廣到全流量的使用者。 2、并行性:不同版本、不同方案在驗證時,要保重其他條件都一緻。 3、分流科學性和資料科學性:分流科學是指對AB兩組配置設定的資料要一緻,資料科學性是指不能直接用均值轉化率、均值點選率來進行AB test決策,而是要通過置信區間、假設檢驗、收斂程度來得出結論。7、A/B test中要知道的統計學知識上述文章隻是從應用的角度介紹來AB test的一些内容,當收集好資料之後做推斷性統計分析你可能需要具備以下知識,這裡限于篇幅不做介紹,自行查閱統計學書籍閱讀,可參考《統計學》賈躍平,可汗學院統計學等書籍和視訊。1、點估計2、區間估計3、中心極限定理(樣本估計總體的核心,可以對比看一下大數定理)4、假設檢驗其中假設檢驗部分為核心,其他輔助更好的了解該部分内容,比如區間估計可以了解為正向的推斷統計,假設檢驗可以了解為反證的推斷統計,關于假設檢驗本身,你可能還需要知道小機率事件、t分布、z分布、卡方分布、p值、alpha錯誤、belta錯誤等内容。

總結:本文内容目錄前4部分參考翻譯于:https://www.optimizely.com/optimization-glossary/ab-testing/ 對其中部分内容做了修改,其中關于AB test流程步驟做了核心修改,目錄後3部分為個人學習思考所得,希望對大家有所幫助。

-END-

推薦閱讀:大資料學習之路我是錦鋒,談談拿到66個大資料校招offer的經曆