A/B測試怎么做?火山引擎A/B測試全流程實踐分享

為什么要做 A/B 測試

首先我們看一個案例。字節(jié)跳動有一款中視頻產(chǎn)品叫西瓜視頻,最早它叫做頭條視頻。為了提升產(chǎn)品的品牌辨識度,團隊想給它起個更好的名字。經(jīng)過一些內(nèi)部調(diào)研和頭腦風(fēng)暴,征集到了西瓜視頻、奇妙視頻、筷子視頻、陽光視頻 4 個名字,于是團隊就針對一共 5 個 APP 名稱進行了 A/B 實驗。這個實驗中唯一改變的是應(yīng)用市場里該產(chǎn)品的名稱和對應(yīng)的 logo,實驗?zāi)康氖菫榱蓑炞C哪一個應(yīng)用名稱能更好地提升“頭條視頻” APP 在應(yīng)用商店的點擊率。最后西瓜視頻和奇妙視頻的點擊率位列前二,但差距不顯著,結(jié)合用戶調(diào)性等因素的綜合考量后,最終決定頭條視頻正式更名為西瓜視頻。

通過這個案例可以看到,A/B 測試可以幫助業(yè)務(wù)做最終決策。結(jié)合案例的直觀感受,我們可以這樣來定義 A/B 測試:在同一時間對目標(biāo)受眾做科學(xué)抽樣、分組測試以評估效果。

A/B測試怎么做?火山引擎A/B測試全流程實踐分享

以上圖圖示為例,假設(shè)我們有 100 萬用戶要進行 A/B 測試:

● 先選定目標(biāo)受眾,比如一線城市的用戶。

● A/B 測試不可能對所有用戶都進行實驗,所以要進行科學(xué)抽樣,選擇小部分流量進行實驗。

● 抽樣之后需要對樣本進行分組,比如 A 組保持現(xiàn)狀,B 組的某一個因素有所改變。

● 分組之后在同一時間進行實驗,就可以看到改變變量后用戶行為的變化。

● 再根據(jù)對應(yīng)實驗?zāi)繕?biāo)的指標(biāo),比如點擊率的高低,來評估實驗的結(jié)果。

以上就是我們對 A/B 測試的定義。目前,A/B 測試已被 Google、Facebook、亞馬遜等大型互聯(lián)網(wǎng)公司廣泛采用;字節(jié)跳動更是在 2012 年成立之初便開始使用 A/B 測試,公司內(nèi)部一直流傳一句話:一切皆可 A/B 測試。A/B 測試在字節(jié)跳動已是非常基礎(chǔ)的設(shè)施和文化,目前,字節(jié)跳動累計已有 80W+ 的 A/B 實驗,日新增實驗 1500+,同時運行試驗 1W+,服務(wù) 500+ 業(yè)務(wù)線。

那我們?yōu)槭裁匆?A/B 測試呢?我總結(jié)有 3 點原因:

● 風(fēng)險控制:小流量實驗可以避免直接上線效果不好造成損失。其次,實驗迭代的過程中,決策都是有科學(xué)依據(jù)的,可以避免系統(tǒng)性的偏差。

● 因果推斷:我們相信 A/B 實驗中的優(yōu)化和改變最終能影響到線上數(shù)據(jù)以及用戶的行為。在這個前提下,A/B 測試就是最好的因果推斷工具。

● 復(fù)利效應(yīng):A/B 測試是可以持續(xù)不斷進行的實驗,即使一次實驗提升的效果不大,但是長期下來復(fù)利效應(yīng)的積累會產(chǎn)生很大的變化和回報。

A/B 測試系統(tǒng)實現(xiàn)

了解了我們?yōu)槭裁匆?A/B 測試,下面我們來看一下火山引擎的 A/B 測試系統(tǒng)是如何實現(xiàn)的。

A/B測試怎么做?火山引擎A/B測試全流程實踐分享

上圖是火山引擎 A/B 測試系統(tǒng)的架構(gòu)示意圖,整體架構(gòu)分為幾層:

● 運行環(huán)境層:在最底層,服務(wù)可以運行在容器內(nèi),也可以運行在物理機上。

● 基礎(chǔ)設(shè)施層:會用到關(guān)系型數(shù)據(jù)庫和鍵值對。因為 A/B 測試要處理很大的數(shù)據(jù)量,這一層也會使用離線和實時的大數(shù)據(jù)組件。

● 服務(wù)層:包括實驗所需的分流服務(wù)、元信息服務(wù)、調(diào)度服務(wù)等。在 A/B 測試中我們也需要標(biāo)識用戶,因此這一層有設(shè)備服務(wù)。為了提供多種數(shù)據(jù)查詢,還有 OLAP 引擎。

● 業(yè)務(wù)層:包括實驗管理、指標(biāo)管理、Feature 管理、評估報告等。

● 接入層:包括 CDN、網(wǎng)絡(luò)防火墻、負(fù)載均衡。

● 應(yīng)用層:提供管理后臺控制實驗、查看報告等,SDK 調(diào)用。

●下面介紹幾個實驗流程的實現(xiàn)。

客戶端實驗參數(shù)傳遞及生效過程

A/B測試怎么做?火山引擎A/B測試全流程實踐分享

客戶端實驗的流程如上圖所示:

● 業(yè)務(wù)方開發(fā)策略,確定實驗內(nèi)容;

● 枚舉策略中的映射關(guān)系并在客戶端實現(xiàn)映射關(guān)系;

● 創(chuàng)建并開啟實驗;

● 客戶端已經(jīng)集成了火山引擎 A/B 測試系統(tǒng)的 SDK,向 A/B 測試系統(tǒng)請求分流服務(wù),判斷用戶命中哪些實驗?zāi)男┌姹?,下發(fā)參數(shù);

● 客戶端從 SDK 取到參數(shù),進行相對應(yīng)的流程完成實驗。

服務(wù)端實驗參數(shù)傳遞及生效過程

A/B測試怎么做?火山引擎A/B測試全流程實踐分享

服務(wù)端的實驗和客戶端類似:

● 設(shè)計實驗;

● 服務(wù)端實驗的 SDK 是跟業(yè)務(wù)系統(tǒng)比如服務(wù)端集成在一起。客戶是從其他 C 端用戶直接請求業(yè)務(wù)的服務(wù)端,該服務(wù)端會在本地 SDK 做決策;

● 決策完之后將參數(shù)下發(fā)到下游,使策略生效。

統(tǒng)計分析實踐

● 在統(tǒng)計分析中,我們總結(jié)了一些有用的實踐經(jīng)驗:

● 確定業(yè)務(wù)的指標(biāo)體系:可以從宏觀/微觀、長期/短期、橫向/縱向三個角度建設(shè)指標(biāo)體系。

● 分類檢驗:對指標(biāo)進行置信度計算的時候,并不會每次都用同一套方法,而是針對不同的指標(biāo)類型(包括轉(zhuǎn)化類、人均類、CTR 類等)進行不同的建模采用不同的方法。

● 統(tǒng)計修正:如果一個實驗開了多個組,可能犯了多重比較的錯誤。還有時開完實驗之后每天都會查看結(jié)果,這就犯了連續(xù)觀測的錯誤。所以在實踐中需要有一些統(tǒng)計修正的方法來修正行為。

● 基于葉貝斯體系的探索:區(qū)別于經(jīng)典的假設(shè)檢驗,我們也在探索基于葉貝斯體系,如何評估實驗效果,降低面向用戶使用時候的理解門檻。在智能流量調(diào)優(yōu)、模型超參數(shù)搜索等場景下有具體落地。

● 這里也跟大家分享一些 A/B 實驗設(shè)計背后的思考:

● 避免過度曝光:A/B 實驗中有一個很關(guān)鍵的點是決策哪些樣本應(yīng)該進入實驗。如果所有打開應(yīng)用的人都能命中實驗,實驗結(jié)果就不會很明顯。

● 進組和出組:假設(shè)我們對北京的用戶進行了實驗,有些人出差或者旅游離開北京之后還能命中實驗嗎?我們可以把這個決策留給實驗者,讓實驗者自己決定是進組還是出組。

● 和 Feature Flag 的珠聯(lián)璧合:實驗之前可以把能進行實驗的內(nèi)容抽象成 Feature Flag,簡單理解成功能開關(guān)。實驗完成之后的上線或者重復(fù)實驗,也可用 Feature Flag 進行管理。

字節(jié)跳動 A/B 測試最佳實踐

在字節(jié)跳動,A/B 測試已經(jīng)是一種企業(yè)文化,大家都認(rèn)可其價值,達成共識才能一起探討。A/B 測試跟其他環(huán)節(jié)是緊密相關(guān)的。我們在收集和分析數(shù)據(jù)之后會得到一些洞察,基于這些洞察可以知道有些環(huán)節(jié)是比較薄弱的,可進行提升,然后就可以提出假設(shè),設(shè)計 A/B 實驗,完成實驗之后評估效果。有可能實驗沒有達到預(yù)期效果,可以對實驗進行迭代繼續(xù)收集數(shù)據(jù),這樣就形成了以 A/B 測試為核心的業(yè)務(wù)增長閉環(huán)。

下面為大家介紹如何完整進行一次 A/B 實驗。

如何產(chǎn)生好的實驗想法

關(guān)于如何產(chǎn)生好的實驗想法,我們可以從定量分析和定性分析幾個角度來看。前面提到的構(gòu)建完善的指標(biāo)體系就是定量分析,這里不再贅述。在收集到指標(biāo)數(shù)據(jù)以后,對于指標(biāo)發(fā)生的異動進行現(xiàn)象分析,針對已存在問題(非異動),則可以進行新的產(chǎn)品策略或者運營策略迭代執(zhí)行。

定性分析可以分為三個方面:

● 產(chǎn)品本身的價值主張是什么?比如一款打車 APP 的價值主張是通過共享經(jīng)濟實現(xiàn)社會的效率提升,這個產(chǎn)品有沒有很好地體現(xiàn)價值主張?可以從這一方面產(chǎn)生一些實驗想法。

● 推動因素

相關(guān)性:同一個頁面中如果有不相關(guān)的功能,用戶大概率也不會點擊,這樣的設(shè)計就沒有效果。

清晰度:要表達的內(nèi)容(比如命名)是否足夠清晰。

緊迫性:對于有時間周期的活動,可以設(shè)計一些事件營造緊迫感。

● 阻礙因素:

注意力分散:避免在一個頁面放五花八門的信息讓用戶找不到重點。

焦慮性:有的地方可能給了用戶很多選擇,也會造成選擇困難,不自覺地形成一種焦慮感,不如簡單一些只設(shè)計一個選擇。

如何建立一個有效的實驗假設(shè)

我們需要針對一個用戶群體做出改變,然后產(chǎn)生一定的影響。但是這個假設(shè)不是無腦定的,要有邏輯性是合理的,最終能通過指標(biāo)來評估變化的影響。針對這幾個要素,我們總結(jié)出了設(shè)計 A/B 實驗的 PICOT 原則,即 Population、Intervention、Comparison、Outcome、Time,明確對什么樣的用戶做出了什么樣的改變,然后進行分組比較,最終需要設(shè)計衡量結(jié)果的指標(biāo),并決策實驗要進行多長時間。

A/B 測試效果評估

看哪些數(shù)據(jù)

A/B測試怎么做?火山引擎A/B測試全流程實踐分享

上圖是一份 A/B 測試實驗報告,可以看到指標(biāo)在實驗版本里是絕對值,還有變化值以及置信區(qū)間。置信區(qū)間是指假設(shè)策略全量上線,你有 95% 的把握會看到真實的指標(biāo)收益在 [,] 這個范圍內(nèi)。置信區(qū)間越窄且不包含 0,可信度就越高。從「查看圖表」進入選擇差異值可以觀察累計 diff 趨勢圖,如果呈現(xiàn)置信區(qū)間逐漸變窄的現(xiàn)象,說明隨著樣本量越來越大,我們對評估結(jié)果的信心就越來越強。

指標(biāo)變化是顯著的嗎

A/B 實驗的結(jié)果有以下幾種:

● 正向顯著:說明當(dāng)前樣本容量條件下,實驗版本優(yōu)于對照版本,實驗結(jié)果和假設(shè)一致;

● 負(fù)向顯著:說明當(dāng)前樣本容量條件下,實驗版本不優(yōu)于對照版本,實驗結(jié)果和假設(shè)不一致;

● 不顯著:

確實不顯著:可以參考 MDE 指標(biāo)是否符合預(yù)期,如果符合,則說明結(jié)果確實不顯著。

其他原因?qū)е碌牟伙@著:比如樣本容量小,指標(biāo)對應(yīng)的用戶行為滲透率低,實驗時長較短等。在這些情況下,如果實驗效果不顯著,可以進一步優(yōu)化實驗,比如增大樣本量,擴大流量、再觀察一段時間積累更多進組用戶等。

接下來我們可以再看兩個案例。

哪個首頁新 UI 版本更受歡迎

今日頭條 UI 整體風(fēng)格偏大齡被詬病已久,不利于年輕和女性用戶泛化,歷史上幾次紅頭改灰頭實驗都對大盤數(shù)據(jù)顯著負(fù)向。因此團隊設(shè)計了 A/B 實驗,目標(biāo)是在可接受的負(fù)向范圍內(nèi),改一版用戶評價更好的 UI。通過控制變量法,對以下變量分別開展數(shù)次 A/B 實驗:

● 頭部色值飽和度

● 字號

● 字重

● 上下間距

● 左右間距

● 底部 tab icon

● 結(jié)合用戶調(diào)研(結(jié)果顯示:年輕用戶和女性用戶對新 UI 更偏好)

綜合來看,效果最好的 UI 版本如圖 2 所示,全量上線。

A/B測試怎么做?火山引擎A/B測試全流程實踐分享

新 UI 上線后,Stay duration 顯著負(fù)向從-0.38% 降至 -0.24%,圖文類時長顯著 +1.66%,搜索滲透顯著 +1.47%,高頻用戶(占 71%)已逐漸適應(yīng)新 UI。

選擇更優(yōu)的視頻上滑引導(dǎo)產(chǎn)品形態(tài)

某款短視頻在剛面世時,很多用戶都不知道上滑的玩法,因此就設(shè)計實驗驗證如何能更好地引導(dǎo)用戶上滑。實驗?zāi)繕?biāo)定為優(yōu)化后提升新用戶留存,上滑操作滲透率提升 1%,錯誤操作滲透率下降 1%。定向受眾為新用戶,面向 10% 的線上流量進行為期 1 個月的實驗。

A/B測試怎么做?火山引擎A/B測試全流程實踐分享

我們做了兩輪實驗,第一輪實驗結(jié)果并不符合預(yù)期,上滑操作滲透率下降 1% 且顯著,錯誤操作滲透率提升 1.5%,不符合預(yù)期。新用戶留存未見顯著上升。但在不符合預(yù)期的情況下,還是能做一些分析來發(fā)現(xiàn)原因。因此經(jīng)過改進我們做了第二輪實驗,結(jié)果上滑操作滲透率上升 1.5% 且顯著,新用戶 7 日內(nèi)留存提升 1%-1.8%,且指標(biāo)結(jié)果呈顯著,符合預(yù)期。

上面的例子就說明了我們可以把 A/B 測試當(dāng)成一個理解用戶的工具。

展望

● 最后想跟大家一起展望一下 A/B 測試行業(yè)未來的情況。從行業(yè)前景來看:

● 認(rèn)知率和普及率在高速提升:我們之前做過一個調(diào)研,發(fā)現(xiàn) A/B 測試在國內(nèi)整體認(rèn)知度較低,可能低到一個難以想象的數(shù)字。我們認(rèn)為在未來 5-10 年內(nèi),A/B 測試的認(rèn)知度可能會有 50-100 倍的提升,這個市場還是一片藍海。

● 從 nice-to-have 到 must-have:現(xiàn)在很多人認(rèn)為 A/B 測試是一個錦上添花的工具,但在數(shù)據(jù)驅(qū)動越來越重要的今天,A/B 測試是必須要掌握的工具,是企業(yè)開展業(yè)務(wù)過程中的剛需,否則在行業(yè)競爭中就會失去優(yōu)勢。

● 破圈:我們也發(fā)現(xiàn) A/B 測試正在破圈。大家的印象中 A/B 測試只有互聯(lián)網(wǎng)公司會用,但是我們在交流的過程中發(fā)現(xiàn),很多傳統(tǒng)企業(yè)雖然沒有線上業(yè)務(wù),但如果能解決數(shù)據(jù)收集的問題,A/B 測試也能滿足傳統(tǒng)企業(yè)優(yōu)化的訴求。

● 從技術(shù)趨勢上來看,有這樣幾個發(fā)展方向:

● 智能化:A/B 測試目前還處在早期階段,一些實驗結(jié)論或?qū)嶒灦床鞂?shù)據(jù)和用戶屬性的利用還不是很充分。如果 A/B 測試能和統(tǒng)計方法、算法模型相結(jié)合,很可能提高整個行業(yè)的水平。

● 場景化:很多場景還沒有開始使用 A/B 測試,未來更多的行業(yè)場景能和 A/B 測試相結(jié)合,讓 A/B 測試更易用。

● 被集成:目前我們的 A/B 測試平臺可以一站式管理實驗、查看報告,但是一些用戶的業(yè)務(wù)已經(jīng)很成熟,希望 A/B 測試能夠走入業(yè)務(wù)和系統(tǒng),更順滑地使用。所以 A/B 測試技術(shù)也需要提高自身被集成的能力,無縫地和各種業(yè)務(wù)、系統(tǒng)結(jié)合起來。

Q&A

Q:A/B 測試對用戶體量有沒有基本限制?小用戶量在進行 A/B 測試時有什么要注意的嗎?

A:A/B 測試方法本身對用戶量沒有限制,但是如果實驗樣本太少,就很難看到顯著的結(jié)果,收益比較小。

Q:火山引擎 A/B 測試和算法等數(shù)據(jù)科學(xué)有哪些結(jié)合的嘗試和實踐?

A:我們內(nèi)部在做的一些事情可以簡單介紹一下:比如基于多臂老虎機的智能實驗,已經(jīng)在開始應(yīng)用一些算法。此外我們也在探索參數(shù)搜索的實驗,提升搜索參數(shù)的速度,讓 A/B 測試更智能化。

Q:A/B 實驗一般要測試多才可以看到結(jié)果?

A:嚴(yán)格意義上,開多久是和實驗?zāi)軒淼挠绊懹嘘P(guān)系的,以我們的經(jīng)驗值來看,一般是要覆蓋一個完整的用戶生命周期。我們一般是以周為單位,實驗至少開啟 1-2 周。

Q:A/B 測試在實驗結(jié)果上有沒有自動歸因的能力,幫用戶直接定位到是什么原因引起實驗結(jié)果好或者差的?

A:前面提到的一些智能化探索會對自動歸因有幫助,但是自動歸因還有一個很重要的點是,A/B 測試實驗數(shù)據(jù)背后的原因可能需要很多業(yè)務(wù)知識的輸入或者很有力的指標(biāo)建設(shè)才能推斷出來。

Q:如此多的實驗,如何保證實驗的正交?

A:我們通過大量的模擬實驗,以及對系統(tǒng)監(jiān)控的自檢來保證正交,一旦發(fā)現(xiàn)數(shù)據(jù)超過了閾值就會及時進行調(diào)整。

(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實情況說明,并提供身份證明、權(quán)屬證明及詳細侵權(quán)或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實,溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )