從零開始學AB測試:躲坑篇

AB測試的原理很簡單,只用到了最簡單的統計假設檢驗,但表面的簡單一般都隱藏着陷阱,這一點沒有通過實踐的摸爬滾打是不容易看到的,今天我就把前人已經踩過的坑,一共15個,給你們分享一下。在分享以前,你們腦中必定要有個概念,AB測試雖然簡單且強大,可是其成立是有前提的:css

  1. A組和B組的用戶必定是要「隨機」分配。隨機這個事頗有學問,絕對的隨機甚至根本不可能,實際中只能作到儘可能接近真隨機。換句話說,隨機性並不老是成立,你要仔細當心它失效的場景。
  2. 在以你測試的時間點爲中心的必定時間範圍內,用戶的行爲是不變的。

只要牢記並時刻檢查這兩點假設,那麼不少下面的陷阱你天然就能避免了。瀏覽器

知識點,要考

1. 不作AB測試

很顯然,咱們不能不作AB測試。不要企圖用一些其餘方法替代AB測試,好比:經過比較產品上線以前N天和以後N天的狀況,對比分析去得出結論。這不也是AB對比嗎?看起來沒毛病,這種方法也不是徹底沒有用,可是很不穩定,因此不要用。工具

2. 亂做AB測試

既然AB大法這麼好用,那麼咱們全靠它不就好了嗎?之後有任何功能任何改動都先搞個AB測試吧!AB測試並非作的越多越好,咱們能夠經過下面簡單的公式來看一下:性能

AB測試效果公式

咱們追求的是總的效果,除了注重數量更要注重質量。學習

3. 採樣污染

舉個例子,若是你在節假日對你的產品作AB測試,那麼測試階段的用戶羣(樣本)和平時的用戶羣天然會有很大的差別(回顧開頭講的第二條前提條件),這樣很可貴出你想要的測試結果。AB測試沒法在全體樣本上進行實驗,因此必須採樣,採樣要保證隨機性且能表明整體樣本的分佈,作實驗的時候就要特別注意避免一些可能致使採樣污染的特殊因素。測試

4. 時間範圍不夠

除了要避免在一些特殊時間進行測試,測試的時間還要足夠長,理由以下:字體

  • 時間長有助於收集更多的數據,保證統計顯著性
  • 若是新的特徵改變比較明顯,老用戶可能會不適應,那麼你須要給老用戶必定的時間去適應你的改變,而後收集的數據才更有統計意義。(參考開頭提到的第二條準則)

5. 只關注平均值

若是測試結果顯示新版本比舊版本平均多吸引了30%的用戶,那麼是否就證實萬事大吉,能夠開開心心上線了呢? 還不行。這個時候還要對更細粒度的數據作一些分析,保證你看到的「好結果」是真的。 舉個極端點例子,萬一是系統Bug致使新版本多統計出了更多的用戶呢? 咱們相信,在AB實驗結束而且展示了良好的結果時,你已經基本接近成功了,可是永遠不要在分析更詳細用戶數據以前下結論。優化

6. 忽視技術實現

有些看不見的東西同樣會影響用戶,AB測試階段除了產品特性的不一樣,技術細節也會改變,這些會不會影響到實驗結果? 若是新版本加載更多的css資源,會不會致使頁面加載變慢?這些看不見的細節也會影響用戶體驗,給實驗結果帶來干擾。網站

7. 不去思考爲何

AB測試不會一直成功,甚至失敗的次數可能更多,可是若是實驗結束以後不去思考爲何,那纔是完全的失敗。實際上AB測試失敗的時候,纔是咱們從中學習並真正瞭解用戶的時候,千萬不要放棄這樣的機會,要多問些爲何。翻譯

「想要提升成功率,先提升失敗率。」

失敗是成功之母

8. 用錯誤的度量標準

舉個例子,若是你優化的是網站首頁的性能,那麼就不要拿全站的統計結果去作度量標準。度量標準要選好,不要想固然。

9. 作一系列的測試

若是新版本有10個細節上的改動,那麼是否是咱們要作10個AB測試來分別測試他們的效果呢? 固然不行,千萬不要這麼作。產品的改動效果絕對不是線性相加的,不一樣的特徵之間要一塊兒組合才能生效,就比如把背景變黑以後必定要把字體變白才行。

10. 實驗設置有噪聲

還有不少咱們沒法預料的因素可能會影響到實驗結果,那麼怎麼辦呢? 咱們不止要作AB測試,還要作AA測試,用AA測試來保證明驗設置自己沒有噪聲干擾,這個也很重要。因而在實際中你要把1/3的用戶分配給B組,1/3的用戶分配給第一個A組,1/3的用戶分配給第二個A組。

11. 忽略環境的改變

無論你的AB測試是成功了仍是失敗了,在必定時間以後你都要從新審視它,由於環境變了。昨天失敗的AB測試,極可能是你的理念超前了,也許過了一年用戶就能夠接受了呢?一次失敗不表明用永遠失敗,反之亦然。

12. 交叉訪問污染

當線上同時存在兩個版本的時候,你必定要考慮到單個用戶的體驗。若是一個用戶在不一樣瀏覽器、不一樣設備上訪問到了不一樣的版本,那麼可能會帶來用戶體驗的降低,同時對收集的數據形成干擾。 好比,若是AB版本之間的差別過於明顯,那麼老顧客可能就會很討厭那個新版本,而在新版本上表現出消極的行爲,同時在老版本上表現積極的行爲,而咱們沒法從統計結果中對這種誤差就行糾正。因此保證單個用戶體驗的一致性就很重要。

13. 漏斗污染(Funnel pollution)

不肯定這個翻譯準確不許確,就直接按英文直譯了。若是你是一個電商網站,那麼你最終的目標是要用戶下單付款,你的優化目標應該是針對整個下單的全流程,而且以最終下單的數量做爲度量標準。假如你在首頁作了某些活度,讓點擊產品頁面的用戶大幅度提高,有些統計數據看起來會很漂亮,可是對最終的結果可能沒有任何幫助。這個也要注意。

14. 同時運行多個AB測試

線上同時存在多個版本的話,實在是有點複雜,通常狀況下不會這麼幹,但仍要警戒。

15. 使用錯誤的經驗

AB實驗畢竟是一項科學實驗,因此咱們要用數聽說話,不能想固然。不要亂用一些道聽途說的經驗,好比:「1000個用戶樣本就夠了」,實際上收集多少用戶的數據是要嚴格計算的。上一篇文章咱們分享過相似的工具。再好比,不要覺得在桌面端測試經過的方案,就能夠放心在手機端同時上線了,實際上不一樣平臺的差別很是大,必須單獨進行AB測試。


總之,要記住開頭提到的AB測試成立的兩個前提,要時刻檢驗它們是否成立:

  1. A組和B組的用戶必定是要「隨機」分配。
  2. 在以你測試的時間點爲中心的必定時間範圍內,用戶的行爲是不變的。

若是你喜歡以上內容,歡迎到個人我的主頁關注我:Homepage

相關文章
相關標籤/搜索