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