小流量AB測試能作嗎?能!

AB測試對於產品和運營優化的重要性有目共睹。爲了能更快的獲得試驗結果,試驗流量越大越好。算法

可是當流量不夠的時候怎麼辦呢?小流量AB測試能不能作?能!下面有多個節約流量的方法。
微信

消除異常數據的影響

當點擊量做爲指標時,有時會看到少許設備貢獻了數萬的點擊。這些設備多是出了bug處於異常狀態,也多是在運行自動化測試,總之不會是正常的業務數據。若是將這些數據計入統計結果,將會對結果的準確性產生很大的影響。嚴重的狀況只能重作試驗,至關於本次試驗流量全浪費掉了。因此極端用戶的數據不進行統計,實踐中讓點擊量最大的1%用戶數據不參與計算。app

正確統計進入試驗的用戶數

轉化漏斗中的每一個步驟均可以進行AB測試。假設在轉化漏斗的第3層的頁面進行AB測試,在統計試驗UV的時候,比較科學的方法是將進入到該頁面的用戶統計爲試驗UV,而不是全部訪客。若是沒進入該頁面的用戶也統計爲試驗UV,則會稀釋試驗數據。下面舉個例子看一下稀釋的效果:
AB測試須要樣本量的經驗公式爲測試

δ是但願檢測到的最小變化,p爲轉化率,σ是樣本的標準差。
優化

假設到達該頁面的訪客爲10%,該頁面轉化率爲50%,若是想檢測出10%的提高(50%提高到55%),根據公式計算大概須要1600試驗樣本,對應總訪客16000。若是把全部訪客做爲試驗樣本參與統計,則該種算法下頁面轉化率爲5%(只有原來的十分之一),一樣想檢測出10%的提高(5%提高到5.5%),則須要30400試驗樣本,對應總訪客也是30400。spa

這個例子裏節約了大概1/2的流量,若是試驗頁面的轉化率更高,前面漏斗的轉化率更低,節約效果會更明顯。3d

點擊轉化率比點擊數量更容易得到統計顯著的結果

有些場景下,若是認爲用戶屢次點擊和單次的點擊差異並不大(好比下載,註冊,看廣告等),能夠觀察點擊轉化率指標的統計結果。轉化率是去重的,用戶只要點擊過就計算爲1,不然計算爲0。一樣的試驗樣本,點擊量的標準差是必定大於轉化率的。cdn

仍然用上面提到的公式舉例:blog

假設用戶點擊量的分佈爲0次20%,1次20%,2次20%,3次20%,4次20%。get

則點擊量均值爲2方差爲2,想檢測出10%的提高須要800樣本量。

轉化率爲80%,方差爲0.16,想檢測出10%的提高須要400樣本量。

這個例子裏節約了1/2的樣本量,若是點擊量的分佈更加分散,節約效果會更明顯。

原始版本的流量不要浪費掉

在有些狀況下,爲了穩妥起見每每只會讓一小部分流量(好比總用戶的1%)看到試驗版本,99%的用戶看到原始版本,若是統計試驗數據的時候,看到原始版本的用戶只挑出和看到試驗版本用戶數相同的人數(總用戶的1%)來參與統計,則另外98%的流量至關於浪費了,他們其實是對試驗有幫助的。當試驗版本和原始版本樣本數不相同時,有一個計算等效樣本數的公式:

N = (1/Ncontrol + 1/Nexperimnet)-1

當Ncontrol=Nexperimnet時計算得出N=Nexperimnet/2

若是原始版本(即control版本)的流量所有參與統計,則Ncontrol>>Nexperimnet計算得出N=Nexperimnet
等效樣本數量翻倍了,至關於又節約了1/2的流量。

善用分層試驗

想優化的地方太多了,同時跑多個試驗是常態,是否是流量就不夠用了?若是試驗之間互相不會干擾,能夠考慮分層試驗。分層試驗即容許同一個用戶同時參加多個試驗,經過流量分配的隨機算法保證試驗結果的表明性。原來流量只能作一個試驗,如今不相關的試驗能夠一塊兒作了,效率成倍增長。

同層試驗共用原始版本數據

同層的多個試驗,你們的原始版本是徹底相同的,分開各自統計顯然浪費了數據。以4個試驗爲例:

若是每一個試驗有獨立的原始版本和試驗版本,流量分配都是總流量的1/8,則根據上面提到的等效樣本量公式,每一個試驗的等效樣本數爲總流量的1/16。若是4個試驗的原始版本合併爲公共的原始版本(佔總流量1/2),則每一個試驗的等效樣本數爲總流量的1/10。等效樣本量提高了60%。

若是多個AB測試試驗優化的是同一指標,還能夠進一步的對公共原始版本的流量進行微調。令n爲試驗數量,則 (Ncontrol/Nexperimnet)2 = n 時等效樣本數量達到最大值。n=4代入獲得原始版本佔總流量1/3,每一個試驗版本佔總流量1/6,最終每一個試驗的等效樣本數爲總流量的1/9。等效樣本量又提高了11%。


本文做者:吆喝科技(微信:appadhoc)CSM團隊客戶成功專家 @ 韓剛,原文發佈於吆喝科技博客:小流量AB測試能作嗎?能!

相關文章
相關標籤/搜索