【阿里妈妈数据科学系列】第二篇:在线分流框架下的AB Test
背景
AB Test 是為同一目標制定兩個方案,在同一時間維度,保證其他條件一致的情況下,分析實驗組跟對照組的區別,根據不同的實驗類型以及應用場景,產生了不同分桶邏輯的AB Test,包括在線分流及離線抽樣。在流量側進行的實驗,常采用在線分流的方式,例如算法實驗,比較算法A和算法B的收益;在用戶側進行的實驗,常采用離線抽樣的方式,例如客戶實驗,比較一個產品功能在客戶側的收益。本文主要介紹在線分流框架下的 AB Test 。
一般來說,實驗流程路徑可以歸納為四個步驟:實驗設計-->實驗實施-->實驗效果-->實驗決策,在每個步驟內,都需要根據實驗的需求明確實驗細節,具體如下圖:
???1. 實驗設計
1.1 實驗目的
對于在線分流框架下的 AB Test,首先需要明確實驗目的,通過數據決策回答需要解決的問題,常見問題包括:流量1策略和流量2策略,哪一個效果更好?哪個ROI更高?長期來看哪個更好?在哪個層級的流量能達到最好的效果?
1.2 實驗方案
設計實驗方案時需要從兩個角度考慮:1)如何設計該實驗需要評估的指標,2)如何獲取與分配實驗流量。解決了這兩個問題,那么實驗方案便完成了一大半。
1.2.1 指標設計
定義指標時可分為兩類:一是不變量,即變量組和對照組的都應該相同;二是變量,即需要觀察改變的量。對于不變量,需要注意兩者的總量及數據分布是否相同,以保證實驗的正常進行。
指標評估時可選擇一個指標或一套指標。如果使用一套指標,可以聚合成一個指標,比如構造一個目標函數,或是簡單的加權指標。
此外,還需要考慮指標的普適性,最好能夠設定一個貫穿整個體系的指標。
常見的指標可分為四類:
1)轉化率指標:以01分布為基礎計算的轉化率指標,例如:點擊率、購買轉化率等;
2)人均指標:指單個獨立訪問用戶指標的平均值,例如:人均購買金額、人均點擊數等;
3)聚合類指標:指獨立訪問用戶指標的聚合,例如:曝光數、點擊數等;
4)比率指標:指兩個連續型定量指標的比率,例如點擊成本、轉化成本等。
1.2.1 流量獲取與分配
流量獲取: 在線分流的 AB Test 通常采用隨機分割全局流量,讓所有流量隨機進入實驗組和對照組。這樣,實驗策略對全局所有流量都能夠起到作用,我們可以通過后驗的方式對不同的層級或人群進行實驗效果驗證,幫助進一步精準定位到策略效果最好的層級。
樣本量預估: 當我們需要對特定層級或人群進行后驗時,由于這部分特定層級必須滿足最小樣本量這個前提條件,這時則需要樣本量預估。A/B 實驗的效果評估是以樣本的參數估計來代替總體水平,進而觀測出實驗效果,觀測實驗效果=實驗因素造成的效果+抽樣誤差+隨機擾動。
在經典統計學派中,顯著性檢驗是以統計頻率的為基礎的,因此對于頻率的穩定性有一定的要求。其中,不穩定因素來自假設檢驗過程中的犯錯概率,這個犯錯概率通常是經驗值。這兩類錯誤與樣本量本身存在一定的函數關系,只要找到這兩者的函數關系,就有不同犯錯概率下的最小樣本量。最小樣本量的計算公式為:
其中,,為總體標準差,為總體均值,為犯第一類錯誤的概率,為犯第二類錯誤的概率。
在選擇最小樣本量時,如果實驗中需要關注不止一個指標,那么對應的每個指標都有會有個最小樣本量的值,理論上應該取作為最終的最小樣本量,但是不同的指標對應的最小樣本量差異很大,很難同時滿足,所以在實踐中以核心指標的最小樣本量為準。最小樣本量指實驗組與對照組各自所需的最小樣本量,不是二者之和。
???2. 實驗實施
2.1 隨機單元
隨機單元是實驗平臺選取的達到隨機化的最小單元,隨機單元需要考慮的一個軸是粒度,常用的隨機單元粒度包括“頁面級別”、“會話級別”以及“用戶級別”。
確定實驗隨機單元粒度時,需要考慮兩個問題:1)用戶體驗有多重要;2)哪些指標很重要。由于在線分流的實驗通常策略在算法側便會生效,用戶很難有實際感知,常用的隨機單元粒度是頁面級別,一般指 PV 層面,以一次請求 PV 作為一個隨機單元,實驗平臺可以決定把這次 PV 導向某個“實驗組”或“對照組”。
2.2 正交實驗設計
在實際場景中,在一個全局流量下同時進行的在線分流實驗有很多,因此在進行實驗前需要確認流量必須互斥還是可以進行正交。
正交實驗:每個獨立實驗為一層,層與層之間流量是正交的,一份流量經過每層實驗時,都會再次隨機打散,且隨機效果離散。
互斥實驗:實驗在同一層拆分流量,且不論如何拆分,不同組的流量是不重疊的,如下圖所示.
規則一:正交、互斥
規則二:分流模型
規則詳述:
域 1 和域 2 拆分流量,此時域 1 和域 2 是互斥的;
流量流過域 2 中的 B1 層、B2 層、B3 層時,B1 層、B2 層、B3 層的流量都是與域 2 的流量相等,此時 B1 層、B2 層、B3 層的流量是正交的;
流量流過域 2 中的 B1 層時,又把 B1 層分為了 B1-1 ,B1-2 ,B1-3 ,此時 B1-1 ,B1-2 ,B1-3 之間又是互斥的。
根據以上規則,我們可以不斷的在此模型中增加域、層,并且可以互相嵌套。這要與實際的業務相匹配,拆分過多的結構可能會把簡單的業務復雜化,拆分過少的結構又可能不滿足實際業務。
2.3 實驗穩健性校驗
實驗的穩健性校驗通常采用 AA Test 的方式進行,其基本理念是開啟一個實驗組和對照組配置相同的實驗。在 AA Test 實驗中,首先需要保障分桶盡可能無偏,一種方法是將 userid 或 devid 進行 hash,而后按照桶大小進行取模分桶,單層實驗沒有什么問題,但是長期交叉、連續實驗會導致某個桶的用戶行為有偏,進而導致其他層的實驗結果受到影響,目前比較常用的方法是可重疊分層分桶方法。
具體來說,可重疊分層分桶方法就是將流量分成重疊的多個層,因為很多類實驗從系統參數到觀察的產品指標都是不相關的,完全可以將實驗分成互相獨立的多個層,例如:UI層、推薦算法層、廣告算法層等。除分層外,在每個層中使用不同的隨機分桶算法,保證流量在不同層中是正交的,即同一用戶應該分到哪個桶是獨立不相關的。如上一層1桶的所有用戶,理論上應該均勻隨機分布在下一層的1000個桶中。
進行 AA Test 之后有一定可能出現評估指標的波動現象,其原因是由于每個桶中的用戶每天進行操作的次數完全隨機,因此實驗指標每天會有一定的波動值。常用的波動評估方法是對每個桶的指標進行監控,統計置信區間和置信度,指標均值,方差等信息。解決方案可以考慮提高實驗桶內的用戶數目,降低AA Test的波動。
???3. 實驗效果
3.1 統計描述
3.1.1 數據質量
數據質量會對模型的預測和泛化能力產生直接影響,涉及的主要因素包括:準確性、完整性、一致性、時效性、可信性和解釋性。在真實數據中,我們拿到的數據可能包含大量的缺失值及大量的噪音,也可能因為人工錄入錯誤導致有異常點存在,這些非常不利于算法模型的訓練。數據清洗是對各種臟數據進行對應方式的處理,得到標準的、干凈的、連續的數據,提供給數據統計及數據挖掘等使用。
數據預處理的主要步驟分為:數據清理和數據變換。
數據清理:主要通過填補缺失值、光滑噪聲數據,平滑或刪除離群點,以解決數據的不一致性。如果用戶認為數據是臟亂的,便不太會相信基于這些數據的挖掘結果,即輸出的結果是不可靠的。
1)缺失值的處理: 獲取信息和數據時經常存在各類原因導致數據丟失和空缺。通常會基于變量的分布特性和重要性(信息量和預測能力)采用不同的方法。主要分為:
刪除變量:若變量的缺失率較高(大于80%),覆蓋率較低,且重要性較低,可以直接將變量刪除;
定值填充:工程中常見用-9999進行替代;
統計量填充:若缺失率較低(小于95%)且重要性較低,則根據數據分布的情況進行填充。如數據符合均勻分布,采用該變量的均值填補缺失,如數據存在傾斜分布,采用中位數進行填補;
插值法填充:包括隨機插值,多重差補法,熱平臺插補,拉格朗日插值,牛頓插值等;
模型填充:使用回歸、貝葉斯、隨機森林、決策樹等模型對缺失數據進行預測。
啞變量填充:若變量是離散型,且不同值較少,可轉換成啞變量。若某個變量存在十幾個不同的值,可根據每個值的頻數,將頻數較小的值歸為一類'other',降低維度。此做法可最大化保留變量的信息。
2)離群點處理: 異常值是數據分布的常態,處于特定分布區域或范圍之外的數據通常被定義為異常或噪聲。異常分為兩種:“偽異常”,指特定業務運營動作產生,是正常反應業務的狀態,不是數據本身的異常;“真異常”,指非特定業務運營動作產生,是數據本身分布異常,即離群點。檢測離群點的主要方法如下:
簡單統計分析:根據箱線圖、各分位點判斷是否存在異常,例如 pandas 的 describe 函數可以快速發現異常值;
原則:若數據存在正態分布,偏離均值的之外. 通常定義范圍內的點為離群點;
基于絕對離差中位數(MAD):計算各觀測值與平均值的距離總和,放大看離群值的影響,這是一種穩健對抗離群數據的距離值方法;
基于距離:通過定義對象之間的臨近性度量,根據距離判斷異常對象是否遠離其他對象,缺點:計算復雜度較高,不適用于大數據集和存在不同密度區域的數據集;
基于密度:離群點的局部密度顯著低于大部分近鄰點,適用于非均勻的數據集;
基于聚類:利用聚類算法,丟棄遠離其他簇的小簇。
在數據處理階段將離群點作為影響數據質量的異常點考慮,而不是作為異常檢測目標點,一般采用較為簡單直觀的方法是結合箱線圖和MAD的統計方法判斷變量的離群點。具體的處理手段:
根據異常點的數量和影響,考慮是否將該條記錄刪除,信息損失多;
若對數據做了log-scale 對數變換后消除了異常值,則此方法生效,且不損失信息;
平均值或中位數替代異常點,簡單高效,信息的損失較少;
在訓練樹模型時,樹模型對離群點的魯棒性較高,無信息損失,不影響模型訓練效果。
3)噪聲處理: 噪聲是變量的隨機誤差和方差,是觀測點和真實點之間的誤差,即。通常的處理辦法:對數據進行分箱操作,等頻或等寬分箱,然后用每個箱的平均數,中位數或者邊界值(不同數據分布,處理方法不同)代替箱中所有的數,起到平滑數據的作用。另外一種做法是,建立該變量和預測變量的回歸模型,根據回歸系數和預測變量,反解出自變量的近似值。
數據變換:數據變換包括對數據進行規范化,離散化,稀疏化處理,達到適用于挖掘的目的。1)規范化處理:數據中不同特征的量綱可能不一致,數值間的差別可能很大,不進行處理可能會影響到數據分析的結果,因此,需要對數據按照一定比例進行縮放,使之落在一個特定的區域,便于進行綜合分析。特別是基于距離的挖掘方法,聚類,KNN,SVM 一定要做規范化處理。
最大 - 最小規范化:將數據映射到[0,1]區間,
Z-Score標準化:處理后的數據均值為0,方差為1,
Log變換:在時間序列數據中,對于數據量級相差較大的變量,通常做Log函數的變換,?
2)離散化處理:數據離散化是指將連續的數據進行分段,使其變為一段段離散化的區間。分段的原則有基于等距離、等頻率或優化的方法。數據離散化的主要原因包括:
模型需要:比如決策樹、樸素貝葉斯等算法,都是基于離散型的數據展開的。有效的離散化能減小算法的時間和空間開銷,提高系統對樣本的分類聚類能力和抗噪聲能力;
離散化的特征相對于連續型特征更易理解;
可以有效的克服數據中隱藏的缺陷,使模型結果更加穩定。
方法包括:
等頻法:使得每個箱中的樣本數量相等;
等寬法:使得屬性的箱寬度相等;
聚類法:根據聚類出來的簇,每個簇中的數據為一個箱,簇的數量模型給定。
3)稀疏化處理:針對離散型且標稱變量,無法進行有序的 LabelEncoder 時,通常考慮將變量做 0、1 啞變量的稀疏化處理,稀疏化處理既有利于模型快速收斂,又能提升模型的抗噪能力。
3.1.2 基本統計描述
描述性統計量分為:集中趨勢、離散程度(離中趨勢)和分布形態。
1)集中趨勢的描述性統計量:
均值:是指一組數據的算術平均數,描述一組數據的平均水平,是集中趨勢中波動最小、最可靠的指標,但是均值容易受到極端值(極小值或極大值)的影響。
中位數:是指當一組數據按照順序排列后,位于中間位置的數,不受極端值的影響,對于定序型變量,中位數是最適合的表征集中趨勢的指標。
眾數:是指一組數據中出現次數最多的觀測值,不受極端值的影響,常用于描述定性數據的集中趨勢。
2)離散程度的描述性統計量:
最大值和最小值:是一組數據中的最大觀測值和最小觀測值
極差:又稱全距,是一組數據中的最大觀測值和最小觀測值之差,記作R,一般情況下,極差越大,離散程度越大,其值容易受到極端值的影響。
方差和標準差:是描述一組數據離散程度的最常用、最適用的指標,值越大,表明數據的離散程度越大。
3)分布形態的描述性統計量:
偏度:用來評估一組數據的分布呈現的對稱程度,當偏度=0時,分布是對稱的;當偏度>0時,分布呈正偏態;當偏度<0時,分布呈負偏態;
峰度:用來評估一組數據的分布形狀的高低程度的指標,當峰度=0時,分布和正態分布基本一致;當峰度>0時,分布形態高狹;當峰度<0時,分布形態低闊。
4)頻率分析:頻數分布分析(又稱頻率分析)主要通過頻數分布表、條形圖和直方圖、百分位值等來描述數據的分布特征。
在做頻數分布分析時,通常按照定性數據(即分類的類別),統計各個分類的頻數,計算各個分類所占的百分比,進而得到頻率分布表,最后根據頻率分布表來繪制頻率分布圖。
5)趨勢分析:特殊情況下,當X軸是日期數據,Y軸是統計量(比如均值、總數量)時,可以繪制出統計量按照時間遞增的趨勢圖,從圖中可以看到統計量按照時間增加的趨勢(無變化、遞增或遞減)和周期性。
6)相關性分析:相關性分析是研究事物之間是否存在某種依存關系,并對具有依存關系的現象進行相關方向和相關程度的分析。相關程度用相關系數r表示,r=0表示不相關,通常情況下,0 < | r | <1表示變量之間存在不同程度的線性相關,根據約定的規則判斷是否存在明顯的相關性。
3.2 統計推斷
對于在線分流實驗的效果評估方面,統計推斷是必然繞不開的一個話題。通常來說,我們的統計推斷流程包括了進行假設檢驗,P值的計算,統計功效和置信區間的獲得。
3.2.1 假設檢驗
假設檢驗使用了一種類似于“反證法”的推理方法,它的特點是:先假設總體某項假設成立,計算其會導致什么結果產生。若導致不合理現象產生,則拒絕原先的假設。若并不導致不合理的現象產生,則不能拒絕原先假設,從而接受原先假設。同時,它又不同于一般的反證法。所謂不合理現象產生,并非指形式邏輯上的絕對矛盾,而是基于小概率原理:概率很小的事件在一次試驗中幾乎是不可能發生的,若發生了,就是不合理的。至于怎樣才算是“小概率”呢?通常可將概率不超過 0.05 的事件稱為“小概率事件”,也可視具體情形而取 0.1 或 0.01 等。
在線分流實驗通常選用 Bootstrap + t test 的方式進行總體檢驗,為什么當樣本足夠大時仍采用t檢驗呢?因為根據中心極限定理及 Slutsky 定理等,任意分布下樣本構造的 t 統計量趨向于標準正態分布,因此 t 統計量對應的 p 值可由 t 分布近似計算。即樣本量較大時,可以使用 t 檢驗任意分布的隨機樣本均值比較。
3.2.2 P值(P value)
P值是當原假設為真時,比所得到的樣本觀察結果更極端的結果出現的概率,是用來判定假設檢驗結果的一個參數。在計算 P 之前我們需要選擇顯著性水平,alpha 值只是一個閾值,即用來與 P值 進行比較判定是否具有統計學意義的一個判斷標準,通常來說 alpha 會選擇0.05,如果 P值 < alpha,可以解釋為獲得的結果大概率屬于另一個分布,我們認為得到的樣本結果是顯著不同的;若 P值 > alpha,意味著所獲得的結果更可能是同一總體分布的一部分,可認為獲得的結果并不顯著,只是一個偶然。
在現在的分流實驗中,如果 P值 顯著,可以認為實驗組與對照組的分布不同,兩組的策略差異帶來了顯著性差異,但如果 P值 不顯著,可以認為實驗組與對照組之間的差異并不由策略帶來,而是偶然因素造成的。
3.3.3 統計功效
首先需要理解第一類錯誤與第二類錯誤,第一類錯是α錯誤,即實驗本身沒有效應,但我們覺得有效應,α 就是我們犯第一類錯誤的概率,而第二類錯誤是β錯誤,指實驗本身有效應,但是我們誤以為沒有,這個錯誤的概率定義為 β。而統計功效,就是 1-β,即不犯二類錯誤的概率。換句話說,就是當 AB 兩組差異真的存在時,我們能正確判斷的概率。
那么在實驗中,統計功效的意義在哪呢?根據其背后邏輯,我們可以知道,統計功效低,那么當AB兩組差異真的存在時,我們很可能會錯誤判斷兩組差異不存在。這種情況,通常發生在我們的實驗結果不顯著時。一般我們會繼續優化實驗方案,或者擴大樣本量繼續實驗,努力嘗試多次。所以更多時候,給我們帶來實際困擾的是一類錯誤。即AB兩組其實沒有差異,但被誤認為有差異。因此,以往的實驗里,我們更多的會看到顯著性水平α。但通過重復多次實驗來獲取顯著結果,會增大犯錯誤的概率。并且,完全忽略β值也是不科學的。更好的辦法是同時考慮α和β,把β控制在一個合理的范圍內。
我們一般把統計功效定義在80%(或90%)以上,即β在0.2(或0.1)以下,通常認為這樣的可信度是可以接受的。統計功效的計算公式為:
其中,σ 是標準差;Φ是標準正態分布下某個X值對應的概率面積;α是一類錯誤概率;β是二類錯誤概率,1-β是統計功效。
3.3.4 置信區間
置信區間是指由樣本統計量所構造的總體參數的估計區間。在統計學中,一個概率樣本的置信區間(Confidence interval)是對這個樣本的某個總體參數的區間估計。置信區間展現的是這個參數的真實值有一定概率落在測量結果的周圍的程度,其給出的是被測量參數的測量值的可信程度,即前面所要求的“一個概率”。
3.3 深度分析
在現有的在線分流實驗框架體系下,對于實驗的深度分析主要集中在維度細分和歸因兩個方面。
3.3.1 維度細分
對實驗結果進行分維度拆分分析,觀測實驗效果,例如用戶分群,對實驗結果進行分群分析,看總體實驗結果在用戶群分解之后是否一致,是否在某一類用戶的流量上表現好,而在另外一類用戶里的流量上表現差?又或者對于點擊率實驗分位置拆分,可以把頁面總體點擊率拆分為分位置點擊率,然后針對頁面內容與用戶需求,做一一對應分析。
當對維度拆解去驗證實驗效果來自局部增長還是全局增長的問題時,對于率指標或者分類的頻數指標,常用的方法是采取分層卡方檢驗(cmh test)的方法去評估在細分緯度下是否存在辛普森悖論的場景,然后才細分維度兩兩間采取卡方檢驗的方式尋找有顯著差異的配對組合;而對于均值類指標或比值類指標,這種指標并不能應用 cmh test 的方法去評估,而是可以采用方差分析的方式去評估分層間是否存在顯著,用 LSD 方法構建統計量去尋找有顯著差異的配對組合。
3.3.2 歸因
當我們從實驗獲得顯著的結果后,可以說明實驗策略確實帶來了有效收益,但是一個完整的實驗項目這樣就結束了嗎?顯然不是,一個沒有被歸因的結果,不太可能給我們帶來可以被沉淀和復制的經驗,進一步深層次挖掘,我們需要探尋的是實驗為什么成功了?具體表現是什么?這時掌握對實驗數據歸因分析的思路,分析尋找實驗成功背后可能的真相,才真正有利于我們決策,而不只是停留在一個實驗結果數據上。
那么,如何歸因呢?
1)獲取方案觸達到轉化的過程指標,觸達到轉化的中間過程,通常都會有一個“過程黑箱”,如若不去拆解這個過程,對我們來說就是個黑盒子,但如果去進一步探尋,可以發現許多我們可以使用的數據,也就是我們所說的“過程指標”,過程比較簡單,只需要梳理該過程黑箱內可能影響轉化的指標即可。
2)其他可歸因的數據,除了過程黑箱,我們還能找到其他數據來觀察變化,很常見的一種便是流失數據,這是最能體現負面影響的數據指標,就是當策略觸達后,用戶不是直接轉化,而是直接流失了,可以分析用戶在該頁面是如何流失的,流失前的相關行為變化,往往轉化率不行也意味著流失,那么用戶如何流失就很可能給我們提供重要信息。此外,我們還能觀察轉化后的留存情況,訂閱保留等數據,這些數據給我們提供了很有價值的長期估算指標。
3)歸因分析過程要不斷的假設,要充分挖掘一份實驗數據的信息,就要不斷的重復做假設,重復分析和驗證,當新的假設無法被現有數據驗證時,則可以再設計實驗去驗證,這個就是優化方案或想法的來源。
實現上述的歸因思路可以運用不同的分析模型,包括漏斗分析模型、歸因分析模型、用戶路徑分析模型 以及 session 分析模型,這些都是可以用來分析轉化率、流量分布等數據。此外,還可以借助一些回歸模型和機器學習的算法,尋找相關性最大因子或過程指標,找到策略成功的關鍵。
???4. 實驗決策
在經歷完上述步驟后,便到了完整實驗的最后一步——實驗決策。在這里需要結合實驗效果部分中提到的的統計描述及推斷和深度分析的數據結論去為實驗定下一個科學的決策。
由于在線分流框架下的實驗基本是對全局流量進行分割實驗,在這樣的背景下,我們需要回答:策略是否帶來了正向效果?如果有,是否需要對全局流量/局部流量進行擴量?如果沒有效果,是否需要回退之前的策略,再做優化迭代?
對于擴量的選擇,除了需要關注核心指標的增量及 p值,同時還要結合其他指標、業務經驗以及多維度數據去驗證判斷是否全量;如上述提到,我們需要結合實驗效果部分里的統計描述及推斷和深度分析的數據結論去進行判斷。具體流程包括:
我們的核心指標是否帶來了顯著性的收益,是否達到了我們的預期?
分維度來看,是全局均有增長還是僅在某些維度的某些層達到了預期增長?
如果分維度各層均有顯著性的提升或不存在某些層級顯著負向的情況,可以選擇全局擴量;如果僅在某些層級有顯著性的提升并且同時存在某些層級顯著負向的情況,可僅針對有提升的層級進行擴量操作,其余層級再做優化迭代。
END
【阿里媽媽數據科學系列】第一篇:認識在線實驗
瘋狂暗示↓↓↓↓↓↓↓
總結
以上是生活随笔為你收集整理的【阿里妈妈数据科学系列】第二篇:在线分流框架下的AB Test的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高并发图片实时渲染技术在阿里妈妈的大规模
- 下一篇: 阿里妈妈流量反作弊算法实践