AB實(shí)驗(yàn)「坑」賊多?騰訊搜索實(shí)驗(yàn)有妙招!
一、AB 實(shí)驗(yàn)簡(jiǎn)介
AB 實(shí)驗(yàn)又稱雙盲測(cè)試、A/B testing、隨機(jī)分組實(shí)驗(yàn)等,主要目的在于降低風(fēng)險(xiǎn)和準(zhǔn)確量化實(shí)驗(yàn)結(jié)果。其基本思想是從大盤中取出一小部分流量,完全隨機(jī)地分給對(duì)照組和實(shí)驗(yàn)組,通過回收不同實(shí)驗(yàn)組用戶的行為數(shù)據(jù),應(yīng)用統(tǒng)計(jì)學(xué)方法得出結(jié)論。
早期的實(shí)驗(yàn)平臺(tái)只具有單層。單層平臺(tái)的問題在于若單次實(shí)驗(yàn)選取 10% 流量,則該平臺(tái)最多只能承載 10 個(gè)實(shí)驗(yàn),會(huì)導(dǎo)致實(shí)驗(yàn)流量饑餓問題。為了解決這一問題,目前的實(shí)驗(yàn)平臺(tái)采用了多層的形式。
“層+域”,每個(gè)實(shí)驗(yàn)域下會(huì)建一個(gè)貫穿層,貫穿層和多層之間互斥,多層之間的流量相互正交,從而保證上層實(shí)驗(yàn)的數(shù)據(jù)可以均勻分散到其他各層中,一個(gè)實(shí)驗(yàn)層的流量被用完了,在其它層還可以繼續(xù)創(chuàng)建實(shí)驗(yàn)?,F(xiàn)有主流的多層域的平臺(tái)設(shè)計(jì)大多參考 Google 論文:Overlapping Experiment Infrastructure: More, Better, Faster Experimentation。
實(shí)驗(yàn)流程總體上可分為六部分:明確目標(biāo)、提出假設(shè)、創(chuàng)建實(shí)驗(yàn)、運(yùn)行實(shí)驗(yàn)、分析實(shí)驗(yàn)和最終決策。
二、各類型搜索實(shí)驗(yàn)介紹
搜索場(chǎng)景有一些特有名詞,為了更好地理解搜索實(shí)驗(yàn),首先來介紹一下這些名詞。
Query:查詢?cè)~,指在搜索欄中輸入的詞。
意圖判斷:指對(duì) query 的目的判斷。
結(jié)果頁(yè):指搜索結(jié)果頁(yè)面,通常由 10 個(gè)卡片組成,每個(gè)卡片有對(duì)應(yīng)的卡 ID 和位置等信息,卡片與 query 對(duì)應(yīng)。
QV:指 query 訪問(查詢)次數(shù)。
卡影響面:指卡在搜索結(jié)果頁(yè)中的比例。
策略影響面:指策略在大盤中的生效比例,有些策略覆蓋多張卡。
卡位置:指卡在搜索結(jié)果頁(yè)中的排序位置。
實(shí)驗(yàn)場(chǎng)景主要有以下幾類:
- 搜索結(jié)果頁(yè)改版:包括整體樣式、字號(hào)調(diào)整、圓角方角調(diào)整等,影響面廣,基本覆蓋所有用戶。
- 卡樣式改版:包括 UI、排版、數(shù)據(jù)等,影響面不大,影響部分流量,需求量高。
- 策略控制排序、卡內(nèi)容智能展現(xiàn):影響面小,影響部分流量。
- 算法控制排序:影響面較小,影響部分流量。
根據(jù)不同的實(shí)驗(yàn)場(chǎng)景,平臺(tái)提供了四類實(shí)驗(yàn)類型的支持,包括:普通AB實(shí)驗(yàn)、詞表實(shí)驗(yàn)、diffab 實(shí)驗(yàn)和 interleaving 實(shí)驗(yàn)。
普通 AB 是在大盤中隨機(jī)選取流量,并隨機(jī)分配給兩個(gè)組別,不同組的用戶會(huì)看到不同的策略,最后收集用戶行為數(shù)據(jù)并得出結(jié)論。
詞表實(shí)驗(yàn)是和卡綁定的,一些特定的 query 才會(huì)出卡,因此影響面與卡相關(guān),可大可小。比如一張卡的影響面是千分之一,如果大盤流量是一千萬,樣本量要達(dá)到萬級(jí)別,就要選大盤的 100%。這樣可能會(huì)導(dǎo)致流量的浪費(fèi),或影響其它實(shí)驗(yàn)。
Diffab 實(shí)驗(yàn)適用于實(shí)驗(yàn)組和對(duì)照組區(qū)別較小的情況,控制組和對(duì)照組將同時(shí)下發(fā)流量至兩個(gè)組內(nèi)用戶,并統(tǒng)計(jì)其行為之間存在差異的部分,可以解決效果被稀釋的問題。
Interleaving 實(shí)驗(yàn)是在一個(gè)組內(nèi),通過兩個(gè)不同的算法策略隨機(jī)展現(xiàn)給控制組和對(duì)照組用戶,計(jì)算算法策略的得分和調(diào)整策略的結(jié)果。
這四種實(shí)驗(yàn)分別適用于不同的場(chǎng)景,普通AB實(shí)驗(yàn)適用于搜索結(jié)果頁(yè)改版的場(chǎng)景;卡樣式改版的場(chǎng)景需要使用詞表實(shí)驗(yàn),并且需要綁定卡 ID;策略控制排序和卡內(nèi)容智能展現(xiàn)的場(chǎng)景,有 diff,影響面小,適合使用 Diffab 實(shí)驗(yàn);算法控制排序,則適合采用 interleaving 實(shí)驗(yàn)。
接下來舉一些真實(shí)的案例。
普通AB實(shí)驗(yàn)
結(jié)果卡優(yōu)化升級(jí)實(shí)驗(yàn)中,對(duì)于卡片樣式進(jìn)行了調(diào)整,由于影響面廣,選用大盤1% 甚至更少的流量就可以做出效果,因此選用普通 AB 實(shí)驗(yàn)。大盤選擇流量,均衡分配。
詞表實(shí)驗(yàn)
搜索詞與卡對(duì)應(yīng),影響面相對(duì)較小,召回流量有限,因此首先將能出卡的詞表選取出來,在此基礎(chǔ)之上做分流。通過配置詞表包+卡 ID,基于詞表分流和統(tǒng)計(jì)數(shù)據(jù),保證該卡用戶都能參與實(shí)驗(yàn)。如果卡對(duì)應(yīng)的樣本量大,可以選擇卡對(duì)應(yīng)的一部分用戶參與實(shí)驗(yàn);如果卡對(duì)應(yīng)的樣本量小,則可將所有用戶分至兩個(gè)組別。
Diffab
實(shí)驗(yàn)組和對(duì)照組中并非百分之百應(yīng)用或不應(yīng)用某項(xiàng)更改策略,在請(qǐng)求對(duì)照組時(shí)會(huì)同時(shí)虛擬請(qǐng)求實(shí)驗(yàn)組,如果兩個(gè)請(qǐng)求不一致,則認(rèn)為其中存在 diff,在數(shù)據(jù)上報(bào)過程中進(jìn)行標(biāo)記。最終數(shù)據(jù)統(tǒng)計(jì)時(shí)統(tǒng)計(jì)存在 diff 的部分。實(shí)驗(yàn)組也采取同樣的操作。
Interleaving
普通 AB 實(shí)驗(yàn)在 hash 取模分流時(shí)存在用戶活躍度分流不均、重度用戶比例不均的問題。Interleaving 在一個(gè)組內(nèi)進(jìn)行算法混插,再根據(jù)用戶的行為數(shù)據(jù)進(jìn)行統(tǒng)計(jì),實(shí)驗(yàn)周期更短,需要樣本量更少。
下圖中對(duì)普通 AB 實(shí)驗(yàn)和 Interleaving 實(shí)驗(yàn)進(jìn)行了對(duì)比。
普通 AB 實(shí)驗(yàn)是有多層的,每層是正交的;而 interleaving 實(shí)驗(yàn)只有單層,在此基礎(chǔ)上,我們加入了流量限制。
Interleaving 的核心思想在于,不對(duì)用戶分組,每一個(gè)用戶同時(shí)受兩個(gè)策略的作用,排除用戶屬性的差異對(duì)策略評(píng)估的影響。統(tǒng)計(jì)實(shí)驗(yàn)指標(biāo)時(shí)給每個(gè)用戶相同的權(quán)重,降低重度用戶對(duì)實(shí)驗(yàn)結(jié)果的影響,實(shí)驗(yàn)周期大幅降低。
目前 interleaving 主要使用兩種算法:balanced interleaving 和 team-draft interleaving。
Balanced interleaving 面對(duì)兩種排序策略,按照排序交替選取搜索卡組成以 A 或 B 優(yōu)先搜索結(jié)果。Team-draft interleaving 則根據(jù)采樣策略在 AB 兩組排序中交替選取,且不存在輪空現(xiàn)象。
其勝出機(jī)制為,當(dāng)用戶點(diǎn)擊一個(gè)結(jié)果時(shí),哪個(gè)列表對(duì)應(yīng)的位置小,則哪個(gè)得分;最終分高的列表獲勝,相等則為打平,不得分。
目前較常使用的實(shí)驗(yàn)指標(biāo)包括勝出率、影響面、感知增益等。最終,如果某一指標(biāo)達(dá)到閾值,則該算法勝出,可以上線。
三、搜索實(shí)驗(yàn)常見問題
1、實(shí)驗(yàn)組卡片不生效?
搜索場(chǎng)景從用戶發(fā)起請(qǐng)求到卡展示之間會(huì)經(jīng)歷多個(gè)環(huán)節(jié),每個(gè)環(huán)節(jié)中間涉及到對(duì)應(yīng)的緩存,若緩存沒有被擊穿,則卡片不會(huì)生效。另一種可能的情況是被互斥了,搜索的 query 可能有不同的意圖,某些業(yè)務(wù)會(huì)在不同時(shí)間情境對(duì)不同卡排序進(jìn)行調(diào)整或把別的卡互斥。另外一種可能性是卡開發(fā)的過程中存在問題,邏輯有問題不能正常召回,這時(shí)需要借助 debug 去排查問題。
2、實(shí)驗(yàn)期流量不均衡?
可以觀察空跑期流量是否均衡,或在實(shí)驗(yàn)期間進(jìn)行 AA 回溯,定位流量不均衡問題是否為空跑期用戶行為不均衡導(dǎo)致的,若空跑期不均衡,則需要重建實(shí)驗(yàn)。如果空跑期是均衡的,再檢查實(shí)驗(yàn)組和對(duì)照組之間出卡率是否相同。若實(shí)驗(yàn)組有 5000 個(gè)詞可以出卡,對(duì)照組只有 2000 個(gè)詞,則兩組在召回層面就存在區(qū)別從而導(dǎo)致流量不均衡。另外,流量不均衡也有可能是流量固化問題導(dǎo)致的,通常是因?yàn)閷?shí)驗(yàn) ID 長(zhǎng)期不變動(dòng)導(dǎo)致用戶行為出現(xiàn)分化。
3、影響面極小,難以拿到大盤收益(例如留存類指標(biāo))?
如卡片摘要信息改動(dòng)等策略調(diào)整,其收益可以在卡片層面上被觀測(cè)到,然而對(duì)大盤用戶留存是否有影響在短期內(nèi)是難以被觀測(cè)到的。建議可以將多個(gè)策略打包,在貫穿層做長(zhǎng)期反轉(zhuǎn)實(shí)驗(yàn)觀察,如果策略打包后觀測(cè)到正向收益,則說明該實(shí)驗(yàn)有大盤級(jí)收益。
4、如何避免實(shí)驗(yàn)相互影響?
詞表實(shí)驗(yàn)中詞表與卡綁定,會(huì)導(dǎo)致使用相同兩個(gè)詞表的實(shí)驗(yàn)之間正交意義失效,使得實(shí)驗(yàn)之間相互影響。因此,需要基于系統(tǒng)的檢測(cè)功能,若卡和詞表已經(jīng)在系統(tǒng)中進(jìn)行實(shí)驗(yàn),則使用相同詞表和卡的實(shí)驗(yàn)只能在同一層中進(jìn)行;若 query 相同,卡也相同,則不能做實(shí)驗(yàn);若卡相同,query 不同,則可以進(jìn)行實(shí)驗(yàn)。同一層實(shí)驗(yàn)的流量互斥,多個(gè)實(shí)驗(yàn)之間不會(huì)相互影響。
5、個(gè)別實(shí)驗(yàn)指標(biāo)為負(fù)?
搜索實(shí)驗(yàn)具有多個(gè)指標(biāo),從統(tǒng)計(jì)學(xué)角度很難保證所有指標(biāo)百分之百準(zhǔn)確。常見做法是非核心指標(biāo)一類錯(cuò)誤低于 5% 可以接受。若核心指標(biāo)出現(xiàn)問題,則需要重新做實(shí)驗(yàn)。
6、指標(biāo)多,數(shù)據(jù)彈出慢
由于指標(biāo)數(shù)據(jù)來自多個(gè)部門,會(huì)導(dǎo)致彈出速度較慢,之前需要等到所有數(shù)據(jù)就位之后統(tǒng)一產(chǎn)出指標(biāo),個(gè)別產(chǎn)出較慢的數(shù)據(jù)將導(dǎo)致所有指標(biāo)加載減緩。目前對(duì)指標(biāo)進(jìn)行溯源之后采取分批產(chǎn)出的策略。
7、如何避免 trick?
詞表實(shí)驗(yàn)中存在卡在某些詞中表現(xiàn)良好,但在另外一些詞表現(xiàn)一般,通過挑選表現(xiàn)良好的 query 會(huì)得到有偏的結(jié)論。因此要保證數(shù)據(jù)從平臺(tái)出,避免挑選有優(yōu)勢(shì)的 query 跑數(shù)。同時(shí),某些 query 影響面小,數(shù)據(jù)量級(jí)小,導(dǎo)致數(shù)據(jù)波動(dòng)大、結(jié)論不穩(wěn)定。因此需要保證 query 覆蓋和量級(jí)達(dá)標(biāo),排除僥幸。
8、大流量實(shí)驗(yàn)影響系統(tǒng)穩(wěn)定性
保證實(shí)驗(yàn)平臺(tái)接入 case 校驗(yàn)平臺(tái),實(shí)驗(yàn)運(yùn)行前先校驗(yàn),通過后再上線平臺(tái)。
9、影響其他業(yè)務(wù)?
建立各業(yè)務(wù)護(hù)欄指標(biāo)關(guān)注及通知機(jī)制,做實(shí)驗(yàn)時(shí)勾選各關(guān)鍵指標(biāo),若指標(biāo)出現(xiàn)問題需及時(shí)通知相關(guān)業(yè)務(wù)方。
10、問題處理不過來?
收集問題并寫入解決方案文檔,引導(dǎo)文檔查閱;公開接口人,專業(yè)人做專業(yè)事。