終于有人把A/B測試講明白了
導(dǎo)讀:對(duì)照實(shí)驗(yàn)有時(shí)也稱為A/B測試、A/B/n 測試(強(qiáng)調(diào)多變體測試)、實(shí)地實(shí)驗(yàn)、隨機(jī)對(duì)照實(shí)驗(yàn)、分拆測試、分桶測試和平行飛行測試。本文帶你了解一些相關(guān)術(shù)語及應(yīng)用案例。
一個(gè)精確的測量勝過一千個(gè)專家的意見。
——海軍準(zhǔn)將格雷斯·霍珀
2012年,必應(yīng)(微軟的搜索引擎)的一名員工提出了關(guān)于改進(jìn)搜索頁廣告標(biāo)題陳列方式的一個(gè)想法 (Kohavi and Thomke 2017):將標(biāo)題下方的第一行文字移至標(biāo)題同一行,以使標(biāo)題變長,如圖1.1所示。

▲圖1.1 改進(jìn)必應(yīng)上廣告陳列方式的實(shí)驗(yàn)
在成百上千的產(chǎn)品建議中,沒有人預(yù)料到這樣一個(gè)簡單的改動(dòng)竟然成了必應(yīng)歷史上最成功的實(shí)現(xiàn)營收增長的想法!
起初,這個(gè)產(chǎn)品建議的優(yōu)先級(jí)很低,被埋沒在待辦列表中超過半年。直到有一天,一個(gè)軟件工程師決定試一試這個(gè)從編程角度來說非常簡單的改動(dòng)。
他實(shí)現(xiàn)了該想法,并通過真實(shí)的用戶反饋來評(píng)估它:隨機(jī)給一部分用戶顯示新的標(biāo)題陳列方式,而對(duì)另一部分用戶依舊顯示老版本。用戶在網(wǎng)站上的行為,包括廣告點(diǎn)擊以及產(chǎn)生的營收都被一一記錄。
這就是一個(gè)A/B測試的例子:一種簡單的用于比較A和B兩組變體的對(duì)照實(shí)驗(yàn)。A和B也分別稱為對(duì)照組和實(shí)驗(yàn)組。
該測試開始后的幾個(gè)小時(shí),“營收過高”的警報(bào)被觸發(fā),提示實(shí)驗(yàn)有異常。實(shí)驗(yàn)組,也就是新的標(biāo)題陳列方式,產(chǎn)生了過高的廣告營收。這種“好到難以置信”的警報(bào)非常有用,它們通常能提示嚴(yán)重的漏洞,如營收被重復(fù)上報(bào)(雙重計(jì)費(fèi))或者因網(wǎng)頁出錯(cuò)而導(dǎo)致只能看到廣告。
然而就這個(gè)實(shí)驗(yàn)而言,營收增長是真實(shí)有效的。在沒有顯著損害其他關(guān)鍵用戶體驗(yàn)指標(biāo)的情況下,必應(yīng)的營收增長高達(dá)12%,這意味著僅在美國,當(dāng)年的營收增長就將超過1億美金。這一實(shí)驗(yàn)在后來很長一段時(shí)間里被多次重復(fù)驗(yàn)證。
這個(gè)例子體現(xiàn)了關(guān)于線上對(duì)照實(shí)驗(yàn)的幾個(gè)關(guān)鍵主題:
一個(gè)想法的價(jià)值很難被預(yù)估。在這個(gè)案例中,一個(gè)價(jià)值超過每年1億美金的簡單的產(chǎn)品改動(dòng)被耽擱了好幾個(gè)月。
小改動(dòng)可以有大影響。一個(gè)工程師幾天的工作就能帶來每年1億美金的回報(bào)。當(dāng)然這樣極端的投資回報(bào)率(return-on-investment, ROI)也很罕見。
有很大影響的實(shí)驗(yàn)是少見的。必應(yīng)每年運(yùn)行上萬個(gè)實(shí)驗(yàn),但這種小改動(dòng)實(shí)現(xiàn)大增長的案例幾年才出一個(gè)。
運(yùn)行實(shí)驗(yàn)的啟動(dòng)成本要低。必應(yīng)的工程師可以使用微軟的實(shí)驗(yàn)平臺(tái)ExP,來便利地科學(xué)評(píng)估產(chǎn)品改動(dòng)。
綜合評(píng)估標(biāo)準(zhǔn)(overall evaluation criterion,OEC)必須清晰。在這個(gè)案例中,營收是OEC的一個(gè)關(guān)鍵組成,但僅營收本身不足以成為一個(gè)OEC。以營收為唯一指標(biāo)可能導(dǎo)致網(wǎng)站滿是廣告而傷害用戶體驗(yàn)。必應(yīng)使用的OEC權(quán)衡了營收指標(biāo)和用戶體驗(yàn)指標(biāo),包括人均會(huì)話數(shù)(用戶是否放棄使用或者活躍度增加)和其他一些成分。關(guān)鍵宗旨是即使?fàn)I收大幅增長,用戶體驗(yàn)指標(biāo)也不能顯著下降。
接下來先介紹對(duì)照實(shí)驗(yàn)的術(shù)語。
01 線上對(duì)照實(shí)驗(yàn)的術(shù)語
對(duì)照實(shí)驗(yàn)有一段長而有趣的歷史,我們的網(wǎng)站有相關(guān)分享(Kohavi, Tang and Xu 2019)。對(duì)照實(shí)驗(yàn)有時(shí)也稱為A/B測試、A/B/n 測試(強(qiáng)調(diào)多變體測試)、實(shí)地實(shí)驗(yàn)、隨機(jī)對(duì)照實(shí)驗(yàn)、分拆測試、分桶測試和平行飛行測試。
很多公司廣泛使用線上對(duì)照實(shí)驗(yàn),例如愛彼迎(Airbnb)、亞馬遜(Amazon)、繽客(Booking.com)、易貝(eBay)、臉書(Facebook)、谷歌(Google)、領(lǐng)英(LinkedIn)、來福車(Lyft)、微軟(Microsoft)、奈飛(Netflix)、推特(Twitter)、優(yōu)步(Uber)、Yahoo!/Oath和Yandex(Gupta et al. 2019)。
這些公司每年運(yùn)行成千上萬個(gè)實(shí)驗(yàn),實(shí)驗(yàn)有時(shí)涉及百萬量級(jí)的用戶,測試內(nèi)容更是涵蓋各個(gè)方面,包括用戶界面(User Interface, UI)的改動(dòng)、關(guān)聯(lián)算法(搜索、廣告、個(gè)性化、推薦等)、延遲/性能、內(nèi)容管理系統(tǒng)、客戶支持系統(tǒng)等。
實(shí)驗(yàn)可運(yùn)行于多種平臺(tái)或渠道:網(wǎng)站、桌面應(yīng)用程序、移動(dòng)端應(yīng)用程序和郵件。
最常見的線上對(duì)照實(shí)驗(yàn)把用戶隨機(jī)分配到各變體,且這種分配遵循一以貫之的原則(一個(gè)多次訪問的用戶始終會(huì)被分配至同一變體)。
在開篇必應(yīng)的例子中,對(duì)照組是原本的廣告標(biāo)題陳列方式,實(shí)驗(yàn)組是長標(biāo)題陳列方式。用戶在必應(yīng)網(wǎng)站上的互動(dòng)被以日志的形式記錄,即監(jiān)測和上報(bào)。根據(jù)上報(bào)的數(shù)據(jù)計(jì)算得到的各項(xiàng)指標(biāo)可以幫助我們?cè)u(píng)估兩個(gè)變體之間的區(qū)別。
最簡單的對(duì)照實(shí)驗(yàn)有兩個(gè)變體,如圖1.2所示:對(duì)照組(A)和實(shí)驗(yàn)組(B)。

▲圖1.2 一個(gè)簡單的對(duì)照實(shí)驗(yàn):A/B測試
以下,我們將遵循Kohavi和Longbottom等人(Kohavi and Longbottom (2017), Kohavi, Longbottom et al. (2009))使用的術(shù)語進(jìn)行介紹,并提供其他領(lǐng)域的相關(guān)術(shù)語。更多關(guān)于實(shí)驗(yàn)和A/B測試的資源可以在本章結(jié)尾的補(bǔ)充閱讀部分中找到。
1. 綜合評(píng)估標(biāo)準(zhǔn)(Overall Evaluation Criterion, OEC)
實(shí)驗(yàn)?zāi)繕?biāo)的定量測量。例如,你的OEC可能是人均活躍天數(shù),指示實(shí)驗(yàn)期間用戶有幾天是活躍的(即有訪問并有其他行動(dòng))。OEC的增長意味著用戶更頻繁地訪問了網(wǎng)站,這是好的結(jié)果。
OEC需要在短期內(nèi)(實(shí)驗(yàn)期間)可測量,同時(shí)要對(duì)長期戰(zhàn)略目標(biāo)有因果關(guān)系的驅(qū)動(dòng)作用。在搜索引擎的例子中,OEC可以是使用量(如人均會(huì)話數(shù))、關(guān)聯(lián)(如成功的會(huì)話、成功需時(shí))以及廣告營收的綜合考量(有些搜索引擎不會(huì)用到所有這些指標(biāo),有些則會(huì)用到更多種類的指標(biāo))。
在統(tǒng)計(jì)學(xué)中,OEC也常稱為響應(yīng)變量或因變量(Mason, Gunst and Hess 1989, Box, Hunter and Hunter 2005)。其他的同義詞還有結(jié)果、評(píng)估和適應(yīng)度函數(shù)(Quarto-vonTivadar 2006)。
雖然選擇單一指標(biāo)(可能是一個(gè)對(duì)多重目標(biāo)進(jìn)行加權(quán)組合的指標(biāo))常常是必須的和高度推薦的(Roy 2001, 50, 405-429),但實(shí)驗(yàn)可能有多重目標(biāo),且分析也可以采用平衡的分析看板的方法(Kaplan and Norton 1996)。
2. 參數(shù)
對(duì)照實(shí)驗(yàn)中被認(rèn)為會(huì)影響OEC或其他我們感興趣的指標(biāo)的變量。參數(shù)有時(shí)也稱為因素或變量。參數(shù)的賦值也稱為因子水平。一個(gè)簡單的A/B測試通常只有一個(gè)參數(shù),兩個(gè)賦值。對(duì)于線上實(shí)驗(yàn),單變量多賦值(如A/B/C/D)的設(shè)計(jì)非常普遍。
多變量測試,也稱多元檢驗(yàn),則可用于同時(shí)評(píng)估多個(gè)參數(shù)(變量),比如字體顏色和字體大小。多變量測試可以幫助實(shí)驗(yàn)者在參數(shù)間有交叉影響時(shí)找到全局最優(yōu)值。
3. 變體
被測試的用戶體驗(yàn),一般通過給參數(shù)賦值實(shí)現(xiàn)。對(duì)于簡單的A/B測試,A和B就是兩個(gè)變體,通常被稱為對(duì)照組和實(shí)驗(yàn)組。在某些文獻(xiàn)中,變體只指代實(shí)驗(yàn)組。而我們把對(duì)照組也看作一種特殊的變體——用于進(jìn)行對(duì)比的原始版本。
比如,實(shí)驗(yàn)中出現(xiàn)漏洞時(shí),你需要中止這個(gè)實(shí)驗(yàn),并確保所有用戶被分配到對(duì)照組這個(gè)變體。
4. 隨機(jī)化單元
以偽隨機(jī)化(如哈希)過程將單元(如用戶或頁面)映射至不同變體。正確的隨機(jī)分配過程非常重要,它可以確保不同變體的群體在統(tǒng)計(jì)意義上的相似性,從而高概率地確立因果關(guān)系。
映射時(shí)需遵循一以貫之和獨(dú)立的原則(即如果以用戶為隨機(jī)化單元,那么同一個(gè)用戶應(yīng)該自始至終有一致的體驗(yàn),并且一個(gè)用戶被分配到某一變體的信息不會(huì)透露任何其他用戶的分配信息)。
運(yùn)行線上對(duì)照實(shí)驗(yàn)時(shí),非常普遍且我們也強(qiáng)烈推薦的是以用戶為隨機(jī)化單元。有些實(shí)驗(yàn)設(shè)計(jì)會(huì)選擇其他的隨機(jī)化單元,例如頁面、會(huì)話或用戶日(即同一用戶在由服務(wù)器決定的每個(gè)24小時(shí)的窗口內(nèi)體驗(yàn)不變)。
正確的隨機(jī)分配是至關(guān)重要的!如果實(shí)驗(yàn)設(shè)計(jì)為各個(gè)變體獲得相同比例的用戶,那么每個(gè)用戶被分配到任何一個(gè)變體的概率應(yīng)該是一樣的。千萬不要輕視隨機(jī)分配。下面的例子解釋了正確進(jìn)行隨機(jī)分配的挑戰(zhàn)和重要性。
20世紀(jì)40年代,RAND公司需要為蒙特卡羅方法尋找隨機(jī)數(shù),為此,他們制作了一份由脈沖機(jī)器生成的百萬亂數(shù)表。然后由于硬件偏移,原表被發(fā)現(xiàn)有嚴(yán)重的偏差,導(dǎo)致需要為新版重新生成隨機(jī)數(shù)(RAND 1995)。
對(duì)照實(shí)驗(yàn)起初應(yīng)用于醫(yī)藥領(lǐng)域。美國退伍軍人事務(wù)部曾做過一個(gè)用于結(jié)核的鏈霉素的藥物試驗(yàn),由于醫(yī)師在甄選程序中出現(xiàn)了偏差,這一試驗(yàn)最終宣告失敗(Mark 1997)。英國有一項(xiàng)類似的試驗(yàn)以盲態(tài)程序甄選并獲得了成功,成為對(duì)照試驗(yàn)領(lǐng)域的分水嶺時(shí)刻(Doll 1998)。
任何因素都不應(yīng)影響變體的分配。用戶(隨機(jī)化單元)不能被隨意地分配(Weiss 1997)。值得注意的是,隨機(jī)不代表“隨意或無計(jì)劃,而是一種基于概率的慎重選擇”(Mosteller, Gilbert and Mcpeek 1983)。Senn (2012)探討了更多關(guān)于隨機(jī)分配的迷思。
02 為什么進(jìn)行實(shí)驗(yàn)?相關(guān)性、因果關(guān)系和可信賴度
假設(shè)你在一家提供訂閱服務(wù)的公司(比如奈飛)工作,公司每個(gè)月有X%的用戶流失(取消訂閱)。你決定引入一個(gè)新功能,觀察到使用這個(gè)新功能的用戶的流失率僅為一半:X%/2。
你可能據(jù)此推斷出因果關(guān)系:該新功能使得流失率減半。由此得出結(jié)論:如果我們能讓更多的用戶發(fā)現(xiàn)這一功能并使用它,訂閱數(shù)將會(huì)激增。錯(cuò)了!根據(jù)這個(gè)數(shù)據(jù),我們無法得出該功能降低或增加用戶流失率的結(jié)論,兩個(gè)方向皆有可能。
同樣提供訂閱服務(wù)的微軟Office 365有一個(gè)例子表明了這種邏輯的謬誤。使用Office 365時(shí)看到錯(cuò)誤信息并遭遇系統(tǒng)崩潰的用戶有較低的流失率,但這并不代表Office 365應(yīng)該顯示更多的錯(cuò)誤信息或者降低代碼質(zhì)量使得系統(tǒng)頻繁崩潰。
這三個(gè)事件都有一個(gè)共同的因素:使用率。產(chǎn)品的重度用戶看到較多的錯(cuò)誤信息,經(jīng)歷較多的系統(tǒng)崩潰,其流失率也較低。相關(guān)性并不意味著因果關(guān)系,過度依賴觀察結(jié)果往往導(dǎo)致做出錯(cuò)誤的決策。
1995年,Guyatt et al. (1995)引入了證據(jù)可信度等級(jí)來為醫(yī)學(xué)文獻(xiàn)做出推薦評(píng)級(jí),Greenhalgh在之后關(guān)于循證醫(yī)學(xué)的實(shí)踐討論中進(jìn)一步擴(kuò)展了這個(gè)模型(1997, 2014)。
圖1.3展示了一個(gè)翻譯成我們的術(shù)語的基礎(chǔ)版證據(jù)可信度等級(jí)(Bailar 1983, 1)。隨機(jī)對(duì)照實(shí)驗(yàn)是確立因果關(guān)系的黃金準(zhǔn)則。對(duì)隨機(jī)對(duì)照實(shí)驗(yàn)的系統(tǒng)性檢閱(即統(tǒng)合分析)則有更強(qiáng)的實(shí)證性和普適性。

▲圖1.3 用于評(píng)估實(shí)驗(yàn)設(shè)計(jì)質(zhì)量的證據(jù)可信度等級(jí) (Greenhalgh 2014)
這一領(lǐng)域還有更多更復(fù)雜的模型,比如牛津循證醫(yī)學(xué)中心提出的證據(jù)分級(jí)(Level of Evidence)(2009)。
谷歌、領(lǐng)英和微軟的實(shí)驗(yàn)平臺(tái)每年可以運(yùn)行成千上萬個(gè)線上對(duì)照實(shí)驗(yàn),并提供可信賴的實(shí)驗(yàn)結(jié)果。我們相信線上對(duì)照實(shí)驗(yàn)有以下特性:
它是以高概率確立因果關(guān)系的最佳科學(xué)方法。
能夠檢測其他技術(shù)難以檢測到的微小變動(dòng),比如隨時(shí)間的變化(靈敏度)。
能夠檢測到意想不到的變動(dòng)。雖然常被低估,但很多實(shí)驗(yàn)發(fā)掘了一些對(duì)其他指標(biāo)出乎意料的影響,比如性能的降低、系統(tǒng)崩潰和出錯(cuò)的增加或是對(duì)其他模塊的點(diǎn)擊的吞噬。
一個(gè)重點(diǎn)是實(shí)驗(yàn)中可能出現(xiàn)陷阱,我們需要給出能讓實(shí)驗(yàn)結(jié)果更可信賴的方法。線上對(duì)照實(shí)驗(yàn)有其獨(dú)一無二的線上收集大量可靠數(shù)據(jù)、隨機(jī)分配和避免或檢測陷阱的能力。當(dāng)線上對(duì)照實(shí)驗(yàn)不可行的時(shí)候,我們才推薦使用其他可信度較低的方法,如觀察性研究。
03 有效運(yùn)行對(duì)照實(shí)驗(yàn)的必要元素
科學(xué)嚴(yán)謹(jǐn)?shù)膶?duì)照實(shí)驗(yàn)并不能用于所有的決策。比如,你無法在一個(gè)投資并購(M&A)場景中運(yùn)行對(duì)照實(shí)驗(yàn),因?yàn)槲覀儫o法讓投資并購和它的虛擬事實(shí)(沒有該投資并購)同時(shí)發(fā)生。
接下來我們將梳理有效運(yùn)行對(duì)照實(shí)驗(yàn)的必要元素(Kohavi,Crook and Longbotham 2009),并提出機(jī)構(gòu)的宗旨。
存在可以互不干擾(或干擾很小)地被分配至不同變體的實(shí)驗(yàn)單元,比如實(shí)驗(yàn)組的用戶不會(huì)影響對(duì)照組的用戶。
有足夠的實(shí)驗(yàn)單元(如用戶)。為了對(duì)照實(shí)驗(yàn)的有效性,我們推薦實(shí)驗(yàn)應(yīng)包含上千個(gè)實(shí)驗(yàn)單元:數(shù)目越多,能檢測到的效應(yīng)越小。好消息是,即使是小型的軟件初創(chuàng)公司通常也能很快地累積足夠的用戶,從檢測較大的效應(yīng)開始運(yùn)行實(shí)驗(yàn)。隨著業(yè)務(wù)的增長,檢測較小變動(dòng)的能力會(huì)變得越來越重要(例如,大型網(wǎng)站必須有能力檢測出用戶體驗(yàn)關(guān)鍵指標(biāo)和營收百分比的微小變動(dòng)),而實(shí)驗(yàn)靈敏度也會(huì)隨著用戶基數(shù)的增長而提高。
關(guān)鍵指標(biāo)(最好是OEC)是經(jīng)過一致同意的,且可以在實(shí)踐中被評(píng)估。如果目標(biāo)難以測量,那么應(yīng)對(duì)使用的代理指標(biāo)達(dá)成一致。可靠的數(shù)據(jù)最好能以低成本被廣泛地收集到。在軟件領(lǐng)域,記錄系統(tǒng)事件和用戶行為通常比較簡單。
改動(dòng)容易實(shí)現(xiàn)。軟件的改動(dòng)一般比硬件的要簡單。然而即使是軟件的改動(dòng),有些領(lǐng)域也需要一定級(jí)別的質(zhì)量控制。推薦算法的改動(dòng)很容易實(shí)現(xiàn)和評(píng)估,但美國飛機(jī)的飛行控制系統(tǒng)軟件的改動(dòng)則需經(jīng)過美國聯(lián)邦航空管理局一整套不同的批準(zhǔn)流程。服務(wù)器端軟件比客戶端軟件要容易改動(dòng)得多,這就是為什么從客戶端軟件請(qǐng)求服務(wù)越來越普遍,從而使服務(wù)的升級(jí)和改動(dòng)可以更快實(shí)現(xiàn)并運(yùn)行對(duì)照實(shí)驗(yàn)。
大部分復(fù)雜的線上服務(wù)都有或者可以有這些必要組成部分,來運(yùn)行基于對(duì)照實(shí)驗(yàn)的敏捷開發(fā)流程。很多“軟件+服務(wù)”的實(shí)現(xiàn)也能相對(duì)容易地達(dá)到要求。Thomke指出機(jī)構(gòu)可以通過實(shí)驗(yàn)與“創(chuàng)新系統(tǒng)”的結(jié)合實(shí)現(xiàn)利益最大化(Thomke 2003)。敏捷軟件開發(fā)就是這樣的創(chuàng)新系統(tǒng)。
對(duì)照實(shí)驗(yàn)不可行的時(shí)候,也可以用建模或其他的實(shí)驗(yàn)技術(shù)。關(guān)鍵是,如果可以運(yùn)行對(duì)照實(shí)驗(yàn),那么它將提供評(píng)估改動(dòng)的最可靠且最靈敏的機(jī)制。


