业务侧-到底应该怎么做A/Btest
A/Btest
- A/Btest是什么
- A/Btest的重點和特點
- A/Btest怎么做
- 實驗分組
- 檢驗
- 如果得不到顯著的結論怎么辦
A/Btest是什么
A/Btest是在產品正式發版之前,設計兩個或更多不同的產品方案,將用戶和流量分組,保證用戶分組的合理性的情況下,讓用戶看到不同的產品界面,收集用戶的真實反饋,幫助產品決策最優方案。
A/Btest的重點和特點
重點:
特點:
結論可信度高:
A/B測試在正式發版之前,對產品方案進行驗證,少量的樣本量和實際數據來推廣到全部流量,相對于直接正式發版,預測發版結果來說,更具有可信度。
可并行:
A/B測試是將兩個甚至多個方案同時進行檢驗,保證每個版本所處環境一樣的情況下,測試方案的時間也相同。避免了因時間不同產生的周期性差異,也節省了驗證時間。
A/Btest怎么做
PS:A/Btest需要有一定的流量基礎,否則將流量分配后,每個分組得到的流量過小,不能得到相對準確的結論
實驗分組
用戶分組
1)基于設備號或用戶ID分組,根據IP地址的奇偶性
2)可重疊分層分桶方法,根據固定的hash函數對用戶唯一標識進行取模、分桶
將流量分成可重疊的多個層。因為很多類實驗從修改的系統參數到觀察的產品指標都是不相關的,完全可以將實驗分成互相獨立的多個層。例如 UI 層、推薦算法層、廣告算法層,或者開屏、首頁、購物車、結算頁等。
單單分層還不夠,在每個層中需要使用不同的隨機分桶算法,保證流量在不同層中是正交的。也就是說,一個用戶在每個層中應該分到哪個桶里,是獨立不相關的。具體來說,在上一層 001 桶的所有用戶,理論上應該均勻地隨機分布在下一層的 1000 個桶中。
通過可重疊的分層分桶方法,一份流量通過 N 個層可以同時中 N 個實驗,而且實驗之間相互不干擾,能顯著提升流量利用率。
從實操上來說,我們通常采取下面的方法:
首先,確定 Layer,確定請求 Tag。例如從 UserID,DeviceID、CookieID、手機號 中選一個,支持匿名流量的,一般會選用 DeviceID 或者 IMSI 等作為請求 Tag。
然后,選一個你喜歡的 Hash 函數,盡量選個使用方便、隨機性更強的;
最后,通過 Hash(Layer, Tag) % 1000 確定每層分桶。如果 Hash 函數支持 seed,那么使用 Layer 作為 seed,否則作為 SALT,即將 “Layer+Tag” 作為輸入參數
檢驗
標準:
假設在1%流量上某功能可以提高10%的點擊率,那么在全量上也應該大約提高10%。
方差越小,可靠性越高。
假設檢驗,建立原假設和備擇假設:
H0是要拒絕的假設
H1是我們想要的假設
由于是兩個樣本顯著性檢驗,數據量較大,一般使用z檢驗
z=λb?λaσb2N+σa2N2z=\frac{λ_b-λ_a}{\sqrt[2]{\frac{σ_b^2}{N}+\frac{σ_a^2}{N}}}z=2Nσb2??+Nσa2???λb??λa??
都是業務沉淀獲得的先驗數據,或是先做一次測試,對這些值進行估計。
最后根據顯著性水平,做出結論。
如果得不到顯著的結論怎么辦
原因:
數據量不夠,實驗時間不足
實驗結論就是如此。那就需要具體分析原因,重新優化實驗方案。
總結
以上是生活随笔為你收集整理的业务侧-到底应该怎么做A/Btest的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: syslinux linux 启动盘,s
- 下一篇: 并发编程(七)好用的线程池ThreadP