谷歌A/B实验——重叠实验基础设施解读
谷歌A/B實驗——重疊實驗基礎(chǔ)設(shè)施解讀
- 〇、來源
- 一、背景介紹
- 二、如何劃分參數(shù)
- 三、谷歌設(shè)計的ab實驗系統(tǒng)
- 3.1 域和層的設(shè)計
- 3.1.1 基礎(chǔ)重疊域和層設(shè)計
- 3.1.2 具備非重疊和重疊的域和層設(shè)計
- 3.1.2 具備非重疊的域的嵌套設(shè)計優(yōu)點
- 3.1.3 具備非重疊的域的嵌套設(shè)計缺點
- 3.1.4 啟動層(launch layers)設(shè)計
- 四、引用
〇、來源
谷歌ab實驗論文Overlapping Experiment Infrastructure: More, Better, Faster Experimentation第四章——OVERLAPPING EXPERIMENT INFRAS- TRUCTURE
一、背景介紹
統(tǒng)計解決方案是一個多因素系統(tǒng),其中每個因素對應(yīng)于系統(tǒng)中的一個可變參數(shù)。
實際上,一個請求將在 N 個同時進(jìn)行的實驗中進(jìn)行,其中每個實驗將修改不同的參數(shù),N 等于參數(shù)的數(shù)量。多因素實驗得到了大量理論和實踐的支持 [^1]。
然而,多因素系統(tǒng)在我們的復(fù)雜環(huán)境中根本不可行,因為并非所有參數(shù)都是獨立的,并且并非我們可能想要測試的所有參數(shù)值都與另一個參數(shù)的值一起使用(例如,粉色background上的粉色text)。
鑒于此約束,谷歌的主要思想是將參數(shù)劃分為 N 個子集。每個子集都與一個實驗層相關(guān)聯(lián)。每個請求最多同時進(jìn)行 N 個實驗(每層一個實驗)。
每個實驗只能修改與其層相關(guān)聯(lián)的參數(shù)(即在該子集中),并且同一參數(shù)不能與多個層相關(guān)聯(lián)。
二、如何劃分參數(shù)
首先,我們可以將模塊化利用到多個二進(jìn)制文件中:來自不同二進(jìn)制文件的參數(shù)可以位于不同的子集中,這解決了饑餓和偏差問題。
然而,給定二進(jìn)制文件的所有參數(shù)不需要在單個子集中。我們可以通過:
a.檢查了解哪些參數(shù)不能相互獨立地改變;
b.檢查過去的實驗,即憑經(jīng)驗查看在以前的實驗中哪些參數(shù)被一起修改。
查看圖 1,我們可以為 Web 服務(wù)器、搜索結(jié)果服務(wù)器和廣告結(jié)果服務(wù)器分別設(shè)置一個或多個layer。
三、谷歌設(shè)計的ab實驗系統(tǒng)
谷歌設(shè)計的系統(tǒng)比簡單地將參數(shù)劃分為子集然后與層相關(guān)聯(lián)更靈活。
為了解釋靈活性,谷歌引入了幾個定義。 在傳入流量和系統(tǒng)參數(shù)的空間內(nèi)工作,我們有三個關(guān)鍵概念:
domain:域,是流量的分段。
layer:層,一個層對應(yīng)于系統(tǒng)參數(shù)的一個子集。
experiment:實驗,實驗是流量分段,其中可以為零個或多個系統(tǒng)參數(shù)指定替代值,以改變傳入請求的處理方式。
3.1 域和層的設(shè)計
我們可以嵌套域和層。
a.域可以包含層。
b.層可以包含實驗,也可以包含域。
c.在層內(nèi)嵌套域允許與該層相關(guān)聯(lián)的參數(shù)子集在該嵌套域內(nèi)進(jìn)一步分區(qū)。
在包含所有流量和所有參數(shù)的默認(rèn)的域和層。 我們可以:
3.1.1 基礎(chǔ)重疊域和層設(shè)計
針對圖 2a設(shè)計,只需將參數(shù)分為三層。 在這種情況下,每個請求最多同時進(jìn)行三個實驗,每一層一個。 每個實驗只能修改該層對應(yīng)的參數(shù)。
3.1.2 具備非重疊和重疊的域和層設(shè)計
針對圖 2b設(shè)計,首先將流量分成兩個域。 一個域可以是具有單層的域(非重疊域),另一個域?qū)⑹蔷哂腥龑拥闹丿B域。
在這種情況下,每個請求將首先分配給非重疊域或重疊域:
a.如果請求在非重疊域中,則該請求最多在一個實驗中(并且可以更改整個參數(shù)空間中的任何參數(shù))。
b.如果請求在重疊域中,則請求最多在三個實驗中,每層一個,每個實驗只能使用該層對應(yīng)的參數(shù)。
3.1.2 具備非重疊的域的嵌套設(shè)計優(yōu)點
a.擁有一個不重疊的域,允許我們運(yùn)行真正需要更改大量通常不會一起使用的參數(shù)的實驗。
b.它允許我們對參數(shù)劃分不同的分區(qū);
可以想象三個域:
- 不重疊的域。
- 具有一個參數(shù)分區(qū)的重疊域。
- 具有不同參數(shù)分區(qū)的重疊域。
c.嵌套允許我們更有效地利用空間,這取決于哪些分區(qū)最常用,哪些跨層參數(shù)實驗最常用。
請注意,將當(dāng)前未使用的參數(shù)從一層移動到另一層很容易:只要確保參數(shù)可以安全地與原始層分配中的參數(shù)重疊即可。
如果層具有語義上有意義的名稱,例如“廣告結(jié)果層”和“搜索結(jié)果層”,工程師往往不愿意移動違反該語義的標(biāo)志。 當(dāng)實驗配置不正確時,有意義的名稱可以通過使其更加明顯來幫助提高穩(wěn)健性,但它也會限制工程師將利用的靈活性。
還要注意,對于基于 cookie-mod 的實驗,使用mod = f(cookie) % 1000,為了確保不同層的實驗獨立轉(zhuǎn)移,谷歌使用 mod = f(cookie, layer) % 1000 代替。
3.1.3 具備非重疊的域的嵌套設(shè)計缺點
雖然這種嵌套復(fù)雜性確實增加了靈活性,但更改配置(尤其是域的配置)是有成本的:更改流量分配到域的方式會改變可用于實驗的流量。
例如,如果我們將非重疊域從 10% 的 cookie mods 更改為 15%。則額外 5% 的 cookie mods 來自重疊域。
3.1.4 啟動層(launch layers)設(shè)計
另一個概念是啟動層。 啟動層在幾個關(guān)鍵方面與迄今為止討論的實驗層不同。
啟動層始終包含在默認(rèn)域中(即,它們在所有流量上運(yùn)行)。
a.啟動層是參數(shù)的單獨分區(qū),即一個參數(shù)最多可以同時位于一個啟動層和最多一個“正常”層(在一個域內(nèi))。
b.為了使啟動層和正常層之間的參數(shù)重疊起作用,啟動層內(nèi)的實驗在語義上略有不同:啟動層中的實驗為參數(shù)提供了替代默認(rèn)值。
換句話說,如果正常實驗層中沒有實驗覆蓋參數(shù),那么在啟動層實驗中,將使用指定的替代默認(rèn)值,并且啟動層實驗的行為就像正常實驗一樣。
c.但是,如果普通實驗層中的實驗確實覆蓋了此參數(shù),則該實驗將覆蓋參數(shù)的默認(rèn)值,無論該值是指定為系統(tǒng)默認(rèn)值還是在啟動層實驗中。
啟動層的示例如圖 2c、d 所示。 以這種方式定義啟動層使我們能夠在不干擾現(xiàn)有實驗的情況下逐步向所有用戶推出更改,并以標(biāo)準(zhǔn)化方式跟蹤這些推出。
啟動層的一般用法是為每個啟動的功能創(chuàng)建一個新的啟動層,并在功能完全推出時刪除該層(并且新的參數(shù)值被納入默認(rèn)值)。
最后,由于啟動層中的實驗通常更大,因此它們可用于測試特征之間的交互。
雖然理論上我們可以測試正常實驗層中的交互作用(假設(shè)我們要么在參數(shù)在同一層時手動設(shè)置實驗,要么在參數(shù)在不同層時查看交集),因為實驗在正常層中,交叉點更小,因此交互更難檢測。
四、引用
[^1] D. Cox and N. Reid. The theory of the design of experiments, 2000.
總結(jié)
以上是生活随笔為你收集整理的谷歌A/B实验——重叠实验基础设施解读的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用FileZilla Server搭建f
- 下一篇: 没有已启用的仓库。 执行 “yum re