李寧:攜程機(jī)票的ABtest
定義:ABtest本身其實(shí)是物理學(xué)的“控制變量法”,通過只改變一個因素來確定其變化對cr或者收益的影響。其本身具備統(tǒng)計意義,而且具備實(shí)際意義。試想一下如果沒有ABtest,那新項目上線后的收益如何排除季節(jié)因素、市場環(huán)境因素的影響,而且一個頁面上如果同時做多處改動,如何評判是哪個改動造成的收益或損失?這對一個理性思維的人是不可接受的。
簡單理解為將一群人分成兩類,通過展示新舊版version A/B來測試哪種版本效果好,差異是多少。
ABtest流程
- ABtest數(shù)據(jù)流:APP啟動時,公共框架會拉取所有線上abtest的試驗號和對應(yīng)版本(所有BU)存入本地,當(dāng)用戶進(jìn)入機(jī)票頻道時候,在特定場景觸發(fā)本地實(shí)驗號調(diào)用。比如往返實(shí)驗,在用戶首頁點(diǎn)擊往返搜索時,開發(fā)會從本地文件中查詢160519_fld_round試驗號該用戶的對應(yīng)版本,確定跳轉(zhuǎn)新/舊版頁面。在試驗號接收到調(diào)用時,同時觸發(fā)一個abtest的trace埋點(diǎn)o_abtest_expresult,該埋點(diǎn)會記錄clientcode,sid,pvid,試驗號及版本信息,最終經(jīng)過ETL,BI會匯總一張AB實(shí)驗表,將上述信息匯總,便于后續(xù)做關(guān)聯(lián)計算。
- 分流計算:每個設(shè)備在剛啟動的時候會根據(jù)設(shè)備號+試驗號+隨機(jī)數(shù)組成一串N位數(shù),對100取模的余數(shù)從0-99,假設(shè)ABCD四個版本流量 10:70:10:10的情況下,則余數(shù)0-9為A版、10-79為B版、80-89為C版、90-99為D版。A版為默認(rèn)版,如果尾數(shù)異常(Null或溢出),則走A版。
- 版本說明:如果僅有新舊兩個版本的情況下,一般會設(shè)置ABCD四個版本,其中ACD為舊版,B為新版。(如果有多個迭代新版,則從EFG開始)。
AA測試:CD版同為舊版,且流量各為B版一半,在流量隨機(jī)分配的情況,通過對比CD版的數(shù)據(jù)表現(xiàn)來驗證舊版的狀態(tài)是穩(wěn)定的。
AB測試:在確保CD數(shù)據(jù)相對穩(wěn)定的前提下,再對比B和ACD版本的數(shù)據(jù),來對比新舊版的差異。
兜底版本A:BCD的剩余流量走A版,版本異常的情況下走A版
- 實(shí)驗正交性:
- 非正交實(shí)驗,如左圖展示,在舊版的基礎(chǔ)上再做區(qū)分,會因為樣本數(shù)量的問題而限制同時進(jìn)行的實(shí)驗個數(shù),而且無法評估兩個新版同時存在的影響。
- 正交試驗:右圖展示,不同實(shí)驗流量完全打散隨機(jī)分配,上一個實(shí)驗與下一個實(shí)驗理論上流量上沒有關(guān)聯(lián),這樣可以在一個頁面同時進(jìn)行多項實(shí)驗。
這里再提一個Magic Number = 7,雖然理論上單頁面上同時進(jìn)行的正交試驗數(shù)量沒有上線,但是經(jīng)過長期經(jīng)驗積累,單頁面同時線上實(shí)驗不要超過7,否則會造成難以捉摸的幺蛾子異常。
- 埋點(diǎn)下線機(jī)制:
像ABtest里面的埋點(diǎn)觸發(fā)場景埋點(diǎn)還是由開發(fā)控制的,也還是會存在埋點(diǎn)不準(zhǔn)確的情況,比如說往返的實(shí)驗,觸發(fā)場景是在首頁點(diǎn)擊往返搜索,理論上去程列表頁的UV應(yīng)該是參與式樣的樣本數(shù)抑制。實(shí)際情況是,去程列表頁30W的UV,但ABT的報表顯示每天樣本為50W,經(jīng)過sql驗算兩者交集為20W,就說明有10W人是在往返流程但并沒有參與實(shí)驗(數(shù)據(jù)經(jīng)過脫敏處理,但不改變相對位置)。
所以基于這樣的幺蛾子,在ABT結(jié)束后,既要刪除代碼,又要實(shí)驗流量全開100%
- 流量調(diào)整100%目的:將歷史版本的客戶端舊版規(guī)避,需要操作100%流量。
- 下線代碼:保證appのsize不會過度冗余,同時因埋點(diǎn)場景的問題,有些時候雖然流量全切100%,但仍有部分流量走舊版(非常詭異),所以將客戶端代碼下掉是非常必要。
其他說明:
- 在任何情況下,分析的基礎(chǔ)條件就是流量隨機(jī)分配,如果質(zhì)疑這件事情,則整個abtest就失去意義.
- 實(shí)驗分流一般采用設(shè)備號clientcode,但是也可以根據(jù)uid來,但情況較少
- 對于實(shí)驗的顯著性指標(biāo)P值一般使用較少且不易理解,就不做過多解釋(一年也沒怎么用這個指標(biāo))
- 分流調(diào)節(jié)機(jī)制,新版流量不要忽上忽下,特別是涉及到核心頁面的時候,否則可能會造成用戶看到的頁面反復(fù)變化,增加適應(yīng)時間和學(xué)習(xí)成本以及影響用戶體驗。
分析數(shù)據(jù)
ABT的目的:
abtest是希望通過如何改進(jìn)新版優(yōu)于舊版,而不是通過abtest證明新版弱于舊版而下線實(shí)驗,所以需要有效地分析數(shù)據(jù)。
如何看圖表:
圖表反映時間趨勢,在abtest中表現(xiàn)為新舊版本兩條折線圖,且一般會出現(xiàn)交叉的情況,那我們就需要判斷這些交叉是有隨機(jī)性波動還是實(shí)驗的效果,我在實(shí)踐中總結(jié)簡單易用的一條原則是:“抓大放小”。
- 抓大放小(個別表現(xiàn)不影響整體趨勢):當(dāng)你遮住有限個點(diǎn)的時候,不影響整體的差異。比如下圖,當(dāng)你遮住2-11和2-13兩天的數(shù)據(jù)時,會發(fā)現(xiàn)藍(lán)色B版優(yōu)于紅色舊版。(當(dāng)然遮住點(diǎn)的數(shù)量因人而異,一般不超過總量10%)
這張圖就很難用抓大放小的方式來判斷差異,無法證明是新版好還是舊版好,這時候需要分解這個指標(biāo)來繼續(xù)分析。
機(jī)票的核心指標(biāo)是轉(zhuǎn)化率CR(conversion rate)和收益(revenue),通常他們之間的關(guān)系如下圖所示。
攜程機(jī)票前臺以scrum Team的形式迭代,每個team對于需求的評審是以roi(投入產(chǎn)出比,return on investment)來決定項目的優(yōu)先級,而return可能是cr的提升,也可能是單票收入的提升。
對于上線實(shí)驗數(shù)據(jù)跟蹤,也是以當(dāng)初roi的預(yù)期來進(jìn)行判斷實(shí)驗效果,尤其在沒有達(dá)到預(yù)期的情況下,尋求解決方案。(這其中還有諸多限制條件,比如收益類項目,如果CR有明顯下降需要重點(diǎn)關(guān)注。)
分析思路
這個分解公示也代表分析的思路,無論對于收益類項目還是CR類項目,都會先看單UV收入和CR(一般情況下,abtest不會改變每個訂單的票量,這是基于整體訂單估算的平均值,我們暫且認(rèn)為TA是常量),當(dāng)這兩項都保持正向增長的情況下,那可以直接開大流量繼續(xù)驗證直至項目完美收官(這種案例比較少)。更多的情況是,對于重大項目,即使結(jié)果是積極正向的實(shí)驗,我們也會大概了解下改進(jìn)點(diǎn)發(fā)生在哪個頁面或者哪個產(chǎn)品,做到心中有數(shù);
而當(dāng)發(fā)生問題的時候,我們都會對CR和單票收入做分解:
- CR下降的情況,看主流程每個頁面的CR,是哪個頁面下降,從頁面的來源去向和點(diǎn)擊來看,是否有明顯的異常,一般來講,對業(yè)務(wù)足夠熟悉的PM在這一步可以結(jié)合業(yè)務(wù)和這些數(shù)據(jù)大概會有一些預(yù)判,是哪些因素可能造成的影響,之后再請教bi專業(yè)人員或者自己拉sql來驗證數(shù)據(jù),從而進(jìn)行改進(jìn)。
- 利潤下降的原因,繼續(xù)分解指標(biāo),可以分產(chǎn)品、航司、利潤構(gòu)成等指標(biāo)來分解,找到新舊版的gap,然后結(jié)合業(yè)務(wù)場景做一些預(yù)判,進(jìn)行找數(shù)據(jù)來支持這個想法,繼續(xù)迭代新版。
之前的狀態(tài)是PM對于AB實(shí)驗的數(shù)據(jù)有一大坨報表,但是并不知道如何使用,也不知道怎么看報表,不知道怎么分解指標(biāo),但其實(shí)對于整體進(jìn)行了解之后,具備簡單的分析能力,關(guān)鍵是有業(yè)務(wù)背景知識的情況下,這樣的幾個公式的八股文的分析可以解決80%的問題,對于實(shí)在無法定位的問題,可以找bi尋求幫助。
總結(jié)
ABtest其實(shí)核心在于如何定位問題解決問題,但是限于身份不能通過數(shù)據(jù)來進(jìn)行舉例說明。但其實(shí)分析思路應(yīng)該是一致,比如機(jī)票場景下指標(biāo)分解的核心公式來解決80%的問題,在每個行業(yè)應(yīng)該都會有這樣的公式,可以根據(jù)特定業(yè)務(wù)背景自己總結(jié)運(yùn)用。
PM如能夠掌握這些基本的指標(biāo)分析、能夠看懂圖表、這里面就能夠自助解決80%的問題,這樣的abtest效率其實(shí)已經(jīng)是非常高的。
【本文為51CTO專欄作者“李寧”的原創(chuàng)稿件,轉(zhuǎn)載請通過51CTO聯(lián)系作者獲取授權(quán)】