成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

AB 實驗為何值得信賴?

開發
在線 AB 實驗成為當今互聯網公司中必不可少的數據驅動的工具,很多公司把自己的產品來做一次 AB 實驗作為數據驅動的試金石。

1. 前言

在線 AB 實驗成為當今互聯網公司中必不可少的數據驅動的工具,很多公司把自己的產品來做一次 AB 實驗作為數據驅動的試金石。

數據 => 洞察 => 優化,循環往復尋找最優解,尋找增長的方法。

AB 中有句經典的名言:大膽假設,小心求證。

本分享從以下幾個方面來介紹:

  1. 數據驅動
  2. 基本架構
  3. 指標選取
  4. 數據分析

2. 數據驅動

AB 實驗并不是萬能的,沒有 AB 實驗也不是萬萬不能,但是有了 AB 實驗可以少走很多彎路。

2.1 AB 實驗與數據驅動

AB 實驗階段對應數據驅動的不同階段,從最基本的設計執行分析階段到絕大多數改動需要 AB 驗證,從簡單到復雜,從少量實驗到大規模實驗,正好對應的數據驅動從「爬,走,跑,飛」的四個階段,關系是層層遞進的。

圖片

2.1.1 設計執行分析階段

設計執行分析階段主要是:數據檢測設置和數據科學能力搭建。在 AB 實驗上進行多次的實驗,從實驗的設計,指標的定義,實驗的開啟,實驗結果的分析,并且找到成功的一些實驗案例有助于我們進入到下一階段。?

2.1.2 標準化指標階段

標準化指標階段主要是:運行少量實驗到定義標準指標再到開啟更多實驗。AB 實驗開始運行更加復雜的 case 來持續驗證數據的可行性,并且通過運行 AA 實驗來驗證平臺潛在的問題,同時能夠進行樣本比率偏差檢測。

2.1.3 大面積實驗AB實驗階段

從上一個階段的標準化指標,已經可以運行大量實驗,并且各種指標也逐漸相對成熟,每次實驗進行多個指標的權衡,然后在一個應用上利用 AB 實驗對絕大多數的新功能和改動做實驗。

2.1.4 絕大多數改動需要AB驗證階段

幾乎所有的改動都需要經過 AB 實驗的驗證,可以在沒有數據科學家的輔助下,可以對大多數的實驗進行獨立的分析和運作。同時通過對過去實驗的分析,AB 實驗的有效性和最佳實踐也能得到不斷的更新。

2.2 數據驅動的條件

2.2.1 實驗標準化

數據決策肯定是一套標準化的東西來規范,實驗標準化也是 AB 數據驅動的必備條件。

那什么是 AB 實驗的標準化呢?

圖片

AB 實驗需要注意??辛普森悖論、幸存者偏差、選擇偏差等,注意事項都是來源于對撞因子,簡單來說就是「是指同時被兩個以上的變數影響的變數」,具體的可以在 google 深入了解一下。

2.2.2 實驗結果可信性

有數字容易,讓人信賴的數字需要下功夫。開啟實驗容易,實驗報告有數字很容易,這些數字的可信度,這些數字讓人信賴更重要,需要花費更長的時間。

大量實驗中可能只有很小一部分實驗,例如微軟大約 30% 的結果是正向積極的,最終可以發布到整個應用上。

舉個例子??:

如果我拋起三枚硬幣,落地分別是正正反,那么我可以說拋硬幣正面朝上的概率是三分之二嗎?

概率和頻率并不是一個東西,同理,少數幾次 AB 實驗的結果也不能證明版本 A 和版本 B 的優劣。

我們需要統計學上的嚴格論證和計算,來判斷一個實驗結果是否顯著,是否可信。

2.2.3 如何衡量好的想法

對于任何一個想法我們很難去衡量它的好壞,大膽假設小心求證。短期目標可能會與更關鍵的長期目標發生沖突。

舉個例子??:

一家超市突然提高價格,可能會在短期帶來更高利潤。但長遠看,如果更多的顧客改從競爭對手那里購買商品,那么這家店的收入就會減少。

新奇效應如何避免?

對于用戶有感知的 A/B Test,如 UI 改版、新的運營方案、新功能上線等,實驗組做的任何改變都可能引起用戶的注意,好奇心驅使他們先體驗一番,從而導致 A/B Test 中實驗組效果一開始優于對照組,p-value 極小,實驗效果非常顯著。但是一段時間過去后,用戶對于新的改版不再敏感,實驗組效果回落,顯著性可能會下降,最后趨于穩定。足夠的樣本量能保證一個合理的實驗周期,可以使用我們的流量計算器中計算流量和實驗周期,從而避免這種新奇效應的影響。

3. 基本架構

AB 實驗的思想非常簡單直觀,但是并不是代表做 AB 實驗是一種很簡單容易的事情。

舉個例子??,在網站實現一個 AB 實驗,主要涉及到 2 分部分:

第 1 個是:隨機算法,作用是將 users 映射到不同實驗組中。

第 2 個是:分配方法,隨機算法的結果來決定每一個用戶是否看到該網站的實驗。

3.1 流量分割

流量分割的方式:分流和分層。

每個獨立實驗為一層,層與層之間流量是正交的(簡單來講,就是一份流量穿越每層實驗時,都會再次隨機打散,且隨機效果離散)。實驗在同一層拆分流量,不論如何拆分,不同組的流量是不重疊的。

圖片

3.1.1 分流

分流是指我們直接將整體用戶切割為幾塊,用戶只能在一個實驗中。但是這種情況很不現實,因為如果我要同時上線多個實驗,流量不夠切怎么辦?那為了達到最小樣本量,我們就得延長實驗周期,要是做一個實驗,要幾個月。

簡單來說:分流是指對流量進行整體切割,實驗之間互斥。

目的:為了獲取純凈的分區,不會互相影響。

缺點:浪費流量,導致流量不夠。

3.1.2 分層

就是將同一批用戶,不停的隨機后,處于不同的桶。也就是說,一個用戶會處于多個實驗中,只要實驗之間不相互影響,我們就能夠無限次的切割用戶。這樣在保證了每個實驗都能用全流量切割的同時,也保證了實驗數據是置信的。

簡單來說:對整體流量分流分層。

目的:同一個用戶在不同的實驗組,相互不會影響。

缺點:不同層之間的 hash 值盡量不要重合。

3.2 如何看待隨機單元?

什么是隨機單元呢?簡單來說,隨機單元就是 AB 實驗需要達到隨機的最小單元。一個 web 網站中,最小單元可能是頁面級別,可能是會話級別,或者是用戶級別。

舉個例子??:

我們選擇頁面級別的隨機單元,AB 實驗針對某一個頁面,用戶每一次打開頁面的時候決定把該用戶導向某一個實驗組。

最簡單的情況就是:隨機單元和分析單元是一致的。我們大多數情況也是將隨機單元和分析單元采用用戶級別。兩種單元不一致可能使得實驗分析變得更加復雜。

3.3 隨機算法

首先什么是隨機數?不確定的數。

大多數隨機算法使用的是偽數字生成器。

那什么是偽數字生成器?一個生產數字序列的算法,特征近似隨機數序列的特性。偽隨機數生成器通常接受一個隨機種子(seed) 用來初始化生成器的初始狀態。

按照密碼學來將「隨機」分為三種級別:

1. 偽隨機 (PRNG) 2. 密碼學安全的偽隨機 (CSPRNG) 3. 真隨機 (TRNG)

圖片

偽隨機 PRNG 生成的序列并不是真隨機。它完全是由一個初始值決定,初始值稱為隨機種子(seed)。接近于真隨機序列可以通過硬件隨機數生成器生成。但是偽隨機數生成器因為其生成速度和可再現的優勢,實踐中也很重要。

尋找一個合適的隨機算法是非常重要的。

一個實驗的每一個 variant (實驗組或對照組)都具有關于 users 的一個隨機抽樣。隨機算法必須有一些特征。特征如下:

  • 特征(1):用戶必須等可能看到一個實驗的每個 variant,對于任意的 variant 必須是無偏的。
  • 特征(2):同一個實驗中,對于單個 user 重復分配必須是一致的,對于該用戶每次后續訪問中,該 user 必須被分配到相同的 variant 上。
  • 特征(3):當多個實驗同時并行運行的時候,實驗之間必須沒有關聯關系。也就是在一個實驗中,一個 user 被分配到一個 variant,對于被分配給其他任意實驗的一個 variant,在概率上沒有影響。
  • 特征(4):算法必須支持單調遞增的,也就是說,如果沒有對那些已經被分配給實驗組的用戶分配進行變更,用戶看到一個實驗組的百分比可能會緩慢增加的。

3.3.1 使用 caching 的偽隨機

偽隨機數的隨機性可以用它的統計特性來衡量,主要特征是每個數出現的可能性和它出現時與數序中其他數的關系。

偽隨機數的優點是它的計算比較簡單,而且只使用少數的數值很難推斷出它的計算算法。

使用 caching 緩存,可以使用標準偽數字生成器作為隨機算法,一個好的偽數字生成器會滿足特征(1)和特征(3)。

對于特征(2),需要引入狀態,用戶的分配必須被緩存,或者緩存完成可以是數據庫存儲,便于下次再次訪問應用。

3.3.2 Hash 和分區

不同于偽隨機方法,hash 和分區是無狀態的,每一個 user 都會被分配一個唯一的 user_unique_id,使用 ssid 和 webid (或者其他)來維持。user_unique_id 會和實驗的 id 進行映射綁定,接著 user_unique_id 和實驗 id 使用 hash 函數來獲得一個整數,整數的范圍是均勻分布的。

hash 函數的選取需要注意??,如果 hash 函數有漏斗(那些相鄰 key 的實例會映射到相同的 hash code),會造成均勻分布的沖突,如果 hash 函數有特性(某一個 key 變動會產生一個 hash code 上可預測的變動),會造成實驗之間會發生相關。

「加密 hash 函數 MD5 」生成的數據在實驗間沒有相關性。其實還可以關注「大質數素數 hash 算法」等更加精密優良的算法。

3.4 實驗灰度發布

實驗發布是一個容易忽略但又非常重要的步驟,從比較小的流量慢慢發布到相對比較大的流量,直到最后全站發布。這個過程是需要自動化和風險控制相結合。

我們經常的做法就是:

  • 實驗發布之后,還可以預留一些流量來衡量實驗的長期效果。
  • 還可以重復發布某一個實驗,看實驗的結果是否可以保持。

4. 指標選取

選取什么指標來進行檢測,從而更好的幫助我們進行數據驅動決策。

對于一個應用或者產品來說,可能會有很多指標的選擇,哪些指標需要被重點關注,哪些僅僅是關注,哪些是可以不關注。為什么要定義這個指標,這個指標的定義是為了說明什么情況,如果這個指標發生變化,將需要怎么去解釋它。

4.1 指標特性

選取什么指標來進行檢測,從而更好的幫助我們進行數據驅動決策。

圖片

對于一個應用或者產品來說,可能會有很多指標的選擇,哪些指標需要被重點關注,哪些僅僅是關注,哪些是可以不關注。為什么要定義這個指標,這個指標的定義是為了說明什么情況,如果這個指標發生變化,將需要怎么去解釋它。

4.1.1  按照實驗的角度來劃分

核心指標:需要優化的目標指標,決定這個實驗的最終發展方向。這種指標在一個實驗是非常少的,在運行之后是不做改變的。

非核心指標指標:與核心指標有因果關系的+基礎數據的指標,基礎數據的指標是應用運行的底線。

4.1.2 指標敏感性和魯棒性

指標敏感性:指標對所關心的事物是否足夠敏感。

指標魯棒性:指標對不關心的事物是否足夠不敏感。

可以通過預先小規模試驗來驗證,或者 AA 試驗來排除偽關系。

4.1.3 指標分類

  • 計數或者求和(比如:訪問頁面的用戶數)。
  • 指標分布的平均數,中位數,百分位。
  • 概率與比率。
  • 比例。

4.2 自頂向下設計指標

  • 高層次的指標(比如:活躍用戶數,點擊轉化率 CTR 等等)。
  • 指標細節(比如:如何定義用戶活躍)。
  • 使用一組指標,并將它們整合成一個單一指標(比如:總體評價指標 OEC )。

總體評價指標 OEC :如果是使用一套指標,可以把他們聚合成一個指標,比如構造一個目標函數,或者是簡單的加權指標。比如 OEC = A * 0.6 + B * 04 + C * 2 。

現在我們的策略是指標,還是獨立去觀測。那為啥不使用 OEC 來看指標呢?通過 OEC 看的指標不能單獨觀測多個指標,對于新手小白比較友好,只需要關注 OEC,不需要關注多個指標的數據,但是并不能真的反應多個指標的真實情況。

舉個例子??:

點擊率的定義:

  • 定義一:登陸后總點擊次數 / 登陸后的去重后的訪問總數
  • 定義二:被點擊的頁面數 / 總頁面數
  • 定義三:總的頁面點擊次數 / 總頁面數

5. 數據分析

圖片

有了 AB 實驗,并且有實驗指標選取之后,實驗結果的分析就成為一件非常重要而且有挑戰的事情。

產生一組數據很容易,但是從數據中分析得到實驗的洞察(Insight)并不簡單。

5.1 實驗結果顯著

上面有說到實驗結果的可信度,接下來詳細來介紹。

說到實驗結果是否顯著,我們需要知道統計學中 2 類統計錯誤,我們簡單說明一下,這里我們不展開說。

5.1.1 兩類統計學錯誤

在統計學的世界里,我們往往只說概率,不說確定,在現實世界中往往只能基于樣本進行推斷。在 AB 實驗中,我們 不知道真實情況是什么,因此做假設檢驗的時候就會犯錯誤,這種錯誤可以劃分為兩類:

  • 這是第一類錯誤:實際沒有區別,但實驗結果表示有區別,我們得到顯著結果因此否定原假設,認為實驗組更優,發生的概率用 ?? 表示。
  • 這是第二類錯誤:實際有區別,但是實際結果表示沒有區別,我們得到不顯著的結果因此無法拒絕原假設,認為實驗組和對照組沒有區別,發生的概率用?? 表示。

理想狀態下當然是希望可以同時控制這兩類錯誤,但是這是不可能的,兩個概率值之間是負向關系,其中一個值的減少必然伴隨著另一個值的增大,為什么呢?后續有機會再分享。

5.1.2 顯著和可信的判斷

是否顯著,是否可信,我們可以通過以下幾種因素來判斷:?

(1)p 值。展示該指標在實驗中犯第一類錯誤的概率,該概率小于顯著性水平 α ,統計學中稱為顯著, 1-α 為置信度或置信水平。

  • 簡單來說:p 值判斷不同版本的實驗結果之間不存在顯著差異的概率。
  • p-value 越小越可信,有顯著差異的指標,P-value=0.01 的比 P-value=0.05 的可信度更高。
  • p 值基本上還有另一個相對應的叫作 t 值,這個 p 值其實就是在 t 分布下 ≥t 值的概率密度值 (P(x≥t))。

圖片

通常情況下:

p 值 > α(顯著水平α,α 值一般 5%) ,說明 A 版本和 B 版本沒有太大差別,不存在顯著性差異。

p 值 < α(顯著水平,α 值一般 5%),說明 A 版本和 B 版本有很大的差別,存在顯著性差異。

我們根據判斷 p 值和第一類錯誤概率 α 比較,已經做了決策。是不是覺得大功告成,不,我們可以繼續考慮 power 統計功效來衡量實驗的可信。也就是我們要同時考慮第二類錯誤概率,這時候引入 power 統計功效。

(2)power 統計功效(1 - ??)。實驗能正確做出存在差異判斷的概率。

  • 可以理解為有多少的把握認為版本之間有差別。
  • 該值越大則表示概率越大、功效越充分。
  • 一般來說,我們一般并設置的最低的統計功效值為 80% 以上。認為這樣的可信度是可以接受的。

舉個例子??:

實驗 A 顯示,power(統計功效)為 92%,那么就可以理解為有 92% 的把握認為版本 A 和版本 B 之間是有差別的。

但是 power 根本算不出來,power 作為需要滿足的前提條件,作為先驗的輸入值。

  • 實驗開啟前,通過流量計算器中計算流量和實驗運行時長。
  • 實驗開啟后,通過 power=80%,然后計算 MDE。

(3)MDE 檢驗靈敏度,能有效檢驗出指標置信度的 diff 幅度。

通過比較指標 MDE 與指標的目標提升率來 判斷不顯著的結論是否 solid,可以避免實驗在靈敏度不足的情況下被過早作出非顯著結論而結束,錯失有潛力的 feature。

MDE 越小,說明當前的實驗靈敏度越高, 并且可以認為:實驗組相比于對照組,只有高于 MDE 的提升才能大概率檢測出效果顯著。小于 MDE 的提升,大概率不會被檢測出顯著。

  • 當前條件:指當前樣本量,指標值和指標分布情況,并假設樣本方差與總體指標方差足夠接近。
  • 有效檢測:指檢出概率大于等于 80%(也就是犯第二類錯誤概率 ?? <=20%)
  • 主要影響因素:樣本量大小

舉個例子??

假設你對該指標的預期目標提升率為 1%。

  • 如果此時 MDE = 0.5%,MDE < 預期提升值,說明指標變化真的不顯著,請結合業務 ROI 和其他維度里例如用戶體驗、長期戰略價值等來綜合判斷是否值得上線。
  • 如果那此時 MDE = 2%,MDE > 預期提升值,說明當前能檢驗出顯著性的最小差異值是 2%,由于靈敏度不足未能檢測出。這種情況下建議增大樣本量, 例如擴大流量、再觀察一段時間積累更多進組用戶,指標還有置信的可能。

(4)置信區間。置信區間就是用來對一個概率樣本的總體參數的進行區間估計的樣本均值范圍。一般來說,我們使用 95% 的置信水平來進行區間估計。

置信區間可以輔助確定版本間是否有存在顯著差異的可能性:

  • 如果置信區間上下限的值同為正或負,認為存在有顯著差異的可能性。
  • 如果同時正負值,那么則認為不存在有顯著差異的可能性。

在火山引擎 AB 測試的實驗報告中,指標分析的詳細視圖中有個值叫相對差,該值就是指標變化的點估計值,而置信區間給出的是指標預期變化的區間估計值,區間估計值有更大的可能性覆蓋到指標相對變化的真實值。(假設做 100 次實驗,有 95 次算出的置信區間包含了真實值)。

可以這樣簡單但不嚴謹地解讀置信區間 :假設策略全量上線,你有 95% 的把握會看到真實的指標收益在 置信區間 這個范圍內。?

5.1.3 決策流程

圖片

5.2 多次測試

簡單的說:傳統的假設檢驗的設置是對需要檢測的「假設」進行唯一測試,然后計算 p 值。我們有 5% 的概率觀測到某一個并沒有實際變化的“指標”顯得有統計意義上的顯著變化。

現實中,對于同一個實驗,我們通過 AB 實驗反復觀察結果,或者反復針對同一個想法進行迭代。

出現更嚴重的問題就是:我們針對同一個實驗,常常同時觀測幾十個或者上百個指標,導致出現多次實驗的問題,大大增加了觀測并不該有顯著變化的指標有了統計意義變化的概率。

5.3 方差的計算

t檢測中我們需要對數據的方法進行計算。有時候我們的“方差”計算是有問題的,之前有說到的「隨機單元」和「分析單元」不一致的情況下,計算比率型的指標,比如點擊率。

我們來看一個場景:經常我們的「隨機單元」是用戶級別的,然而我們希望計算的是一些頁面級別的點擊率,然后看對照組和實驗組之間的差別的,這個時候就存在「隨機單元」和「分析單元」不一致的問題,傳統的計算點擊率的「方差」公式可能存在問題。

5.4 樣本比率偏差

在理想的狀態下,對照組和實驗組的流量是一半一半的,也就是 50% 的進入到對照組,50% 的進入到實驗組。但是現實是殘酷的,比如會出現 50.27% 的用戶進入到對照組,另外 49.73% 的用戶進入到實驗組。

這種情況正常嗎?我們還信任這樣的實驗結果嗎?

這樣情況的排查和分析。簡單的說,我們需要把這樣的分流結果當作假設檢驗,看這樣的結果是否異常。

5.5 AA 實驗

AA 實驗往往作為檢測平臺穩定性和實驗設置是否正確的重要手段。

總是有人想著做「AA」實驗,為什么會這樣呢?說到底還是對于 AB 實驗存在疑慮和不信賴。大多數想做 AA 實驗的目的主要是:驗證用戶分流是否“均勻”;比較“ AA 組內差異”和“ AB 組間差異”。

其實 AA 實驗中的指標差異顯著/置信并不代表分流不科學,AA 實驗的指標必然存在差異,并且指標差異可能還不小,AA 差異可能“顯著”。

也就是說,對 AB 系統本身進行測試,以確保系統在 95% 的時間內正確識別出沒有統計學意義上的顯著差異。

5.6 對照組和實驗組之間干涉

傳統的實驗我們假設對照組和實驗組是完全隔絕的,然后實際中,完全的隔離是不可能的。

舉個例子??:

社招網絡中,朋友與朋友的關系,我們按照傳統的隨機劃分流量的方法,可能一個用戶在對照組,他的朋友在實驗組,這樣這個用戶可能接觸到對照組的一些信息,從而違背了假設檢驗的一系列基本假設。

5.7 指標的長期效果

有一些“指標”的效果在 A/B 實驗之后,可能會出現一些“惡化”,也就是說,效果可能沒有之前那么明顯了,甚至會出現效果完全消失。

如果遇到短期效果與長期效果可能出現不一致的情況,建議延長測試時間,觀察長期效果。

但是長期存在一些問題:

(1)用戶唯一標識(比如:ssid)跳變的情況,進行實驗時候,通過隨機分配的 ssid,進行確定用戶身份,但是用戶可以在瀏覽器中修改 localstorage 中的 ssid,保持一個穩定的樣本幾乎不可能,實驗進行的越久,問題越嚴重。

(2)幸存者偏差的情況,過度關注幸存者,忽略沒有幸存的而造成錯誤結論。

(3)選擇偏差的情況,由于 ssid 跳變,只有登陸的用戶組成,不具備代表性。

6. 總結

圖片

7. 參考

  1. https://www.cambridge.org/core/books/trustworthy-online-controlled-experiments/D97B26382EB0EB2DC2019A7A7B518F59
  2. https://stats.stackexchange.com/a/354377/320904
責任編輯:未麗燕 來源: 字節跳動技術團隊
相關推薦

2018-08-16 12:25:00

實驗室

2012-05-10 16:32:01

Hadoop

2009-06-10 18:15:36

電腦下鄉家電下鄉

2011-07-20 09:32:05

紅帽Enterprise

2018-12-24 09:54:38

2023-11-06 10:59:20

云計算IT行業

2024-02-02 08:12:40

AB實驗雙盲測試搜索實驗

2011-08-18 12:47:27

cso綠盟

2022-07-31 20:29:28

日志系統

2017-01-06 10:39:28

星域CDNCDN

2017-01-13 09:55:00

2018-07-27 12:27:00

佳能

2011-08-16 13:27:15

2023-09-06 18:37:21

可視化數倉平臺

2020-09-16 10:37:10

人工智能AI技術

2021-12-02 19:39:04

微軟EdgeChrome

2022-01-17 13:43:36

物聯網

2010-06-11 12:42:28

MySQL數據庫

2010-11-17 16:28:45

IT服務運維管理銳捷網絡
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久精品一级 | 在线欧美亚洲 | 干干干日日日 | 国产日韩欧美精品一区二区 | 久久精品一 | 欧美一二三 | 精品视频在线免费观看 | 亚洲一区二区久久 | 91在线网站 | 一区二区三区视频在线观看 | 国产精品99久久久久久久vr | 亚洲欧美另类在线 | 在线观看中文字幕 | 日韩在线播放视频 | 日韩高清一区二区 | 精品一区二区观看 | 欧美视频二区 | 亚洲综合色视频在线观看 | 欧美精品一区二区三区四区五区 | 欧美精品1区2区3区 精品国产欧美一区二区 | 久久大陆 | 国产免费播放视频 | 国产成人久久 | 久久精品久久久久久 | 激情 亚洲 | 国产成人精品午夜 | 亚洲精品欧美一区二区三区 | 成人影院免费视频 | 欧美精品在线播放 | 亚洲va欧美va天堂v国产综合 | 9191在线播放 | 免费一级毛片 | 国产精品国产馆在线真实露脸 | 911影院| 国产欧美视频一区二区 | 一级欧美 | 久久久国产一区二区三区 | 狠狠躁18三区二区一区 | 99热热热热 | 一区二区三区视频在线观看 | 日韩在线播放一区 |