谷歌是如何高效做AB實(shí)驗(yàn)的

本人微信公眾號(hào)為“推薦算法學(xué)習(xí)筆記”曾我,定期推出經(jīng)典推薦算法文章,歡迎關(guān)注健民。

我們知道互聯(lián)網(wǎng)公司經(jīng)常要上線(xiàn)各種各樣的實(shí)驗(yàn)抒巢,例如修改UI界面的某個(gè)按鈕,上線(xiàn)一個(gè)新的算法等等秉犹。通過(guò)實(shí)驗(yàn)的對(duì)比指標(biāo)來(lái)衡量這些修改對(duì)用戶(hù)的影響程度蛉谜,以此來(lái)提高用戶(hù)體驗(yàn),提高公司收益等等崇堵。本文主要參考google經(jīng)典論文《Overlapping Experiment Infrastructure:

More, Better, Faster Experimentation》第4部分型诚,闡述谷歌等大廠都是如何高效地做ab實(shí)驗(yàn)的。

一. 可能想到的實(shí)驗(yàn)方案

方案1)將用戶(hù)分成兩半鸳劳,一半做對(duì)照組狰贯,一半做實(shí)驗(yàn)組

缺點(diǎn):一次只能做一個(gè)實(shí)驗(yàn),假如想要同時(shí)做兩個(gè)實(shí)驗(yàn)赏廓,將無(wú)法滿(mǎn)足

方案2)將用戶(hù)分桶涵紊,例如通過(guò)用戶(hù)ID取模分成1000個(gè)桶,一些桶做基線(xiàn)幔摸,一些桶做實(shí)驗(yàn)

缺點(diǎn):如果桶分的太少摸柄,同一時(shí)間可以做的實(shí)驗(yàn)還是受到限制。如果桶分的太多既忆,每個(gè)實(shí)驗(yàn)桶的流量將會(huì)變少驱负,置信度將會(huì)降低,需要更長(zhǎng)的實(shí)驗(yàn)時(shí)間患雇。

同時(shí)跃脊,假如我們的實(shí)驗(yàn)涉及到多個(gè)系統(tǒng)服務(wù),這些系統(tǒng)服務(wù)之間是有關(guān)聯(lián)的苛吱。以一個(gè)新聞推薦系統(tǒng)為例匾乓,我們知道,當(dāng)系統(tǒng)接受到一個(gè)用戶(hù)請(qǐng)求的時(shí)候又谋,首先會(huì)去召回系統(tǒng)里面取出候選的新聞拼缝,然后再將這些候選的新聞發(fā)送到精排系統(tǒng)進(jìn)行排序娱局,假如召回系統(tǒng)和精排系統(tǒng)同時(shí)在做ab實(shí)驗(yàn),怎么消除這兩個(gè)系統(tǒng)的相互影響咧七?


二. 正交實(shí)驗(yàn)

可以看到上述方案的缺點(diǎn)是一個(gè)用戶(hù)請(qǐng)求只能進(jìn)行一個(gè)實(shí)驗(yàn)衰齐,那假如一個(gè)用戶(hù)請(qǐng)求我們同時(shí)進(jìn)行N個(gè)實(shí)驗(yàn)?zāi)兀咳绻粋€(gè)用戶(hù)請(qǐng)求同時(shí)進(jìn)行N個(gè)實(shí)驗(yàn)继阻,我們?cè)趺磁懦@些實(shí)驗(yàn)之間相互干擾耻涛?答案就是使用正交實(shí)驗(yàn)

假如我們要做一個(gè)關(guān)于UI界面的實(shí)驗(yàn)。實(shí)驗(yàn)1為將按鈕的顏色設(shè)置為紅色(20%流量)和藍(lán)色(80%流量)瘟檩,實(shí)驗(yàn)2將頁(yè)面背景設(shè)置為白色(50%流量)或黑色(50%流量)抹缕,正交實(shí)驗(yàn)如下圖所示


可以看到,我們只要將實(shí)驗(yàn)1的用戶(hù)像洗牌一樣重新打散墨辛,均勻地分布在實(shí)驗(yàn)2里面卓研,就可以消除實(shí)驗(yàn)1對(duì)實(shí)驗(yàn)2的影響。同時(shí)睹簇,每個(gè)用戶(hù)請(qǐng)求是同時(shí)進(jìn)行進(jìn)行2個(gè)實(shí)驗(yàn)的(按鈕為紅/藍(lán)奏赘,背景白色/黑色)。利用正交實(shí)驗(yàn)太惠,我們的每個(gè)實(shí)驗(yàn)都可以利用到全部的流量磨淌。

那么我們?cè)趺磳?shí)驗(yàn)1的用戶(hù)均勻地分布到實(shí)驗(yàn)2呢?答案就是在hash的時(shí)候加一個(gè)前綴凿渊。例如通過(guò)使用函數(shù)?hash(實(shí)驗(yàn)ID+用戶(hù)ID)%1000梁只,將(實(shí)驗(yàn)1的ID+用戶(hù)ID)取模1000后小于200的用戶(hù)的按鈕顏色設(shè)置為紅色,大于等于200的設(shè)置為藍(lán)色埃脏,同時(shí)搪锣,將(實(shí)驗(yàn)2的ID+用戶(hù)ID)取模1000后小于500的用戶(hù)背景設(shè)置為白色,大于等于500的用戶(hù)背景設(shè)置為黑色即可剂癌。這就是正交實(shí)驗(yàn)淤翔。

三. 谷歌分層重疊實(shí)驗(yàn)框架

在正交實(shí)驗(yàn)的基礎(chǔ)上翰绊,通過(guò)對(duì)流量的切割佩谷,以及分層重疊嵌套,便可設(shè)計(jì)出更為靈活的AB實(shí)驗(yàn)框架监嗜。

首先介紹3個(gè)概念

1) domain:全部流量被切割之后的一段流量

2)layer:在layer里面包含一系列可以改變的參數(shù)谐檀。例如上面的實(shí)驗(yàn)可以分成2個(gè)layer,layer1對(duì)應(yīng)實(shí)驗(yàn)1裁奇,layer2對(duì)應(yīng)實(shí)驗(yàn)2桐猬。

3)experiment:在layer里面可以添加桶,例如通過(guò)?hash(layerId + userId)%1000?, 然后把實(shí)驗(yàn)放入桶中刽肠。

1個(gè)domain可以有多個(gè)重疊的layer溃肪,1個(gè)layer反過(guò)來(lái)也可以嵌套多個(gè)domain免胃,實(shí)驗(yàn)最終落入到layer里面的bucket里面。

以下面兩個(gè)圖為例惫撰,假如用戶(hù)流量是從上往下流進(jìn)來(lái)的


在(a)中羔沙,只有1個(gè)domain,domain里面嵌套了3個(gè)layer厨钻。當(dāng)用戶(hù)請(qǐng)求過(guò)來(lái)的時(shí)候扼雏,會(huì)依次經(jīng)過(guò)UI Layer,Search results layer和Ads result layer夯膀,在各個(gè)layer里面通過(guò)?hash(layerId + userId)%1000?映射到對(duì)應(yīng)的桶取出相應(yīng)的experiment诗充。因此1個(gè)用戶(hù)請(qǐng)求最多會(huì)同時(shí)進(jìn)行3個(gè)實(shí)驗(yàn)

在(b)中,流量被切割成2個(gè)domain诱建,1個(gè)domain只有1個(gè)layer蝴蜓,另一個(gè)domain有3個(gè)layer。當(dāng)用戶(hù)請(qǐng)求被分配到domain1的時(shí)候涂佃,最多將會(huì)進(jìn)行1個(gè)實(shí)驗(yàn)励翼,當(dāng)用戶(hù)請(qǐng)求被分配到domain2的時(shí)候,用戶(hù)最多將會(huì)進(jìn)行3個(gè)實(shí)驗(yàn)辜荠。

利用這個(gè)思想汽抚,我們便可以設(shè)計(jì)更為復(fù)雜靈活的AB實(shí)驗(yàn)框架,如下圖所示


值得注意的是伯病,各個(gè)layer之間的實(shí)驗(yàn)是要獨(dú)立的造烁。例如layer1中的實(shí)驗(yàn)是設(shè)置按鈕為白色和黑色,layer3的實(shí)驗(yàn)是設(shè)置按鈕為白色和紅色午笛,這樣的兩個(gè)layer之間就不是獨(dú)立的了惭蟋,那么正交性就會(huì)遭到破壞。需要特別注意這一點(diǎn)药磺。

四. 總結(jié)

以上便是本文所有內(nèi)容告组,更多具體細(xì)節(jié)可查看論文《Overlapping Experiment Infrastructure:More, Better, Faster Experimentation》。如果有問(wèn)題或錯(cuò)誤癌佩,歡迎隨時(shí)聯(lián)系~

本人微信公眾號(hào)為“推薦算法學(xué)習(xí)筆記”木缝,定期推出經(jīng)典推薦算法文章,歡迎關(guān)注围辙。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末我碟,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子姚建,更是在濱河造成了極大的恐慌矫俺,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異厘托,居然都是意外死亡友雳,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)铅匹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)沥阱,“玉大人,你說(shuō)我怎么就攤上這事伊群】忌迹” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵舰始,是天一觀的道長(zhǎng)崇棠。 經(jīng)常有香客問(wèn)我,道長(zhǎng)丸卷,這世上最難降的妖魔是什么枕稀? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮谜嫉,結(jié)果婚禮上萎坷,老公的妹妹穿的比我還像新娘。我一直安慰自己沐兰,他們只是感情好哆档,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著住闯,像睡著了一般瓜浸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上比原,一...
    開(kāi)封第一講書(shū)人閱讀 49,772評(píng)論 1 290
  • 那天插佛,我揣著相機(jī)與錄音,去河邊找鬼量窘。 笑死雇寇,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蚌铜。 我是一名探鬼主播锨侯,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼厘线!你這毒婦竟也來(lái)了识腿?” 一聲冷哼從身側(cè)響起出革,我...
    開(kāi)封第一講書(shū)人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤造壮,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體耳璧,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡成箫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了旨枯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蹬昌。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖攀隔,靈堂內(nèi)的尸體忽然破棺而出皂贩,到底是詐尸還是另有隱情,我是刑警寧澤昆汹,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布辆苔,位于F島的核電站腿时,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜巧涧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望租幕。 院中可真熱鬧凉敲,春花似錦、人聲如沸捅彻。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)步淹。三九已至添怔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間贤旷,已是汗流浹背广料。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留幼驶,地道東北人艾杏。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像盅藻,于是被迫代替她去往敵國(guó)和親购桑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容