聊聊A/B實驗那些事兒

2 評論 6112 瀏覽 20 收藏 13 分鐘

編輯導語:作為一個大部分業務都依賴的重要引擎,在實際使用過程中卻發現會遇到各種各樣的問題。這篇文章詳細介紹了數據驅動的核心引擎——A/B實驗,分別從過程、節奏以及結果進行闡述,推薦想要了解A/B實驗的童鞋閱讀。

A/B實驗是數據驅動的核心引擎,目前大部分業務都依賴它進行決策,但在實際運行過程中會遇到各種各樣問題。

下面讓我一起聊聊A/B實驗那些事兒。

一、AB實驗設計過程

首先聊聊實驗設計過程,實驗設計過程包含4個核心問題:

問題1:隨機分桶單元是什么?

大部分隨機分桶是按用戶維度,用戶維度有登錄id、設備id、匿名用戶id(cookie),除cookie在時間縱向上不穩定,登錄id和設備id均是長期穩定的。

分桶方法:目前有很多A/B實驗平臺都可以支持分桶,主要通過設備id和層級id使用Hash函數進行分桶,同樣也存在按尾號分桶情況,若是尾號分桶需要考慮各個尾號樣本數據是否均衡,例如是否會存在某個尾號經常做實驗,造成樣本不均衡。

問題2:我們的目標群體是什么?

思考實驗的目標群體是什么,實驗的背景和目標是什么,是實驗設計的核心問題,若實驗是一個以特定群體為目標意味著你只想對具有某一特征下的特定用戶運行實驗,那么觸發條件變得尤為重要,因實驗觸發條件不同可能會導致幸存者偏差等各類問題,從而導致實驗結果不可信。

問題3:實驗需要多大的樣本量?

實驗需要多大樣本量,涉及到實驗功效是否充足情況,對結果的精確度有直接影響。樣本量越大,樣本的功效越好,實驗結果越可信,但同時耗費的資源也越多,如果樣本量太小,實驗功效不足,結果不可信,那么如何計算最小樣本量,可以參考下面公式:

問題4:實驗需要運行多久?

對于線上實驗,用戶隨之時間進入實驗,時間越長,用戶數越多,統計功效通常也會隨之提高,考慮到用戶會反復訪問,用戶隨時間的累計可能是次線性的,即第1天來N人,第2天累計進入實驗用戶<2N,所以實驗運行僅運行1天,則更側重在高頻活躍用戶。

同樣因周末與工作日用戶群體不同,也會有周末效應,季節性也同理。

有些實驗在初始階段有較大或較小的新奇效應,也會影響數據指標,因此建議實驗至少運行一周。

二、A/B實驗放量節奏

通過逐步放量的流程來控制新功能發布帶來的未知風險是很普遍的,我們需要衡量速度、質量和風險。

第一階段目標降低風險:可以建立測試人群,測試實驗運行風險,觀察實時或近實時結果,盡早了解實驗是否有風險,如遇問題可快速回滾。

第二階段目標保證實驗質量,我們建議最后保持一周,如有初始或新奇效應,則需要更長時間,若僅運行一天的實驗,其結果將傾向于重度用戶,根據經驗,如果沒有發現初始或新奇效應,則一周之后每多運行一天帶來的額外收益都會越來越小。

第三階段目標通過實驗進行決策,通過分析實驗核心指標,確定實驗是全量或者放棄。

若實驗期間提前達到統計顯著,根據經驗,是不建議提前全量,通常使用的統計學假設是在實驗結束時進行統計測試,而提前提前結束實驗違反了假設,會導致一些虛假的成功。

三、A/B實驗結果分析

陷阱1:樣本量不均衡

實驗分析第一步檢驗實驗組與對照組樣本是否均衡,實驗組UV/對照組UV=1代表均衡,如果實驗組和對照組樣本量不均衡,那可能在實驗階段發生漏洞導致的,那么我們不應該相信任何其他指標。產生樣本量不均衡有多種原因,主要是以下原因:

  • 瀏覽器跳轉,一種常見的ab實驗機制是實驗組跳轉到另一個頁面,這通常會導致樣本比率不均衡,主要原因:a、性能差異:實驗組用戶需要接受額外的跳轉,跳轉過程性能可能快可能慢。b、跳轉不對稱:實驗組跳轉新頁面后,可以進行收藏、轉發、返回等各種動作,而對照組均沒有;所以對照組和實驗組都需要有跳轉頁面,讓實驗組和對照組有相同待遇。
  • 殘留或滯留效應,新的實驗通常會涉及新的代碼,所以錯誤率會比較高,新實驗會引發一些意想不到的問題導致實驗中止并快速修復上線,重新隨機化會打破用戶的連貫性,會讓用戶從一個用戶組轉到另一個用戶組,從而影響樣本均衡。
  • 用戶隨機分桶過程有漏洞,有可能在放量過程中出現bug導致實驗組和對照組樣本不均衡
  • 糟糕的觸發條件,觸發條件應該包含任何可能被影響的用戶,觸發條件基于可能被實驗影響的屬性也會讓實驗樣本不均衡

那如何識別樣本不均衡呢?

  • 驗證分桶時機點或觸發時機點的上游有沒有差異;
  • 驗證實驗樣本的分桶設置是否正確;
  • 順著數據漏斗路徑排查是否有任何環節導致樣本不均衡;
  • 查看用戶細分群體樣本比例
  • 查看與其他實驗的交集

陷阱2:分析單元不一樣

在分析頁面跳轉時,有個核心指標CTR,CTR有兩種常見計算方法,二者的分析單元是不一樣的。

第一種CTR1=總點擊數/總曝光數。

第二種CTR2,先計算每個用戶的CTR然后平均所有用戶的CTR。

如果隨機分桶單元是用戶層面,那么第一種方法使用了一個與分桶單元不同的分析樣本,違背獨立性假設,并且讓方差計算變得復雜。

例如下面例子,有1W用戶,假設每1K人有相同曝光和點擊, CTR1=7.4%,CTR2=30.4%,顯然CTR1受到了離群點影響。

這兩種定義沒有對錯之分,都是CTR的有用定義。但使用不同的定義會得到不同的結果。一般兩個指標都會做成看板。

陷阱3:稀釋效應陷阱

計算對觸發人群的實驗效應時,需要將效應稀釋到整個用戶群,如果在10%的用戶上增加3%的收入,那么整體收入是否將提升10%*3%=0.3%?一般并沒有,總體效應可能是0–>3%之間任意值!

如果改動針對站用戶總體10%的低花費人群(花費為普通用戶的10%),且該改動將這部分用戶的營收提高3%,那么對整體營收將提高=3%*10%*10%=0.03%。

陷阱4:樣本間信息干擾

我們假設實驗中每一個實驗個體是獨立的,不會相互影響,但用戶個體會因為社交網絡,對同一內容的互動信息等導致相互影響。

例如對社交類app有個策略“你可能認識的人”這個功能,實驗組更好的推薦策略,會促使用戶發送更多的邀請。然而接收到這些邀請的用戶可能在對照組,如果評估指標是總邀請量,那么實驗組和對照組的邀請都會增加,因此測量出來的實驗組和對照組的差異會偏小。同樣一個人可能認識的人是有限的,因此新算法在一開始可能會表現更好,但由于供推薦的供應量限制,長期來看可能會達到較低的均衡。

那要如何應對上述問題呢,首先不是所有用戶行為都會出現網絡效應,我們可以界定特殊行為會造成影響,只有這些行為被影響時,我們觀察特殊行為是否影響下游的指標,同時重點分析該行為帶來的生態價值,根據行為對生態系統的價值和貢獻來考量最終決策。

陷阱5:混雜因素誤導

混雜因素是指與研究因素(暴露因素)和研究結果(結局因素)均有關、若在比較的人群組中分布不勻,可以歪曲(掩蓋或夸大)暴露因素與結局因素的真正聯系的因素。

例如:很多產品有一個現象:看到更多錯誤的用戶通常更少流失!

所以,可以嘗試顯示更多的錯誤以啟迪可以減少用戶流失嗎?當然是不可以,這種相關性是由一個共同愿意造成的:使用度。重度用戶會看到更多錯誤,同時流失率更低。

如果發現某個新功能可以減少用戶流失,需要分析是新功能在起作用,還是因為高活躍用戶流失率低,同時更可能使用更多功能?

這種實驗就要拆分活躍度進行實驗。AB實驗是需要控制變量的,但控制的東西過多了,實驗變得束手束腳,具體控制哪些變量是非常值得思考的,有時候最終控制你真正想要測量的東西,那樣功虧一簣。

有些時候實驗結果給不了清晰的答案,但仍然要做出決策。對于這種情況,我們需要明確需要考慮的因素,尤其是這些因素如何影響實驗顯著和統計顯著的邊界設定。這些考慮會為為了決策提供基礎,而非局限于當前的單一決策。

 

本文由@李誓杰 原創發布于人人都是產品經理,未經許可,禁止轉載。

題圖來自 Unsplash,基于CC0協議

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 寫的很棒,很詳細,也很專業,但是可能專業性太強了,作為行外人可能看不太懂

    來自河南 回復
    1. 謝謝,主要是針對分析師,如有不懂可以深入交流

      來自北京 回復