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