從零開始學AB測試 躲坑篇

2022-10-11 14:54:10 字數 2322 閱讀 5649

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

a組和b組的使用者一定是要「隨機」分配。隨機這個事很有學問,絕對的隨機甚至根本不可能,實際中只能做到盡量接近真隨機。換句話說,隨機性並不總是成立,你要仔細小心它失效的場景。

在以你測試的時間點為中心的一定時間範圍內,使用者的行為是不變的。

只要牢記並時刻檢查這兩點假設,那麼很多下面的陷阱你自然就能避免了。

很顯然,我們不能不做ab測試。不要企圖用一些其他方法替代ab測試,比如:通過比較產品上線之前n天和之後n天的情況,對比分析去得出結論。這不也是ab對比嗎?看起來沒毛病,這種方法也不是完全沒有用,但是很不穩定,所以不要用。

既然ab**這麼好用,那麼我們全靠它不就行了嗎?以後有任何功能任何改動都先搞個ab測試吧!ab測試並不是做的越多越好,我們可以通過下面簡單的公式來看一下:

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

舉個例子,如果你在節假日對你的產品做ab測試,那麼測試階段的使用者群(樣本)和平時的使用者群自然會有很大的差異(回顧開頭講的第二條前提條件),這樣很難得出你想要的測試結果。ab測試無法在全體樣本上進行實驗,所以必須取樣,取樣要保證隨機性且能代表總體樣本的分布,做實驗的時候就要特別注意避免一些可能導致取樣汙染的特殊因素。

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

如果測試結果顯示新版本比舊版本平均多吸引了30%的使用者,那麼是否就證明萬事大吉,可以開開心心上線了呢? 還不行。這個時候還要對更細粒度的資料做一些分析,保證你看到的「好結果」是真的。 舉個極端點例子,萬一是系統bug導致新版本多統計出了更多的使用者呢? 我們相信,在ab實驗結束並且展現了良好的結果時,你已經基本接近成功了,但是永遠不要在分析更詳細使用者資料之前下結論。

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

ab測試不會一直成功,甚至失敗的次數可能更多,但是如果實驗結束之後不去思考為什麼,那才是徹底的失敗。實際上ab測試失敗的時候,才是我們從中學習並真正了解使用者的時候,千萬不要放棄這樣的機會,要多問些為什麼。

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

舉個例子,如果你優化的是**首頁的效能,那麼就不要拿全站的統計結果去做度量標準。度量標準要選好,不要想當然。

如果新版本有10個細節上的改動,那麼是不是我們要做10個ab測試來分別測試他們的效果呢? 當然不行,千萬不要這麼做。產品的改動效果絕對不是線性相加的,不同的特徵之間要一起組合才能生效,就好比把背景變黑之後一定要把字型變白才行。

還有很多我們無法預料的因素可能會影響到實驗結果,那麼怎麼辦呢? 我們不止要做ab測試,還要做aa測試,用aa測試來保證實驗設定本身沒有雜訊干擾,這個也很重要。於是在實際中你要把1/3的使用者分配給b組,1/3的使用者分配給第乙個a組,1/3的使用者分配給第二個a組。

不管你的ab測試是成功了還是失敗了,在一定時間之後你都要重新審視它,因為環境變了。昨天失敗的ab測試,很可能是你的理念超前了,也許過了一年使用者就可以接受了呢?一次失敗不代表用永遠失敗,反之亦然。

當線上同時存在兩個版本的時候,你一定要考慮到單個使用者的體驗。如果乙個使用者在不同瀏覽器、不同裝置上訪問到了不同的版本,那麼可能會帶來使用者體驗的下降,同時對收集的資料造成干擾。 比如,如果ab版本之間的差異過於明顯,那麼老顧客可能就會很討厭那個新版本,而在新版本上表現出消極的行為,同時在老版本上表現積極的行為,而我們無法從統計結果中對這種偏差就行糾正。所以保證單個使用者體驗的一致性就很重要。

不確定這個翻譯準確不準確,就直接按英文直譯了。如果你是乙個電商**,那麼你最終的目標是要使用者下單付款,你的優化目標應該是針對整個下單的全流程,並且以最終下單的數量作為度量標準。假如你在首頁做了某些活度,讓點選產品頁面的使用者大幅度提公升,有些統計資料看起來會很漂亮,但是對最終的結果可能沒有任何幫助。這個也要注意。

線上同時存在多個版本的話,實在是有點複雜,一般情況下不會這麼幹,但仍要警惕。

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

a組和b組的使用者一定是要「隨機」分配。

在以你測試的時間點為中心的一定時間範圍內,使用者的行為是不變的。

如果你喜歡以上內容,歡迎到我的個人主頁關注我:homepage

零開始學python 從零開始學Python

第1章 python入門 1 1 1 什麼是python 1 1 2 python語言有什麼特點 2 1 3 python可以幹什麼 4 練一練 5 第2章 準備開發環境 6 2 1 在windows上安裝python開發環境 6 2 2 選擇和安裝開發工具 11 練一練 17 第3章 基本概念 1...

從零開始學android

相對布局管理器指的是參考某一其他控制項進行擺放,可以通過控制,將元件擺放在乙個指定參考元件的上 下 左 右等位置,這些可以直接通過各個元件提供的屬性完成。下面介紹一下各個方法的基本使用 no.屬性名稱 對應的規則常量 描述1 android layout below relativelayout.b...

從零開始學 樹

在之前做二級的題的時候,偶爾會碰見二叉樹,很自然的就想起了樹,那麼什麼是樹呢?這裡說的可不是外面的參天大樹,而是有實際概念的樹,下面就來介紹一下樹。樹是由n n 0 個結點組成的有限集合。若n 0,稱為空樹 若n 0,則 1 有乙個特定的稱為根 root 的結點。它只有直接後繼,但沒有直接前驅 2 ...