AB實驗坑賊多?騰訊搜尋實驗有妙招
01 AB 實驗簡介
AB 實驗又稱雙盲測試、A/B testing、隨機分組實驗等,主要目的在於降低風險和準確量化實驗結果。其基本思想是從大盤中取出一小部分流量,完全隨機地分給對照組和實驗組,透過回收不同實驗組使用者的行為資料,應用統計學方法得出結論。
早期的實驗平臺只具有單層。單層平臺的問題在於若單次實驗選取 10% 流量,則該平臺最多隻能承載 10 個實驗,會導致實驗流量飢餓問題。為了解決這一問題,目前的實驗平臺採用了多層的形式。
“層+域”,每個實驗域下會建一個貫穿層,貫穿層和多層之間互斥,多層之間的流量相互正交,從而保證上層實驗的資料可以均勻分散到其他各層中,一個實驗層的流量被用完了,在其它層還可以繼續建立實驗。現有主流的多層域的平臺設計大多參考 Google 論文:Overlapping Experiment Infrastructure: More, Better, Faster Experimentation。
實驗流程總體上可分為六部分:明確目標、提出假設、建立實驗、執行實驗、分析實驗和最終決策。
02 各型別搜尋實驗介紹
搜尋場景有一些特有名詞,為了更好地理解搜尋實驗,首先來介紹一下這些名詞。
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 兩組排序中交替選取,且不存在輪空現象。
其勝出機制為,當使用者點選一個結果時,哪個列表對應的位置小,則哪個得分;最終分高的列表獲勝,相等則為打平,不得分。
目前較常使用的實驗指標包括勝出率、影響面、感知增益等。最終,如果某一指標達到閾值,則該演算法勝出,可以上線。
03 搜尋實驗常見問題
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. 問題處理不過來?
收集問題並寫入解決方案文件,引導文件查閱;公開介面人,專業人做專業事。
來自 “ DataFunTalk ”, 原文作者:王東星;原文連結:https://server.it168.com/a2024/0202/6839/000006839084.shtml,如有侵權,請聯絡管理員刪除。
相關文章
- 想做長期的 AB 實驗?快來看看這些坑你踩了沒
- ab個性化實驗的效能問題
- 期中實驗:記事本實現時間戳、搜尋、正文縮略顯示時間戳
- 騰訊音樂知識圖譜搜尋實踐
- K重交叉驗證和網格搜尋驗證
- 實驗--多執行緒執行緒
- BookStack v1.6 釋出,實現全文搜尋並優化體驗優化
- 施樂實驗室開發新搜尋引擎 比Google還高階Go
- terraform初體驗-騰訊雲遇到的坑ORM
- 校驗檔案的搜尋規則
- 執行期載入時共享庫路徑搜尋優先順序實驗
- JAVA多型特性的實驗Java多型
- 美團搜尋多業務商品排序探索與實踐排序
- 實驗11.ACL實驗
- 編譯期連結時共享庫搜尋路徑優先順序實驗編譯
- Java 繼承與多型實驗Java繼承多型
- 20個實驗之實驗11
- 20個實驗之實驗10
- 20個實驗之實驗16
- 30個實驗之實驗23
- 30個實驗之實驗25
- 實驗5.OSPF配置實驗
- 實驗一--Easy IoT實現mqtt實驗MQQT
- 百度和優酷的搜尋體驗改善,類似Google Instant搜尋Go
- 直播開發app,實時搜尋、搜尋引擎框APP
- 實驗
- 為什麼在資料驅動的路上,AB 實驗值得信賴?
- 騰訊安全玄武實驗室披露多個區塊鏈安全漏洞報告區塊鏈
- 實驗7.Vlan劃分實驗
- 實驗10.3層vlan互通實驗
- 實驗8.Vlan Hybrid實驗
- “踩坑”經驗分享:Swift語言落地實踐Swift
- 直播軟體搭建,利用精準搜尋最佳化使用者搜尋體驗
- GetX 實現類似微信轉發搜尋多選好友
- 實驗三驗收3
- Redis 實戰 —— 10. 實現內容搜尋、定向廣告和職位搜尋Redis
- Java實驗二:類程式設計實驗Java程式設計
- 實驗一和實驗二截圖