增長黑客AB-Testing系統(tǒng)設計

9 評論 10448 瀏覽 96 收藏 25 分鐘

編輯導語:增長黑客這一概念起源于美國互聯(lián)網(wǎng)行業(yè),最早由 Sean Ellis 提出。近年來,增長黑客的概念傳到國內(nèi),其核心是驅(qū)動用戶飛漲增長黑客,指的是創(chuàng)業(yè)型團隊在數(shù)據(jù)分析基礎上,利用產(chǎn)品或技術手段來獲取自發(fā)增長的運營手段。本文作者詳細的分析了增長黑客的AB-Testing系統(tǒng)應該如何設計,希望對你有所幫助。

一、AB-test思路

數(shù)據(jù)驅(qū)動概念興起的同時,AB-test也同步出現(xiàn)在大家的視線中,各互聯(lián)網(wǎng)大廠率先引進了AB-test系統(tǒng),希望通過循環(huán)的測試,上線最符合公司客群的產(chǎn)品。

這一理念一出引發(fā)行業(yè)內(nèi)各個公司的效仿,各種宣導紛至而來,那么什么是AB-test?什么樣的公司能迅速構建出AB-test系統(tǒng)?我們今天來一起聊一下。

1. 什么是AB-test?

攜程的大佬們曾給出一個定義:AB試驗可以簡單的認為是傳入一個實驗號和用戶分流ID到AB試驗分流器,分流器吐出分流版本A、B、C、D等,截取一部分應用流量,落地某一段時間的分流數(shù)據(jù),進而分析各個版本的優(yōu)劣,決定啟用新版本還是沿用老版本的過程。

這一定義大家能不能理解呢?我們用更通俗的語言做一下解讀:

首先:試驗的目的是為了決策新開發(fā)的兩個或兩個以上的版本該上線哪一個的問題——即當有較多的版本選擇時可以先測一把,讓數(shù)據(jù)告訴我們哪一個方案比較適合我們公司的客戶。

大家有沒有遇到經(jīng)驗失效的時候,就是我們按照自己的經(jīng)驗設計出來的產(chǎn)品、活動,客戶并不買賬,失效的原因有很多,其中一個比較常見的原因就是經(jīng)驗失效,即我們培養(yǎng)起來的經(jīng)驗往往是根據(jù)之前公司或者歷史數(shù)據(jù)形成的。

問題在于新公司/當下時間中客群發(fā)生了變化,我們之前的經(jīng)驗未必完全符合現(xiàn)在的客群,這也就凸顯出了AB-test的價值,AB-test是根據(jù)本公司現(xiàn)在的客群進行的對照試驗,可以直觀的表達出客戶需要什么樣的產(chǎn)品。

其次:試驗用到的一個重要組件是分流器,分流器有什么用處呢?

顧名思義——分流用的,就是通過一定的規(guī)則將APP中隨時流動的數(shù)據(jù)分成多個版本,客戶進入APP后會自動分配到各個版本中,各個版本對應開發(fā)的新舊版本,進行穩(wěn)定測試。

分流器中常用的方法是對客戶的session/cookie進行hash運算,然后將運算結(jié)果取模mod(即取余運算,不清楚的看官可以百度一下)。通過取模后的值進行分流,分流的過程涉及正交、互斥試驗的設計,其中細節(jié),我們下文中會詳細描述。

其三:就是試驗效果評估的過程,AB-test的兩個重點之一就是效果評估(另一個就是上面的分流器),如何評估一個試驗是否成功?試驗1的UV大于試驗2的UV是否就說明試驗1是好的?

這其中就涉及到了統(tǒng)計中的各種檢驗知識,我們會在下文原理部分詳細描述。

現(xiàn)在我們從簡到繁了解一下AB-test的試驗思路,假設一個客戶來到我們的APP,其在AB-test中的數(shù)據(jù)訪問可以如下圖描述:

增長黑客AB-Testing系統(tǒng)設計

看圖聽故事如下:

  1. 一個客戶進入到我們的APP時,會在客群的部分做一次篩選,即試驗是否是有劃分客群,如果有客群劃分,則需要判斷新來的客戶是否命中我們的試驗客群;
  2. 第二步我們要判斷需要進行什么類型的試驗,正交還是互斥?以及此次試驗需要切分多少流量,5%還是10%;
  3. 經(jīng)過了客群識別和流量切分后,我們的客戶來到了試驗分組部分,系統(tǒng)采集客戶訪問的cookie/session信息計算出唯一hash值,并對這一hash值做mod處理;
  4. mod處理之后的數(shù)據(jù)會被分到t個桶中的某一個,然后再根據(jù)一定的比例和算法將t個桶中的數(shù)據(jù)分成三組,即:A組、A組和B組,假設分流比例為:1/3,1/3,1/3;
  5. A-A組即為舊版本對照組,用來檢驗分流是否有效,如果A-A組不顯著,說明數(shù)據(jù)不受系統(tǒng)性因子影響,分流是有效的;A-B組即為新舊版本的對照組,其中B組為新版本;
  6. A-A-B組的數(shù)據(jù)比較即為試驗數(shù)據(jù)分析,分析人員借此完成試驗的效果檢驗,確定試驗是否顯著。

看完上面這一串介紹,有沒有一種原來如此的感覺?

AB-test的基本流程可以是上圖的樣式,但是充其量只能作為一個簡圖,接下來我們一點點的抽絲剝繭,還原AB-test產(chǎn)品的真相:

2. 什么是正交試驗?什么是互斥試驗?

正交試驗:每個獨立試驗為一層,為保證各層之間不相互影響,一份流量穿越每層試驗時,會再次隨機打散,且隨機效果離散,這一過程叫正交,這樣的試驗叫正交試驗。

正交試驗能最大化的保證各層試驗相互獨立,確保各個試驗不會相互影響。

我們用圖形來表示正交,如下圖:

X層的全部流量隨機打散,然后進入到Y(jié)層,看到的結(jié)果即為Y層的流量為X層流量重組之后的再分配,兩層之間相互獨立。

增長黑客AB-Testing系統(tǒng)設計

互斥試驗:即為在同一層中拆分流量,且不論如何拆分,不同的流量是不重疊的。

互斥試驗是在流量足夠的情況下進行的分流策略,各個試驗之間也不會相互影響。我們同樣用圖形來表示互斥,如下圖:

增長黑客AB-Testing系統(tǒng)設計

X層的流量會各自獨立的分到Y(jié)層,相互之間不受影響。

3. 如何計算最小樣本量?

最小樣本量的計算,我們會在下文原理篇詳細講解~

4. 多個試驗同時發(fā)生時如何分層?

前面我們講解了正交和互斥兩個原則,接下來我們介紹一下在正交和互斥的原則下該如何設計試驗分層?

正交、互斥兩種試驗的引用是為了能夠更充分、更高效的使用流量,實際試驗中往往是多組試驗同時存在,既有正交,又有互斥,如下圖:

增長黑客AB-Testing系統(tǒng)設計

上圖中的分組情況可以看出:域1和域2互斥拆分流量,域2中的流量串過1-1層、1-2層、1-3層,進入到2層和3層,1-1層、1-2層、1-3層是互斥的,1層、2層、3層是正交的,上層的流量大于等于下層。

從使用場景上看,1層、2層、3層可能分別為UI層、搜索結(jié)果層、廣告結(jié)果層,這幾個層級基本上沒有任何的業(yè)務關聯(lián)度,即使共用相同的流量,也不會對實際的業(yè)務造成影響。

但是如果不同層之間所進行的試驗相互關聯(lián),就需要進行互斥試驗。

例如:1-1層是修改頁面按鈕上文字的顏色,1-2層是修改按鈕顏色,如果按鈕和文字顏色一致,估計按鈕就不可用了。試驗的基本原則是控制變量,即盡可能的保證每次試驗只有一個變量,不要讓一個變量的試驗動態(tài)影響另一個變量試驗,否則試驗就會失去公正性。

另外,如果我們覺得一個試驗可能會對新老客戶產(chǎn)生完全不同的影響,那么就應該對新客戶和老客戶分別展開定向試驗,觀察結(jié)論。

無論從層級上還是單層的分流上都被充分應用,流量的使用效率很高,但是,隨著試驗越來越多,對試驗的管理也會顯得越來越重要,往往后期會需要專門的人員進行管理。

5. Hash分流過程是啥樣的?

分流的方式有很多種,筆者這次來和大家聊一下hash的算法如何實現(xiàn)分流效果。

AB-test又稱作是桶測試,為什么叫桶測試呢?關鍵就在于分流的過程,我們先解釋一下桶和試驗組的關系:

增長黑客AB-Testing系統(tǒng)設計

假設試驗有12個人,我們對這12個人進行編號,編號方法可以使用cookie,也可以使用session,總之獲取到這12個人的唯一編碼。

當獲取到唯一編碼之后我們就可以開始分流了,我們對每個人的唯一編碼進行hash處理,常規(guī)使用MD5進行hash計算,這樣計算的好處在于MD5幾乎不會重復,分流效果較好。

計算好的hash值需要進行mod處理,圖中有6個桶,我們就用6進行mod處理, 12個人按照余數(shù)分散到六個桶里面,原則上12個人的分流是隨機的分散到各個桶里面,很難保證每個桶里的人數(shù)一致。

但是從統(tǒng)計學的角度上講,當數(shù)據(jù)量足夠大時,數(shù)據(jù)會均勻的分散到各個桶里面。

桶分流完成后,我們需要處理的就是將這些桶平均分成兩組,原則是保證隨機性和平均分配,聰明如你,應該已經(jīng)明白分流的原理了吧?

6. Hash分流是否能保證樣本在A-A-B三組中平衡分布?

三組數(shù)據(jù)的分流原則上需要盡可能平衡,即各個特征都能均勻的分布在三組試驗中,這樣才能符合AB-test控制變量的原則。

生化試驗中控制變量是一個較為簡單的問題,不管是脊蛙反射還是腸胃蠕動試驗;但是社會學中的試驗,控制變量卻異常復雜,因為面對大量人群,很難通過隨機分配保證各個特征的平衡,而且有些隱含變量很難被發(fā)現(xiàn),也難以做到平衡。

這樣的問題稱在生化試驗中稱作是系統(tǒng)誤差,在互聯(lián)網(wǎng)AB-test中則會引發(fā)辛普森悖論。

生化試驗中往往通過重復試驗來避免,互聯(lián)網(wǎng)下的AB-test很難進行重復試驗,因為無法讓一個人即使用A版本,又使用B版本,串行試驗又會添加時間因素,所以只能采用其他的方式解決這個問題。

那么,什么是辛普森悖論呢?

我們用一個真實的醫(yī)學 AB 測試案例來說明這個問題,這是一個腎結(jié)石手術療法的 AB 測試結(jié)果:

增長黑客AB-Testing系統(tǒng)設計

看上去無論是對于大型結(jié)石還是小型結(jié)石,A療法都比B療法的療效好。但是總計而言,似乎B療法比A療法要好。

這個AB測試的結(jié)論是有巨大問題的,無論是從細分結(jié)果看,還是從總計結(jié)果看,都無法真正判斷哪個療法好。

那么,問題出在哪里呢?

這個AB測試的兩個實驗組的病歷選取有問題,都不具有足夠的代表性。

參與試驗的醫(yī)生人為的制造了兩個試驗組本身不相似,因為醫(yī)生似乎覺得病情較重的患者更適合A療法,病情較輕的患者更適合B療法。所以下意識的在隨機分配患者的時候,讓A組里面大結(jié)石病歷要多,而B組里面小結(jié)石病歷要多。

更重要的問題是:很有可能影響患者康復率的最重要因素并不是療法的選擇,而是病情的輕重!換句話說,A療法之所以看上去不如B療法,主要是因為A組病人里重病患者多,并不是因為A組病人采用A療法。

所以,這一組不成功的AB測試,問題出在試驗流量分割的不科學,主要是因為流量分割忽略了一個重要的“隱藏因素”,也就是病情輕重。

正確的試驗實施方案里,兩組試驗患者里,重病患者(也就是AB-test中的特征值)的比例應該保持一致。

我們再來聊一個互聯(lián)網(wǎng)領域的場景:我們對APP上一個按鈕進行了顏色調(diào)整,需要比較一下顏色調(diào)整前后用戶UV點擊率是否提高?

經(jīng)過一段時間的試驗,我們得到了兩組試驗的數(shù)據(jù),為了說明辛普森悖論的問題,我們單獨抽離出了性別作為比較。

原因有二:一是性別在這次試驗中是重要特征;二是這一特征的數(shù)據(jù)不均衡,剛好出現(xiàn)了辛普森問題。計算出了兩組試驗的點擊率,如下:

增長黑客AB-Testing系統(tǒng)設計

數(shù)據(jù)中我們發(fā)現(xiàn):單獨看這一試驗,無論是女性特征和男性特征,數(shù)據(jù)表現(xiàn)都是A組中較好。但是,總計卻是B組效果較好,其中的差異我想大家已經(jīng)清楚了,性別特征并沒有均衡的分布在兩個試驗組中。

這個解決方法就是——定向試驗。

在進行試驗之前,先做一次試驗分析,確定對試驗影響較大的因素,然后通過分流的權重設置來均衡各個組之間的特征差異,因素確認用到的方法較多,比如GBDT等等。

如下圖:

增長黑客AB-Testing系統(tǒng)設計

在進行試驗同時,可以實現(xiàn)各分組特征中的監(jiān)控。如果發(fā)現(xiàn)某一特征在某一組中偏小,就增加這一特征在這一組的分配權重,以保證特征一致性。

但是這樣也存在特征取舍的問題,具體就不展開來描述了,有興趣的小伙伴可以自行查詢一下。畢竟,能做到這一點的公司已經(jīng)很不錯了。

分層試驗,交叉試驗,定向試驗是我們規(guī)避辛普森悖論的有力工具。

規(guī)避辛普森悖論,還要注意流量動態(tài)調(diào)整變化的時候新舊試驗參與者的數(shù)據(jù)問題,試驗組和對照組用戶數(shù)量的差異問題,以及其他各種問題。

而優(yōu)秀的增長黑客,不會去投機取巧“制造數(shù)據(jù)”,而是認真思考和試驗,用科學可信的數(shù)據(jù)來指導自己和企業(yè)的決策,通過無數(shù)次失敗的和成功的AB測試試驗,總結(jié)經(jīng)驗教訓,變身能力超強的超級英雄。

二、AB-testing原理

統(tǒng)計計算主要應用在效果評估領域。

客戶經(jīng)過分流之后在各個試驗組中產(chǎn)生數(shù)據(jù),統(tǒng)計的作用即為查看對應組的樣本量是否達到最小樣本量,數(shù)據(jù)之間是否存在顯著性差異,以及進行差異大小的比較。

如下圖:

增長黑客AB-Testing系統(tǒng)設計

A-A-B三組數(shù)據(jù)觀察n天后,會產(chǎn)生3組數(shù)據(jù),我們接下來的任務就是計算這三組數(shù)據(jù)的統(tǒng)計效果,進而確定哪個方案效果好。

1. 如何計算最小樣本量?

最小樣本量是按照統(tǒng)計功效進行計算的,主要分兩類:絕對值類(例如:UV)和比率類(例如:點擊率)。

在試驗過程中,大部分場景是進行比率類指標的比較,單純的計算絕對值是沒有價值的;而且對于試驗效果來講,絕對值的比較可以轉(zhuǎn)化為比率的比較。

所以在計算過程中,我們統(tǒng)一成比率計算,以方便口徑統(tǒng)一和數(shù)值比較。

理論上,比率類最小樣本量計算:

增長黑客AB-Testing系統(tǒng)設計

增長黑客AB-Testing系統(tǒng)設計

例如:“XX提交”按鈕由紅色變?yōu)槌壬?,統(tǒng)計的指標是點擊UV轉(zhuǎn)化率UV_rate,測試時間是20200801~20200814,則計算“XX提交”按鈕的歷史月均值mean(UV_rate)為下面數(shù)據(jù)的均值avg(UV_rate):

增長黑客AB-Testing系統(tǒng)設計

注:此處的計算需要對統(tǒng)計學中的統(tǒng)計功效有所了解,閱讀有阻力可以補充一下“統(tǒng)計功效”的計算方法。

流程圖介紹:最小樣本量的作用是確定試驗是否有效,后管配置好對應的客群信息、開放流量占比、提升率等信息后,后臺需要進行“最小樣本量”的計算,并進行相關判斷,如下圖:

增長黑客AB-Testing系統(tǒng)設計

增長黑客AB-Testing系統(tǒng)設計

2. 如何計算試驗有效天數(shù)?

補充——統(tǒng)計功效:

增長黑客AB-Testing系統(tǒng)設計

確定好最小樣本量并實現(xiàn)分流、試驗上線之后,需要進行數(shù)據(jù)的有效天數(shù)需要進行相應計算:

試驗的有效天數(shù)即為試驗進行多少天能達到流量的最小樣本量。

當流量達到最小樣本量時,查看數(shù)據(jù)是否存在顯著性差異,如果不存在顯著性差異則繼續(xù)進行試驗,直到達到最大要求天數(shù);如果試驗仍然沒有達到顯著性,則確定兩組試驗不顯著,即沒有明顯差異。

計算過程如圖:

增長黑客AB-Testing系統(tǒng)設計

增長黑客AB-Testing系統(tǒng)設計

如果到達試驗最小天數(shù)且試驗樣本量>=最小樣本量n_per,則觀察試驗是否有顯著性,如果A-A試驗沒有顯著性且A-B存在顯著性(B>A),則表示試驗成功,否則試驗失敗。

如果到達試驗最小天數(shù)且試驗樣本量<最小樣本量n_per,則繼續(xù)進行試驗;

3. 判斷試驗天數(shù)是否到達試驗最大天數(shù)(t天):

如果到達試驗最大天數(shù)且試驗樣本量>=最小樣本量n_per,則觀察顯著性;如果到達試驗最大天數(shù)且試驗樣本量<最小樣本量n_per,則終止試驗并標注試驗失敗。

邏輯流程圖為:

增長黑客AB-Testing系統(tǒng)設計

通過每天的數(shù)據(jù)計算可以做出如上判斷,進而確定試驗進行的有效天數(shù)并計算出顯著性水平。

三、AB-testing工程化

經(jīng)過上面的描述,我們可以通過下面的兩張圖來了解一下在工程方面,AB測試系統(tǒng)是什么樣子的:

增長黑客AB-Testing系統(tǒng)設計

注釋:

  1. 根據(jù)需求設計好AB試驗之后,在AB測試系統(tǒng)配置好對應的策略;
  2. 將這一策略固化成文件,并推送到APP的AB系統(tǒng)SDK中;
  3. 客戶每次訪問APP,先掃描AB系統(tǒng)SDK中的策略文件,根據(jù)策略文件給客戶打標,分配對應的A、B版本;
  4. APP中根據(jù)策略呈現(xiàn)A、B版本的試驗內(nèi)容,并監(jiān)控客戶的操作行為以及訂單行為;
  5. 這一行為被記錄并上報到大數(shù)據(jù)環(huán)境中;
  6. 天在大數(shù)據(jù)中進行顯著性計算和最小樣本量的處理,得到對應的顯著性結(jié)果。

我們再來看一個詳細的系統(tǒng)數(shù)據(jù),如下圖:

增長黑客AB-Testing系統(tǒng)設計

目前為止,AB系統(tǒng)已經(jīng)介紹完成了,AB的結(jié)構深不可測,其中也需要經(jīng)常的更新和討論,歡迎大家關注溝通~

 

作者:野水晶體;個人公眾號:livandata

本文由 @野水晶體 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。

題圖來自 Pexels,基于 CC0 協(xié)議

更多精彩內(nèi)容,請關注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 詳細的討論了辛普森悖論和解決方法 提出的定向?qū)嶒炗脴淠P蛠碓u估特征重要度并據(jù)此來平衡兩組間重要特征分布的做法,引人入勝 非常受啟發(fā)

    回復
  2. 回復
  3. 歡迎大家關注公眾號:livandata,內(nèi)容更全面詳細~

    來自上海 回復
  4. 謝謝很干貨,不知道是否有機會聯(lián)絡一下。

    來自江蘇 回復
  5. 企業(yè)的痛有三:一曰戰(zhàn)略,二曰組織,三即為產(chǎn)品,這其中,處處少不了增長~

    回復
  6. 看完后只是覺得樓主挺適合做學術研究的

    來自上海 回復
    1. 為啥?全從原理入手?

      回復
  7. 硬核攻略,收藏+點贊+分享三連走起

    來自浙江 回復
    1. 感謝~

      回復