項目覆盤:如何避開從0~1構建AB Test過程中的坑

編輯導語:ABTest,簡單來説,就是為同一個產品目標制定兩個方案,通過日誌記錄用户的使用情況,通過結構化的日誌數據分析相關指標,從而得出更符合預期設計目標的方案,最終將全部流量切換至符合目標的方案。本文作者通過自己的經驗,分享給我們應該如何避開從0~1構建AB Test過程中的坑。

項目覆盤:如何避開從0~1構建AB Test過程中的坑

最近設計完成了一個用於信息投放的ABTest功能,正好總結梳理下,避免大家踩坑。

AB實驗大家都聽過,互聯網公司裏更常見,開始講內容之前通俗的介紹下AB概念:你在做產品規劃設計時,想出了一個改版方案(姑且稱為版本B),但不確定這個改進的效果是否比老版本(稱為版本A)效果好。

於是想對比下這兩版本的效果,所以你把用户羣體(假設100人),其中10%的流量分配給B方案,90%的流量分配給A方案,持續一週後,查看數據;如果版本B效果比版本A好,那就準備全部上線,如果版本B效果不好,那就下線或重新做實驗。

項目覆盤:如何避開從0~1構建AB Test過程中的坑

(手繪人羣分流示意,請諒解)

故事講完了,可能很多人覺得很簡單,不就是之前學的生物化學裏的單一變量嘛,如果這樣想,那麼你的AB實驗應該是做錯了。

一、AB實驗中的典型問題

先看下AB裏的幾個核心問題:

  1. 怎麼劃分人羣,是隨機劃分還是依照什麼規則確保人羣劃分的合理?(AB實驗裏的分流邏輯);
  2. 實驗結果出來了,我怎麼判斷這個結果可信不可信(AB實驗裏的顯著性差異);
  3. 實驗結果出來了,實驗組數據好,我怎麼判斷是不是真的好(AB實驗裏的第一類錯誤);
  4. 實驗結果出來了,實驗組數據差,我怎麼判斷是不是真的差(AB實驗裏的第二類錯誤);
  5. 實驗結果出來了,好多個維度數據,我怎麼衡量實驗結果(AB實驗裏的衡量指標);
  6. 實驗結果出來了,但是一組AB實驗我總覺得不靠譜(AB實驗的AB組,稱為AA組以及AABB組)。

解決上面6個問題,就從邏輯上完成了AB實驗方案的規劃,剩下的就是產品設計了。

二、如何合理的劃分人羣1. 什麼是人羣劃分(分流)

這個問題是AB實驗裏最關鍵的分流邏輯。

AB實驗最關鍵的是保證變量,是的,這一點和生物化學裏的單一變量法一樣了,除了你產品要實驗的點不同外,其實人羣也要保證一樣,這個一樣不是説流量或比例一樣,而是人羣特質一樣。

舉個例子:BB霜廠家做總人數1200人的AB實驗,1號BB霜投放給了一波600人的女生羣體(即人羣A分流50%),2號BB霜投放給了另一波600人男生羣體(即人羣B分流50%),流量劃分一致,實驗結果發現人羣A的接受度很高,結論:1號BB霜更受市場歡迎!

這個結論可信麼,不可信,因為本身人羣特質就不一樣,這裏和流量1:1沒關係,流量的比例多少不會影響AB實驗結果,男生拿到BB霜接受度肯定不高(莫要牛角尖,説男生拿到送女朋友之類云云),這個例子説明的是人羣特質對實驗結果的影響。

2. 如何進行人羣劃分(分流)

首先我們公司是內部有專門的人羣分流系統,主要默認的分流算法是uid+hash因子 計算md5取模,根據結果判斷是落在哪個實驗分桶裏,該系統可以直接對接使用,所以此處不贅述。

本次主要講下對於沒有科學分流系統的公司如何處理?

採用算法或規則分流,算法分流也分為在線分流和離線分流。在線分流是指根據當前線上目前的實時特徵進行劃分,結果更加精確;離線分流是指根據T+1或T+N(具體N根據不同公司不同業務來確定)的特徵進行劃分。條件允許情況下,推薦前者。

核心思路主要是拿到用户的唯一標識,對用户的唯一標識進行雜散後重新分配。

不同產品唯一標識不同,但一般都有用户Uid,簡單方式可以用規則對uid採取奇偶數劃分;另外一種引入算法,如Hash算法(一般翻譯為散列、雜湊或音譯為哈希,其輸出是散列值),對uid進行哈希處理。處理後根據業務要求,加入分桶邏輯,判斷具體的uid落在哪個分桶內,完成科學分流。

3. 如何設計人羣劃分(分流)

分流的本質是分桶,劃分到不同桶內。所以實現邏輯上明確後,產品設計上其實很簡答,參考思路如下:

項目覆盤:如何避開從0~1構建AB Test過程中的坑

(axure草稿版交互,人羣分桶示意,參考看就好)

三、如何判斷結果是否可信1. 結果差異是不是明顯(顯著性檢驗)

判斷實驗是否可信就是AB實驗裏的顯著性檢驗,由於AB實驗對用户進行了分流、抽樣,不同實驗組之間的差異本身就存在隨機性。

所以存在一個顯而易見的問題,實驗的結果是隨機波動導致的還是真實可信的差異?檢驗差異的統計顯著性就是幫助我們判斷這個差異是真實的效果,還是僅僅是由於分流抽樣帶來的隨機的差異。

之前聽韓瞳大佬的課程時,瞭解到一個拋硬幣的例子,淺顯易懂,藉由該例子解釋下:想驗證一個硬幣有沒有被動了手腳,應該怎麼做?

  1. 無限次拋擲,然後記錄正反面數據,看下正反面比例;
  2. 這件事前提是大家均知道,正反面的概率分別是50%。

在證明之前,統計學上有個概念原假設和備擇假設,原假設即想要證明的假設,備擇假設即不想證明的假設。所以在這個例子裏,我們做如下假設:

那麼假設硬幣的數據如下:

項目覆盤:如何避開從0~1構建AB Test過程中的坑

你是不是覺得結果不好判斷,或者自己心裏的判斷很主觀,到底偏移多少算正常的,偏移多少算不正常的?這就是顯著性檢驗要解決的。

再給出答案之前,還需要知道AB實驗裏的四種數據情況:

項目覆盤:如何避開從0~1構建AB Test過程中的坑

表格中的兩個錯誤是什麼情況下發生的呢?

第一類錯誤:也就是比如拋擲1000次,600次正面,400次反面,數據看起來不正常,但是實際上是統計學裏正常的情況,如果繼續拋擲1000次,可能就是510正面,490反面了,也就是之前的拋擲恰好處於自然波動範圍內了;

第二類錯誤:也就是比如拋擲10次,5次正面,5次反面,數據看起來正常,但是實際上統計學裏已經不正常了,如果繼續拋擲1000次,可能這個硬幣就變成800正面,200反面了,也就是説由於拋擲次數過少導致的。

講到這裏,就是顯著性檢驗的作用了,用於判斷到底是否是正常的波動。

  • 如何評估是否出現了第一類錯誤:採用P值
  • 如何評估是否出現了第二類錯誤:採用Power值
2. 怎麼判斷結果是否明顯(檢驗方法)

1)先來解決第一類錯誤

這裏非統計學概率學夥伴要問,什麼是P值,那麼來解釋下。AB實驗的基礎是統計學裏的假設檢驗裏的知識,核心思路如下:

  1. 當樣本量足夠大足夠多時,把實驗對象分為兩組,如A組和B組。由於數量夠多夠大,理論上可以認為AB兩組的樣本特質一樣,即樣本無差別;
  2. AB兩組投放同一個產品,對B組投放的產品做了改動,A組無改動(統計上稱B組為實驗組,A組為對照組);
  3. 假設該改動沒有影響(統計學上稱之為“原假設”:即最初的假設條件);
  4. 假設該改動有影響(統計學上稱之為“備擇假設”:即原假設的對立假設,包含一切使原假設不成立的命題);
  5. 觀察B組的實驗數據,在統計學和概率學的計算下,原假設成立的前提下,判斷B組數據出現的概率。根據這個概率是否處於置信區間範圍內來判斷,原假設是真還是假。
項目覆盤:如何避開從0~1構建AB Test過程中的坑

(手繪p值示意,請諒解)

如圖,在統計學上,參考原假設來判斷其出現概率稱之為P-Value,即p值。

P值指的是比較的兩者的差別是由機遇所導致的可能性大小。P值越小,越有理由認為對比事物間存在差異。一般統計學認為,P>0.05稱“不顯著”;P<=0.05稱“顯著”,P<=0.01稱“非常顯著”。

P<0.05,就是説結果顯示的差別是由機遇所致的可能性不足5%,或者説,別人在同樣的條件下重複同樣的研究,得出相反結論的可能性不足5%。

但是很多AB實驗裏容易搞混一個詞,因為AB實驗裏經常用“顯著”來描述,所以容易出現“差異具有顯著性”和“具有顯著差異”兩個詞混用,其實二者意義不同。

前者是指其p<=0.05,即可以相信兩個事物完全相同的概率還不到5%,因此可以認為兩個事物確實存在差異,這個結論如果是錯的,錯誤的概率≤5%。

後者是指兩個事物的差別確實是比較大的,如蘋果和西紅柿差別很大,因此可以認為“有顯著差異”,但小蘋果和大蘋果差別不是特別大,但如果AB實驗統計學上的p值≤0.05,可以認為兩者“差別有顯著性”,但不能認為是“有顯著差異”。

好了,這裏解釋了p值以及在判斷p值過程中的兩類錯誤。綜上,所以判斷實驗結果是否可信的可以通過判斷P值來判斷。

2)再來解決第二類錯誤

什麼是power值,那麼來解釋下:接上面的硬幣實驗,也就是硬幣的數據看起來正常(也就是數據好像符合原假設),但是結果確是硬幣實際上不正常,我們犯這個錯誤的概率,稱之為二類錯誤概率值,而power值即稱為統計功效,也就是不犯這個錯誤的概率。

一般情況下,power值在80%或90%以上,認為是可信的,可以接受的。

四、其他衡量方法

聽完後是不是覺得AB沒有那麼簡單了,別擔心,上面的邏輯研發會從代碼層面搞定或Python裏有現成的函數,產品經理梳理好邏輯就行。

另外還需要額外説明下,AB實驗的衡量方式還有“通過樣本估計整體”、“置信區間”兩種方法,不過多闡述,感興趣的可以自己百度下,效果殊途同歸。

好了,這次就先到這,由於太耗時,下次在寫一篇AB Test(下)講解下AB的衡量指標以及AA組、AABB組的問題。

作者:楠神,公眾號《音波楠神》

本文由 @楠神 原創發佈於人人都是產品經理,未經作者許可,禁止轉載

題圖來自 Unsplash,基於 CC0 協議

版權聲明:本文源自 網絡, 於,由 楠木軒 整理發佈,共 2859 字。

轉載請註明: 項目覆盤:如何避開從0~1構建AB Test過程中的坑 - 楠木軒