AB測(cè)試系統(tǒng)如何從應(yīng)用到搭建?

25 評(píng)論 21378 瀏覽 233 收藏 15 分鐘

增長(zhǎng)團(tuán)隊(duì)有三寶:埋點(diǎn)、漏斗、AB測(cè)。本文給大家講講,AB測(cè)試系統(tǒng)如何從應(yīng)用到搭建?

一、什么是AB測(cè)試?

A/B 測(cè)試是一種產(chǎn)品優(yōu)化方法;為同一個(gè)優(yōu)化目標(biāo)制定兩個(gè)方案,讓同一部分用戶中的一部分用戶命中 A 方案,同時(shí)另一部分用戶命中 B 方案,統(tǒng)計(jì)并比較不同方案的點(diǎn)擊率、轉(zhuǎn)化率等數(shù)據(jù)指標(biāo),通過(guò)不同方案的數(shù)據(jù)表現(xiàn),在確定數(shù)據(jù)表現(xiàn)通過(guò)假設(shè)檢驗(yàn)后,決定最終方案的實(shí)驗(yàn)方法。

二、AB測(cè)試的意義?

AB測(cè)試是支持?jǐn)?shù)據(jù)決策最有力的工具。

以下為最基礎(chǔ)的數(shù)據(jù)驅(qū)動(dòng)流程,方案驗(yàn)證即為AB測(cè)試過(guò)程,實(shí)驗(yàn)才是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)。

  • 數(shù)據(jù)收集
  • 數(shù)據(jù)分析
  • 發(fā)現(xiàn)問(wèn)題
  • 提出方案
  • 方案驗(yàn)證
  • 發(fā)布上線

三、AB測(cè)試實(shí)驗(yàn)需要滿足以下兩個(gè)特性

1. 同時(shí)性

兩個(gè)策略是同時(shí)投入使用的,而不是AB兩種策略分先后上線,這樣會(huì)有其他因素影響。

2. 同質(zhì)性

兩個(gè)策略對(duì)應(yīng)的使用群體需要保證盡量一致。

四、AB測(cè)試實(shí)驗(yàn)詳解

1. 流量分配規(guī)則:正交與互斥

(1)正交實(shí)驗(yàn)

每個(gè)獨(dú)立實(shí)驗(yàn)為一層,一份流量穿越每層實(shí)驗(yàn)時(shí),都會(huì)隨機(jī)打散再重組,保證每層流量數(shù)量相同。

(2)互斥實(shí)驗(yàn)

實(shí)驗(yàn)在同一層拆分流量,不論如何拆分,不同組的流量是不重疊的。

(3)什么情況下正交、互斥分配流量?

我們剛剛就用的正交流量分配方式,導(dǎo)致了錯(cuò)誤的數(shù)據(jù)結(jié)果,如果那個(gè)實(shí)驗(yàn)我們用互斥的流量分配方法就完美的解決了這個(gè)問(wèn)題。

AB測(cè)試實(shí)驗(yàn)中,兩個(gè)或多個(gè)實(shí)驗(yàn)內(nèi)容相互影響則選擇互斥方法分配流量,兩個(gè)或多個(gè)實(shí)驗(yàn)內(nèi)容不會(huì)相互影響則選擇正交方法分配流量。

  • 正交:可以節(jié)省流量;
  • 互斥:可以讓耦合的實(shí)驗(yàn)完美剝離開(kāi)來(lái)不互相影響。

(4)舉個(gè)例子

在詳情頁(yè)面上做兩個(gè)實(shí)驗(yàn):

  • 其中一個(gè)是轉(zhuǎn)化按鈕顏色的AB測(cè)試實(shí)驗(yàn);
  • 另外一個(gè)是轉(zhuǎn)化按鈕文案的AB測(cè)試實(shí)驗(yàn)。

如果我們使用正交分配流量的方式會(huì)出現(xiàn)什么情況呢?

也就是流量同時(shí)命中實(shí)驗(yàn)一與實(shí)驗(yàn)二,最后展現(xiàn)在用戶面前的就是如下圖四種情況,這種情況我們是無(wú)法統(tǒng)計(jì)出準(zhǔn)確的數(shù)據(jù)結(jié)果的,因?yàn)橐呀?jīng)違背了單一變量原則。

這種最好使用互斥來(lái)分配流量,一部分用戶命中實(shí)驗(yàn)一、另一部分用戶命中實(shí)驗(yàn)二。

2. AB測(cè)試系統(tǒng)實(shí)驗(yàn)架構(gòu)

AB測(cè)試系統(tǒng)實(shí)驗(yàn)架構(gòu)包括:應(yīng)用層-實(shí)驗(yàn)層-策略層。

(1)應(yīng)用層

應(yīng)用層級(jí)別最好,應(yīng)用層與應(yīng)用層之間的流量是正交的。

(2)實(shí)驗(yàn)層

實(shí)驗(yàn)層是應(yīng)用層子層,實(shí)驗(yàn)層與實(shí)驗(yàn)層之間的流量是互斥的。

(3)策略層

策略層是實(shí)驗(yàn)層子層,一個(gè)實(shí)驗(yàn)可以有多個(gè)策略,多個(gè)策略之間流量相互不影響。

舉個(gè)例子:

  • 應(yīng)用:App客戶端
  • 實(shí)驗(yàn):購(gòu)買按鈕顏色
  • 策略:紅色、橘色

3. 創(chuàng)建實(shí)驗(yàn)

創(chuàng)建實(shí)驗(yàn)時(shí)一般先設(shè)置好實(shí)驗(yàn)條件和統(tǒng)計(jì)指標(biāo)

實(shí)驗(yàn)條件:AB測(cè)試系統(tǒng)可以對(duì)一些條件的用戶進(jìn)行限制,城市、年級(jí)、新老用戶、版本號(hào)、平臺(tái)(iOS、Android、h5)。這里我們完全可以直接引入用戶畫(huà)像系統(tǒng)直接進(jìn)行人群定向取做AB測(cè)試實(shí)驗(yàn)。傳送門:《用戶畫(huà)像如何從搭建到應(yīng)用實(shí)戰(zhàn)?

這個(gè)功能主要是針對(duì)滿足這樣實(shí)驗(yàn)條件的用戶進(jìn)行分流,如不滿足這些條件則不分流,直接命中默認(rèn)策略。默認(rèn)策略是我們?cè)趧?chuàng)建策略時(shí)勾選的,如果用戶不滿足條件命中默認(rèn)策略,這些用戶產(chǎn)生的數(shù)據(jù)是不參與計(jì)算的,也就不會(huì)影響實(shí)驗(yàn)結(jié)果。

(1)城市、年級(jí)、新老用戶

這幾個(gè)條件很好理解,就是指用戶所在城市、年級(jí)、新老,但需要用戶登錄才能拿到這樣的信息。

如果設(shè)定了實(shí)驗(yàn)條件,用戶處于非登錄態(tài)怎么辦呢?

非登錄態(tài)的用戶我們認(rèn)為他是不滿足實(shí)驗(yàn)條件的,所以會(huì)走默認(rèn)策略,這樣會(huì)避免一些不滿足實(shí)驗(yàn)條件的用戶卻命中實(shí)驗(yàn)的可能。但為了保證同一個(gè)用戶在登入登出看到的頁(yè)面是相同的,所以這部分人即使登錄后也會(huì)走默認(rèn)策略。

但不是全部未登錄用戶都會(huì)這樣,我們判斷當(dāng)前時(shí)間與未登錄用戶剛登錄的時(shí)間點(diǎn)的差值是否大于兩天。

如果大于兩天我們會(huì)讓他命中實(shí)驗(yàn),進(jìn)行分流,這樣也是為了保證每天下載的大量用戶也會(huì)命中AB測(cè)試的情況,達(dá)到一個(gè)平衡的狀態(tài)。

(2)適用版本

這里的版本是針對(duì)客戶端的AB測(cè)試提供的功能。

比如:iOS 在1.0.1 版本,Android在1.0.2版本上線一個(gè)AB測(cè)試實(shí)驗(yàn)。

如果不綁定版本號(hào)會(huì)出現(xiàn)什么情況?

因?yàn)榘姹景l(fā)布,除強(qiáng)制升級(jí)外,用戶還處于老版本。對(duì)于老版本的用戶也會(huì)命中實(shí)驗(yàn),但是這些用戶并沒(méi)有看到不同的策略,就會(huì)出現(xiàn),AB測(cè)試系統(tǒng)分給用戶A策略,但是用戶看到的是B策略,最終影響數(shù)據(jù)準(zhǔn)確性。

版本號(hào)設(shè)置會(huì)向上兼容,也就是說(shuō)只有此版本號(hào),或者高于此版本的用戶才能命中實(shí)驗(yàn)。

(3)平臺(tái)

平臺(tái)分為3種,分別為:iOS客戶端、Android客戶端、JS(H5)

分別針對(duì)不同的平臺(tái)進(jìn)行的AB測(cè)試。

這里不說(shuō)iOS和Android,只說(shuō)一下H5,因?yàn)镠5的埋點(diǎn)上報(bào)與客戶端不一樣,H5 的分流的唯一ID也與客戶端不一樣??蛻舳说姆至魇褂玫腎D是設(shè)備ID,H5則是cookieID。

統(tǒng)計(jì)指標(biāo):

(1)對(duì)于AB兩個(gè)策略上線后,我們需要跟蹤兩個(gè)策略的數(shù)據(jù)效果

這兩個(gè)策略的效果數(shù)據(jù)來(lái)源就是頁(yè)面的瀏覽與按鈕的點(diǎn)擊兩個(gè)埋點(diǎn)事件來(lái)提供數(shù)據(jù)支持的。比如:客戶端需要對(duì)課程詳情頁(yè)的報(bào)名按鈕樣式進(jìn)行AB測(cè)試實(shí)驗(yàn),數(shù)據(jù)監(jiān)控的時(shí)候我們就需要統(tǒng)計(jì)進(jìn)入詳情頁(yè)的人數(shù)與報(bào)名按鈕點(diǎn)擊uv進(jìn)行統(tǒng)計(jì)。

以報(bào)名按鈕uv/詳情頁(yè)uv此數(shù)值來(lái)統(tǒng)計(jì)報(bào)名按鈕樣式的AB兩種策略效果,那么在創(chuàng)建實(shí)驗(yàn)時(shí)就需要確定統(tǒng)計(jì)指標(biāo),確定指標(biāo)后就需要確定實(shí)驗(yàn)所需要哪些埋點(diǎn)指標(biāo)統(tǒng)計(jì)。這里就需要詳情頁(yè)uv以及報(bào)名按鈕uv兩個(gè)埋點(diǎn)事件

當(dāng)然還有更負(fù)責(zé)的數(shù)據(jù)指標(biāo),但都可以通過(guò)埋點(diǎn)數(shù)據(jù)上報(bào)來(lái)進(jìn)行統(tǒng)計(jì)。

(2)計(jì)算方式

假設(shè)一個(gè)漏斗中包含了 A、B、C、D、E 五個(gè)步驟,選擇的時(shí)間范圍是 2015 年 1 月 1 日到 2015 年 1 月 3 日,窗口期是 1 天。那么,如果用戶在2015年1月1日到2015年1月3日觸發(fā)了步驟 A,并且在步驟 A 發(fā)生的 1 天內(nèi),依順序依次觸發(fā)了 B、C、D、E,則視作該用戶完成了一次成功的漏斗轉(zhuǎn)化。

在這個(gè)過(guò)程中,如果穿插了一些其它的步驟或者行為,例如在滿足時(shí)間限制的情況下,用戶的行為順序是 A > X > B > X > C > D > X > E,X 代表任意一個(gè)事件,則該用戶依然視作完成了一次成功的漏斗轉(zhuǎn)化。

如果該用戶在這個(gè)事件限制范圍內(nèi),依次觸發(fā)了 A > B > C > E,則該用戶沒(méi)有完成該漏斗的轉(zhuǎn)化,并且會(huì)被記作步驟 C 的流失用戶。

考慮一個(gè)更復(fù)雜的情況,如果一個(gè)用戶在所選時(shí)段內(nèi)有多個(gè)事件都符合某個(gè)轉(zhuǎn)化步驟的定義,那么會(huì)優(yōu)先選擇更靠近最終轉(zhuǎn)化目標(biāo)的事件作為轉(zhuǎn)化事件,并在第一次達(dá)到最終轉(zhuǎn)化目標(biāo)時(shí)停止轉(zhuǎn)化的計(jì)算。

假設(shè)一個(gè)漏斗的步驟定義是:訪問(wèn)首頁(yè)、選擇支付方式、支付成功,那么不同用戶的行為序列及實(shí)際轉(zhuǎn)化步驟(標(biāo)紅部分)見(jiàn)如下例子:

  • 例 1:訪問(wèn)首頁(yè) -> 選擇支付方式(支付寶) -> 選擇支付方式(微信)-> 支付成功。
  • 例 2:訪問(wèn)首頁(yè) -> 選擇支付方式(支付寶) -> 訪問(wèn)首頁(yè) -> 選擇支付方式(微信)-> 支付成功。
  • 例 3:訪問(wèn)首頁(yè) -> 選擇支付方式(支付寶) -> 訪問(wèn)首頁(yè) -> 選擇支付方式(微信)-> 支付成功 -> 選擇支付方式(微信)-> 支付成功。

五、分流引擎

分流策略:簡(jiǎn)單的理解就是哪些用戶會(huì)命中策略A,哪些用戶會(huì)命中策略B。

在說(shuō)分流策略之前先舉個(gè)例子,配合例子更好理解。

假設(shè)報(bào)名按鈕顏色實(shí)驗(yàn)分50%流量,策略“紅色”按鈕分流量40%,策略“藍(lán)色”按鈕分流量60%

例如:取模10000,那報(bào)名按鈕顏色實(shí)驗(yàn)的數(shù)字區(qū)間為0-5000;10000*50%。

策略“紅色”按鈕數(shù)字區(qū)間為0-2000;5000*40%。

策略“藍(lán)色”按鈕數(shù)字區(qū)間為2000-5000;2000+5000*60%。

現(xiàn)在我們對(duì)用戶唯一id,應(yīng)用id進(jìn)行哈希。哈希后得到一個(gè)數(shù)字,這個(gè)數(shù)字落到哪個(gè)數(shù)字區(qū)間就將用戶分到哪個(gè)策略中去。經(jīng)測(cè)試10w次分流,8s,流量diff在1%以內(nèi),每個(gè)應(yīng)用分到的用戶正交,不相互影響。

如圖:

六、對(duì)接方式

AB測(cè)試系統(tǒng)和App服務(wù)端或H5服務(wù)端對(duì)接,分別有兩個(gè)接口:一個(gè)是策略請(qǐng)求接口、一個(gè)是埋點(diǎn)接口。

1. 埋點(diǎn)接口

AB測(cè)試系統(tǒng)將接口參數(shù)傳給服務(wù)端,服務(wù)端將參數(shù)傳給客戶端和H5前端。

客戶端或者前端遍歷這些 eventids(埋點(diǎn)事件id)如果有用戶命中這些埋點(diǎn)事件則上百 abtestid key及值。

2. 策略接口

例如實(shí)驗(yàn)是客戶端報(bào)名按鈕“紅色”、“藍(lán)色”。

當(dāng)流量進(jìn)入到客戶端后, 客戶端向服務(wù)端詢問(wèn):我這有倆顏色的按鈕,我要展示哪個(gè)顏色的按鈕???

服務(wù)端:我暫時(shí)也不知道,我?guī)湍銌?wèn)問(wèn)AB測(cè)試服務(wù)。

服務(wù)端問(wèn)AB測(cè)試服務(wù):客戶端來(lái)流量了,有兩個(gè)顏色的按鈕,需要展示哪個(gè)顏色的按鈕???

AB測(cè)試服務(wù):展示“紅色”按鈕。

服務(wù)端:我知道了,并告訴客戶端:展示“紅色”按鈕。

客戶端:我知道了,客戶端展示“紅色”報(bào)名按鈕。

七、AB測(cè)試效果分析

1. 我們?yōu)槭裁匆黾僭O(shè)檢驗(yàn)?

AB測(cè)試 是典型的通過(guò)樣本數(shù)據(jù)估計(jì)總體數(shù)據(jù)效果的方法,所以為了避免出現(xiàn)小概率錯(cuò)誤,我們需要對(duì)AB測(cè)試的結(jié)果進(jìn)行假設(shè)檢驗(yàn)。

2. 如何進(jìn)行假設(shè)檢驗(yàn)?

AB測(cè)試的假設(shè)檢驗(yàn)一般為兩個(gè)總體成數(shù)的假設(shè)檢驗(yàn),具體可看《一文讀懂假設(shè)檢驗(yàn)怎么做》

 

作者:斑馬

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

題圖來(lái)自Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 對(duì)用戶唯一id,應(yīng)用id進(jìn)行哈希是什么意思,應(yīng)用id是實(shí)驗(yàn)的ID嗎?

    來(lái)自廣東 回復(fù)
  2. 寫的有點(diǎn)復(fù)雜

    來(lái)自江蘇 回復(fù)
  3. 干貨,有點(diǎn)復(fù)雜,搭建一個(gè)AB測(cè)試喜歡不簡(jiǎn)單啊。

    來(lái)自廣東 回復(fù)
  4. 能分享一下管理后臺(tái)的原型嗎

    來(lái)自廣東 回復(fù)
    1. 直接伸手要啊

      來(lái)自上海 回復(fù)
  5. 很棒,想看看管理后臺(tái)的設(shè)計(jì)

    來(lái)自四川 回復(fù)
  6. 如果默認(rèn)策略涌入過(guò)多用戶,于是對(duì)照組和實(shí)驗(yàn)組的流量會(huì)產(chǎn)生差異,這樣怎么避免辛普森悖論?

    來(lái)自中國(guó) 回復(fù)
  7. 好棒的文章,講的非常詳細(xì),謝謝作者分享

    來(lái)自上海 回復(fù)
  8. 閱讀完google的重疊實(shí)驗(yàn)論文,你舉的對(duì)按鈕同時(shí)進(jìn)行顏色和文案改動(dòng)的例子可以用正交來(lái)做。正交實(shí)驗(yàn)本身的作用就是為了消除其它實(shí)驗(yàn)對(duì)所做實(shí)驗(yàn)的影響。

    來(lái)自北京 回復(fù)
    1. 不可以吧,這個(gè)實(shí)驗(yàn)的轉(zhuǎn)化結(jié)果是點(diǎn)擊購(gòu)買按鈕,這兩個(gè)因素(按鈕顏色和文案)都會(huì)影響結(jié)果,具有耦合性啊

      來(lái)自上海 回復(fù)
  9. 很詳細(xì) 多謝

    回復(fù)
  10. 請(qǐng)問(wèn)下。真實(shí)應(yīng)用中,什么情況下會(huì)用正交實(shí)驗(yàn),什么情況會(huì)用版本分流呢?

    回復(fù)
    1. 文中已經(jīng)舉例子了。

      回復(fù)
  11. 老哥?。?!寫得也太用心太細(xì)致了吧?。。》浅?shí)用靠譜!!萬(wàn)分感謝哈哈哈

    來(lái)自浙江 回復(fù)
    1. ?? 送你上去

      來(lái)自北京 回復(fù)
  12. 看不懂,從正交和互斥那里開(kāi)始就看不懂

    來(lái)自廣東 回復(fù)
    1. 看完下邊的例子 就會(huì)懂了

      來(lái)自北京 回復(fù)
  13. 那個(gè)區(qū)間的計(jì)算沒(méi)看懂? 可否解釋一下 ??

    來(lái)自福建 回復(fù)
    1. 哪里沒(méi)看懂?

      回復(fù)
    2. 2000-5000;2000+5000*60%。 這個(gè)

      來(lái)自福建 回復(fù)
    3. 一共5000,紅色占據(jù)2000,藍(lán)色占剩余3000。5000*60%。但是是從2001開(kāi)始的。正好是2001-5000

      回復(fù)
    4. 這樣

      來(lái)自福建 回復(fù)
    5. 你好,請(qǐng)問(wèn)流量不是用過(guò)平均分配嗎,怎么一個(gè)分了2000,一個(gè)分了3000?
      然后我還有另外一個(gè)疑問(wèn),設(shè)備id與游客登錄設(shè)備id是否相同,這里判斷的目的是為什么?為什么大于兩天就也算實(shí)驗(yàn)數(shù)據(jù),麻煩幫忙講解下

      來(lái)自廣東 回復(fù)
    6. 1、AB測(cè)試流量不一定是均分,主要看業(yè)務(wù)需求。但最好是均分的,因?yàn)檫@樣能避免辛普森悖論。
      2、設(shè)備ID 跟所用設(shè)備有關(guān),一般不會(huì)發(fā)生變化
      3、這個(gè)是2天的緩存,當(dāng)然也可以是1天,主要用戶來(lái) 避免用戶 突然發(fā)生身份或其他行為變化 用戶所面對(duì)的頁(yè)面突然發(fā)生變化的情況

      來(lái)自北京 回復(fù)
    7. 你可以理解為0-5000是用戶在ab中的唯一ID,區(qū)別于在系統(tǒng)中的唯一身份id

      回復(fù)