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