A/BTest 基础
A/B Test??
參考了很多大佬的文章,用與個人學習
本質就是一種對照,如何找到完美合適的對照組?就算找到了,樣本量是否充足呢?
-
樣本選擇 - 正交分桶
-
確定樣本量的分布
- 確定選擇什么檢驗統計量
- 小樣本 大樣本 方差是否已知 u 還是t
- 計算樣本均值和樣本標準差
- 確定選擇什么檢驗統計量
-
設計樣本量
-
知道預期提升的比例 (比如轉化率)
- 在假定的提升比例下,確實這個假設是否通過
-
通過轉化率和p值共同確定
-
-
檢驗結果
一、A/B Test
1. 常見用途
新功能驗證、計算算法、UI布局、運營策略、文案
計算收益:例如,最近新上線了一個直播功能,那么直播功能究竟給平臺帶了來多少額外的 DAU,多少額外的使用時長,多少直播以外的視頻觀看時長等
二、A/B Test實驗設計
1. 流量分類
實驗版本的設計要遵循變量的單一性,也不一定吧。可以是單一因素,也可以是多因素試驗設計
因此經常需要在流量分配時有所權衡,一般有以下幾個情況:
-
不影響用戶體驗:如 UI 實驗、文案類實驗等,一般可以均勻分配流量實驗,可以快速得到實驗結論
-
不確定性較強的實驗:如產品新功能上線,一般需小流量實驗,盡量減小用戶體驗影響,在允許的時間內得到結論
-
希望收益最大化的實驗:如運營活動等,盡可能將效果最大化,一般需要大流量實驗,留出小部分對照組用于評估 ROI
2. 實驗時長
業界的實驗時長一般是2-3周,最短時長建議不要少于7天。因為不同日期活躍的用戶群體可能不一樣,所以最好要覆蓋一個周期,如7天、14天、21天。
實驗時間不宜過程,應該快速驗證快速迭代
3. 選擇指標
- 直接指標
- 間接指標
- 正向指標:可能提升的指標
- 負向指標:可能導致下降的指標
基于什么指標進行比較?
指標基線:由歷史的數據得出,如果沒有額話可以參考其他類似功能的指標
4. 計算最小樣本量
雖然參加實驗的樣本越多越好,但是資源有限。而且如果實驗是負向,可以避免不必要的損失
第一類錯誤和第二類錯誤:
- α\alphaα:表示出現第一類錯誤的概率,也稱為顯著性水平,常見的取值有1%、5%、10%、,一般取值5%,即犯第一類錯誤的概率不超過5%
- 1-α,稱為統計顯著性,表示有多大的把握不誤診。
- β\betaβ: 出現第二類錯誤的概率,一般取值20%
- 更常見的表示方式為統計功效power=1-β,即有多大把握能檢查出版本差異
- A/B Test的重要理念:寧肯砍掉多個好的產品,也不要讓一個不好的產品上線
1. 計算最小樣本量的兩種檢驗方法
對于留存率、滲透率等漏斗類指標,采用**卡方檢驗**
對于人均時長類等均值類指標,采用**t 檢驗**:
- Z檢驗
- 檢驗靈敏度Δ,新方案的直接效果指標與指標基線差值的絕對值,即新方案與舊方案的區別有多大
- 從表達式上看,差距越大所需樣本量越小 (不理解)?
- 從表達式上看,差距越大所需樣本量越小 (不理解)?
- 檢驗靈敏度Δ,新方案的直接效果指標與指標基線差值的絕對值,即新方案與舊方案的區別有多大
- 卡方檢驗
5. 圈選用戶
如何從一個總體中按一定比例抽取隨機樣本;如果同時進行的實驗中有互斥的怎么辦。
正交實驗和互斥實驗
- 正交:test1和test2互不影響
- 互斥:實驗之間存在相互影響。舉例: AB Test1是測試溫控限頻策略對溫度的影響,AB Test2是測試溫控降亮度對溫度的影響,Test1和Test2都會影響溫度,所以Test1和2之間互斥。
分流(或者說抽樣):應該保證同時性、同質性、唯一性、均勻性。
-
同時性:分流應該是同時的,測試的進行也應該是同時的。
-
同質性:也可以說是相似性,是要求分出的用戶群,在各維度的特征都相似。
- 判斷同質性的方法:AAB測試,對兩組對照組的結果進行方差檢驗,判斷結果是否存在差異
-
唯一性:即要求用戶不被重復計入測試。
-
均勻性:要求各組流量是均勻的
單層方案
所有流量按某個參數(UserID,DeviceID、CookieID、手機號等)分成n個桶,假設選定UserID,有以下兩種方法:
如果出現實驗互斥的情況,只能靠人工給各個實驗指定分組
單層方案適合簡單的驗證,不適合長期大規模做交叉實驗,流量利用效率太低,且隨機組不好把握,最終容易造成某一組用戶指標明顯優于其他組。
多層方案
人為定義一些分層,如:UI 層、推薦算法層,每一層中再對用戶隨機分組,即可實現同一個用戶出現在不同層的不同組里面,做到流量的重復利用。
? 單獨看每一層,其實就是一個單層方案,并沒有從根本上解決問題,只不過是復制出來多幾層而已,如果某一層實驗非常多,還是會存在流量不夠用的情況,
無層方案
就是每一層都單獨一層。確保每一個實驗都單獨占據了所有流量。可以取任意組的流量進行實驗,但是又引進了新的問題,多層方案將實驗的互斥在層內進行了限制,無層會導致同一個用戶命中多個實驗,即使這些實驗是互斥的。
顯然這樣子是絕對不允許的,解決方法是賦予每個實驗優先級,例如按上線優先級排序,優先將流量賦予高優先級用戶。也可以在創建實驗的時候如果有互斥實驗,新創建實驗的分組算法復用已有實驗的實驗ID進行分組即可避免。
三、A/B Test實驗結果評估
顯著性檢驗同樣有多種方法:T檢驗、Z檢驗、卡方檢驗。具體選擇什么檢驗參考如下流程圖,互聯網行業日活較大數據量較多,常常選用Z檢驗。
Z檢驗使用的是總體方差,T檢驗使用的是樣本方差,卡方檢驗是比較兩組數值的分布,因此Z檢驗比T檢驗和卡方檢驗效果更明顯,檢驗精確度是:Z檢驗>T檢驗>卡方檢驗,下面以Z檢驗為例進行介紹。
AB測試需要比較出哪個實驗組表現更好,因此使用的是單尾檢驗。原假設為新方案不優于舊方案,然后計算出在原假設成立的條件下,計算所得實驗樣本數據特征的概率原假設發生的概率P值,和顯著性水平α進行比較以判斷是否拒絕原假設。具體步驟如下:
1. 計算Z值
根據實驗數據得到對照組均值為p1、實驗樣本數n1,實驗組均值為p2、實驗樣本數n2
這個公式可能不太對,常見的公式為$z=\frac{p_1 - p_2}{\sqrt{(\frac{1}{n_2}+\frac{1}{n_2})p_c(1-p_c)}} $
2. 得到結果
-
法一:比較置信區間
計算Φ1?α(z0)\Phi_{1-\alpha}(z_0)Φ1?α?(z0?),也就是左分位數的值,與正態分布的進行比較
-
法二:比較p值
計算P(z<z0)P(z<z_0)P(z<z0?),與顯著水平α\alphaα 進行比較,如果兩者相等則加大樣本量
利用statsmodels.stats.proportion.proportions_ztest([c1,c2],[n1,n2],alternative='smaller')
計算置信區間和p值,其中n1 n2為對應的樣本量,alternative='smaller’代表左尾
實驗結束后需要:
- 反饋實驗結論,包括直接效果(滲透、留存、人均時長等)、ROI
- 充分利用實驗數據,進一步探索分析不同用戶群體,不同場景下的差異,提出探索性分析
- 對于發現的現象,進一步提出假設,進一步實驗論證
3. 更加高級的實驗
3.1 多個活動交集量化的實驗
活動 A 和活動 B,有著相互放大的作用,這個時候就會 1+1 > 2;還有的時候,活動 A 和活動 B,本質上是在做相同的事情,這個時候就會 1+1 < 2。
這個時候就需要一個貫穿層(貫穿所有活動的對照組)
- 春節活動的整體貢獻:實驗填充層 vs 貫穿層
- 活動A的貢獻:活動A實驗層,實驗組 vs 對照組
- 活動B的貢獻:活動B實驗層,實驗組 vs 對照組
3.2 業務迭代的同時,如何與自身的過去對比
業務需要和去年或上個季度的自身對比,同時業務還不斷在多個方面運用 AB Test 迭代
類似與上面這種層次設計,在推薦系統中較為常見,在某一些產品或系統中,貫穿層不能夠完全沒有策略,那么采用去年或上個季度的策略,代表著基準值,從而量化新一個周期的增量貢獻
可以量化:
- 每個小迭代對整體體統的貢獻:實驗層中的實驗組vs對照組
- 系統的整體迭代與上一個周期的比較:實驗填充層 vs 貫穿層1(如果是年,那就2)
- 同時,可以量化去年策略的自然增長或下降,以衡量舊有系統是否具有長期的適用性(作為系統設計者,更應鼓勵設計具有長期適應性的系統):貫穿層 1(上個季度的策略)VS 貫穿層 2(去年的策略)
3.3 更為復雜的實驗設計
微視任務福利中心的實驗設計為例,舉例一個更復雜的實驗系統設計,綜合了上面提到的 2 個目的:
- 量化每一個實驗迭代為系統帶來的增量貢獻
- 即每一次實驗迭代都與上一次對比
- 量化每一類迭代(如 UI 迭代、策略迭代),在一個階段的增量貢獻
- 量化系統整體在上一個周期(季度、年)的增量貢獻
- 量化任務福利中心的整體 ROI(本質上,是給用戶一些激勵,促進用戶活躍,獲得更多商業化收益,所以和推薦系統不同的是,需要有完全沒有任務福利中心的對照組,用戶量化 ROI)
={“sourceType”%3A"answer"%2C"sourceId"%3A1103961403})整體在上一個周期(季度、年)的增量貢獻
- 量化任務福利中心的整體 ROI(本質上,是給用戶一些激勵,促進用戶活躍,獲得更多商業化收益,所以和推薦系統不同的是,需要有完全沒有任務福利中心的對照組,用戶量化 ROI)
總結
以上是生活随笔為你收集整理的A/BTest 基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qq密码自动测试软件,QQ2004测试版
- 下一篇: 网站设计之常见简单实用的JavaScri