A/B測試示意圖
互聯(lián)網(wǎng)行業(yè)從業(yè)者對“A/B測試”應(yīng)該并不陌生,A/B測試通過對比只有一個變量不同的同一產(chǎn)品的兩個不同版本的表現(xiàn)來研究該變量的作用以及影響。
以上圖圖示為例,假設(shè)該場景為某內(nèi)容產(chǎn)品,測試前對目標用戶科學地隨機抽樣出對照組(control group, A組)和實驗組(treatment group, B組),比如A組不變,B組的頁面布局在文字內(nèi)容,圖片,顏色上有改變,若結(jié)果顯示實驗指標(比如用戶的點擊率、留存率)在B組中有置信的提升,那么可以選擇B組的實驗方案在全量目標用戶上生效。
所以,為什么要做A/B測試呢?[1]
風險控制:小流量實驗可以避免直接上線效果不好造成損失。其次,實驗迭代的過程中,決策都是有科學依據(jù)的,可以避免系統(tǒng)性的偏差。
因果推斷:我們相信 A/B 實驗中的優(yōu)化和改變最終能影響到線上數(shù)據(jù)以及用戶的行為。在這個前提下,A/B 測試就是最好的因果推斷工具。
復(fù)利效應(yīng):A/B 測試是可以持續(xù)不斷進行的實驗,即使一次實驗提升的效果不大,但是長期下來復(fù)利效應(yīng)的積累會產(chǎn)生很大的變化和回報。
互聯(lián)網(wǎng)時代,許多消費端產(chǎn)品其實都是雙邊市場(two-sided marketplaces),從連接買家和商家的商業(yè)產(chǎn)品,如阿里巴巴、亞馬遜、京東、Facebook商店,到連接乘客與司機、旅客和房東的共享經(jīng)濟產(chǎn)品如滴滴、Airbnb,甚至包括連接瀏覽者和創(chuàng)作者的內(nèi)容產(chǎn)品如抖音和YouTube等等。
本文談到的產(chǎn)品是Facebook商店[2]。用戶進入商店頁后有商品的feed流,點擊后用戶可以給商家發(fā)消息,咨詢更多信息,砍價等。
然而,這些消費端產(chǎn)品背后的搜索、推薦系統(tǒng)一般都只優(yōu)化點擊率、購買率等“消費者市場”(買家、乘客、旅客)關(guān)聯(lián)的目標。從產(chǎn)品長遠發(fā)展角度,優(yōu)化“供應(yīng)者市場”(商家、司機和房東)所關(guān)聯(lián)的目標也尤為重要。
例如,在電商推薦場景下,如Facebook商店,扶持新商家是一個常見的需求,例如,我們打算通過對新商家提權(quán)(boost)的方式提高他們在推薦列表中的排序位置,當前排序函數(shù)(模型)我們標識為 ,新的排序模型我們標識為
。我們會需要 A/B測試評估新排序函數(shù)對商家的扶持效果是否更好。
那么,商家側(cè)的A/B測試應(yīng)該怎么做呢?
為什么不能做一般的A/B測試
一般的A/B測試是針對買家側(cè)(如第1部分舉例所示),而且每組流量一般比較小(如1%),所以如果在實驗組中,新排序函數(shù)即使對新商家進行了扶持,但商家很可能無法感知變化,因為在其余99%的用戶推薦列表里,這些新商家都未得到扶持。
為什么不能簡單地隨機分組商家A/B測試
那么自然有人會問,能不能像隨機切分用戶一樣,切分部分商家進行A/B測試呢?可以,但是會有錯誤。我們假設(shè)仍然以上述新商家扶持為例:
我們分別選取1%的商家做A/B測試。實驗組中,新商家的商品,在實驗組里面由于被boost,所以排序會靠前。然而,當實驗推全至100%的商家,或者灰度發(fā)布、反轉(zhuǎn)實驗(如99%商家生效扶持策略,1%不不生效),此時就出現(xiàn)了問題,實驗組里同樣的商品在流量擴大后,排序很可能會變得靠后,因為現(xiàn)在有其他更多的商品得到了boost。因此,1%實驗和100%推全的時候,新商家受到的影響因素是不同的,前者中的效果是虛假的膨脹,結(jié)果是不準確的。
這本質(zhì)上是因為上述“樸素”的商家側(cè)A/B測試違反了A/B測試中得到正確結(jié)論的重要的前提假設(shè),stable unit treatment value assumption(SUTVA),翻譯過來有點晦澀,叫做“個體處理穩(wěn)定性假設(shè)”。在我們的例子中,不論是實驗組還是對照組中的買家,其參與度(給商家發(fā)消息、購買等)只能依賴于所在室驗組接受到的處理策略(例子中是排序函數(shù)),與其他組里的排序函數(shù)無關(guān)。顯然,實驗組中商品的位置不單單依賴于應(yīng)用與他們身上的排序函數(shù),也依賴于應(yīng)用在其他商品上的排序函數(shù)。
針對“樸素”的商家側(cè)A/B測試會遇到的問題,F(xiàn)acebook的工程師設(shè)計了一個非常巧妙的反事實的商家側(cè)A/B測試框架。該設(shè)計基于一個反事實的特性:當在小流量的商家上實驗時,實驗組的商品位置排序和實驗推全至100%流量以后位置排序相同。
具體方案如下:
每次請求的時候,分別由當前排序模型、新排序模型產(chǎn)出兩個完整的排序結(jié)果。為了將兩個排序結(jié)果合二為一,對于對照組中的商品,其最終的位置,在當前排序模型的排序結(jié)果中獲得,對于實驗組中商品,其最終位置在新排序模型的排序結(jié)果中獲得。
(如圖所示,其中 表示來自對照組的商品,
表示來自實驗組的商品。藍色和綠色排序列表分別由排序模型
和
產(chǎn)出。)
這樣一來,實驗組的商品僅依賴于新排序函數(shù),即使將實驗組的新排序模型推全至100%流量,實驗組中商品位置仍然不變,始終不受到其他組別中排序函數(shù)的影響,因此滿足了SUTVA假設(shè)。
但是,兩個排序結(jié)果會不會有沖突呢?會有,但是影響可以忽略。如商品 的位置和
的位置一樣的時候就造成了沖突,但Facebook的做法很簡單,直接隨機地將一個置于另一個之前。為什么可以這么做?因為當流量小(比如1%的流量)的時候,沖突比例也很小,理由如下:
列表Top10中同時包含實驗組和對照組的概率是0.914%。
假設(shè)列表中恰有一個實驗組和一個對照組的商品,即使兩個排序函數(shù)是完全無關(guān)的,恰好沖突的概率是10%。真實情況下,兩個排序函數(shù)是高度相似的,越相似,其實沖突的概率就越?。ɡ硐肭闆r下完全相同,概率是0)。
要注意的是,該方案要求一次請求同時進行兩次打分,會增加一定的機器資源開銷。
為了驗證提出的賣家側(cè)A/B測試框架的有效性,需要驗證賣家側(cè)推全前后的一致性,以及買家側(cè)和商家側(cè)A/B實驗的一致性。賣家側(cè)實驗觀察的指標有兩個,分別是接收到消息的條數(shù)以及成功率(接收到至少一條消息的用戶占比)。買家側(cè)實驗觀察指標是買家發(fā)送消息的條數(shù)。
推全前后的一致性
藍色和黃色分別表示賣家側(cè)實驗推全前、后的指標變化的相對值,黑色細線表示置信區(qū)間。如圖可以看到,收到的信息數(shù)變化統(tǒng)計不顯著,而商家成功率有顯著提升。
買家側(cè)和商家側(cè)A/B實驗的一致性
買家側(cè)發(fā)出的消息數(shù)理論上應(yīng)該和商家側(cè)一致。
他們上了三個實驗組,從1至3,提權(quán)的強度逐漸變大。藍色和黃色分別表示買家側(cè)和賣家側(cè)實驗指標變化的相對值。如圖可以看到,1組不顯著,相比于2組,3組負向更多。買家側(cè)和賣家側(cè)實驗趨勢一致,符合預(yù)期。
社交推薦的場景中,基于“同質(zhì)性和社會影響“(Homophily and Social Influence)的假設(shè),用戶的行為會受到社交好友的影響,這會導(dǎo)致A/B測試時有上述類似的問題。舉個例子,假設(shè)在類似于視頻號的朋友頁面下朋友推薦策略占主導(dǎo)的推薦場景中,推送的主要是用戶好友有行為的內(nèi)容,假設(shè)目前用戶只能看到貓的內(nèi)容,想做實驗看看給用戶只看狗的內(nèi)容會有什么效果,由于小流量實驗的時候,大多數(shù)好友都不在實驗組當中,所以看到的內(nèi)容基本都沒有朋友的參與/推薦,然而,如果將實驗擴大到100%的用戶,朋友的參與度很可能將會是一樣的(假設(shè)貓和狗的內(nèi)容同樣有趣)。因此,在社交網(wǎng)絡(luò)的場景下,SUTVA假設(shè)往往不成立。
一種解決方案是采用基于聚類的隨機方案( cluster-based randomization approach)[3],簡單來說,就是在A/B實驗之前,基于社交連接將用戶進行聚類成集合/社群。最后隨機分組是基于聚類處的集合層面來切分的而飛單個用戶。
實現(xiàn)上,非社交場景下的賣家A/B測試,也可以用這種方法,但是為什么一般不建議這么做,這里留給各位思考。
Facebook為了更好的優(yōu)化商家側(cè)的目標,針對“樸素”的商家側(cè)A/B測試遇到的問題,提出了一個商家側(cè)的反事實A/B測試框架。該框架基于一個反事實的特性:當在小流量的商家上實驗時,實驗組的商品位置排序和實驗推全至100%流量以后位置排序相同。他們在定性驗證的實驗中,觀察到了實驗與推全后、商家側(cè)與買家側(cè)的一致性?,F(xiàn)在該框架已經(jīng)在多個產(chǎn)品當中使用。
^火山引擎 A/B 測試的思考與實踐 https://mp.weixin.qq.com/s/45q4vrZQGLhFq6EmTypFMA
^A Counterfactual Framework for Seller-Side A/B Testing on Marketplaces https://dl.acm.org/doi/epdf/10.1145/3397271.3401434
^A Class of Unbiased Estimators of the Average Treatment Effect in Randomized Experiments. https://www.researchgate.net/publication/271390255_A_Class_of_Unbiased_Estimators_of_the_Average_Treatment_Effect_in_Randomized_Experiments