天天看點

如何科學地利用A/B測試快速疊代産品?

作者:友盟+資料科學家 楊玉蓮、陸子駿

冠狀病毒來襲牽動着每個人的心,但是病毒影響的不僅僅是我們的健康,也以極快的速度極深遠地影響了整個移動網際網路的發展。主流陣地原本線上下的需求,如醫療和生鮮電商,快速地轉到了線上,而人們對線上内容/商品/服務的消費需求也達到了高點。這對于移動網際網路企業來講,是挑戰也是機會。

疫情期間大部分的網際網路企業新使用者激增。如何在疫情期間及之後,快速将這些新使用者轉化為粘性使用者,是這些企業最大的挑戰。而對于那些使用者下跌的企業,快速地自我疊代抓住已有使用者,同時苦練内功開拓新的業務也是迫在眉睫。特殊時期,如何科學有效地“快”步進行業務更新,産品疊代,是當下移動網際網路企業的絕對剛需,“快”成了企業前進的關鍵字。

做為資料界的碼農,今天就帶你學習一下如何科學地利用A/B測試快速疊代産品,提高使用者體驗,高效實作使用者留存。

讀者朋友可能要問了,A/B測試,誰不知道啊。不就是将實驗對象分流成為兩組或者更多組,監測産品某一變量的改變對于業務名額的影響嗎。恭喜你答對了一小部分。然而,你是否100%相信隻進行了一天或幾小時的A/B測試結果,進而決定一次産品的快速疊代?以下圖為例,我們看到一個進行了一周的A/B實驗,某些天A的名額好于B,某些天B的名額好于A,但實驗期間整體的名額A好于B。這時候,你會面臨一些問題:似乎目前的結果還不能得出結論,是否需要繼續觀察幾天?實驗的樣本量是不是太小了?再觀察兩天就能得出确定性的結論了嗎?産品的疊代速度不允許更久的觀察期怎麼辦。

如何科學地利用A/B測試快速疊代産品?

圖 1: 效果差異不太顯著的A/B測試

如果你還不能很好地回答上面的問題,那就讓我們一起了解一下:如何利用貝葉斯學派的A/B測試既快又準地進行産品疊代吧!

 在介紹貝葉斯學派的A/B測試之前,先簡單地介紹下傳統的頻率學派的A/B測試方法(補充一下,A/B測試,目前市面上的主流方法,就是頻率學派和貝葉斯學派這兩種)。

頻率學派A/B測試方法

 頻率學派A/B測試在實驗進行前要進行實驗設計,包括确定實驗樣本數。對于使用傳統t-test的頻率派A/B測試,我們可以通過顯著性水準(一般設定為5%),統計功效(至少為80%,工業界一般選擇90%),名額最小相對變化(比如轉化率最少在原有基礎上提高10%),還有名額基準值,來預估一個樣本數,如果可能的話再根據流量大小來預估一個實驗時長。在确定了實驗的觀察名額,使用者分組等業務相關事項後,我們就可以啟動頻率學派AB測試,然後等待觀察樣本累積到預定值之後,根據P-VALUE來确定實驗結果的顯著性。當P-VALUE低于預設的顯著性水準時,我們就可以放心地用實驗方案替代對照方案了。

疫情對A/B測試帶來了哪些影響

疫情期間使用者行為變化很快,同時産品的疊代速度也變得更快,一般以周為機關的頻率學派A/B測試沒法适應疫情期的快速變化。為什麼呢?

在網際網路生态本身發生劇烈變化的時期,我們很難複用過去的經驗預先确定A/B測試的名額基準值及期待的名額最小相對變化值,于此同時流量的不穩定也很難讓我們提前預估一個合理的實驗時長。

名額最小相對變化值越小,頻率學派的A/B測試需要的樣本量就更大。這意味着,如果新的産品功能是一個小版本疊代,對業務名額的影響不是特别顯著,就需要較長時間的觀察才能确認此次疊代的最終效果。是以會影響産品的疊代速度。

頻率學派的方法在實驗進行時無法得到實驗結果(頻率學派的no peeking),須要等到實驗結束獲得預先設計的樣本量,才能得到可信的實驗結果。該方法的理論基礎決定了實驗中間觀察到的正向結果,并不一定表示實驗版本就一定優于對比版本,是以無法在實驗過程中做變更或決策。

A/B測試之前需要進行有效的A/A測試。 有可能以前A/A測試出來沒有差别的分組,在疫情時期由于使用者行為發生變化出現名額有差異的情況,這就需要重新并且盡量快地進行A/A測試。

以上的這些變化都要求能夠更快更靈活地進行A/B測試,進而助力産品改版。今天在這裡就跟大家分享一種新的AB測試方法:基于貝葉斯理論的A/B測試。

為什麼貝葉斯學派的A/B測試可以更快?

我們首先來了解一下貝葉斯的A/B測試的主要特點:

貝葉斯方法可以靈活地根據實驗觀察資料本身的分布選取不同的Likelihood分布,基于貝葉斯的A/B測試本質上是基于先驗,Likelihood分布和實驗觀察結果不斷計算實驗名額後驗機率的過程。

相比于頻率學派的方法需要樣本數更少。

貝葉斯方法可以實時觀察和評估實驗結果。而頻率學派需要等待實驗結束,否則在實驗期間評估并采納實驗結果會使得第一類錯誤率(type-I error rate)上升。

貝葉斯方法的結果更加具有解釋性,更友善業務人員去了解。

貝葉斯A/B測試的以上特點,可以有效縮短A/B測試的周期:

 首先,針對使用者活躍變化大難以預估樣本量和實驗時長的問題,隻要确定了實驗觀察變量及其先驗,貝葉斯A/B測試可以不用預估樣本量就開始觀察,能很好地解決頻率學派A/B測試實施之前諸多的實驗設定問題,同時也為前期實驗設計節省了工作量。

 其次,與頻率學派A/B測試必須要等到實驗結束才能評估結果不同,貝葉斯的方法可以實時地觀測和評估實驗結果。這樣,基于貝葉斯的A/B測試就可以根據實驗的實時評估結果靈活決定是要繼續實驗還是停止實驗做出決策。

 此外,貝葉斯A/B測試相對于頻率學派的A/B測試可以隻要更少的樣本得到結論,這樣就可以更快的進行A/B測試的疊代。對于那些采用頻率學A/B測試需要耗時很久,且提升效果不是非常顯著的版本更新實驗,我們可以采用貝葉斯A/B測試更快地得出結論,進而可以快速實驗衆多小的産品改進,最終實作大的版本疊代。

 **貝葉斯AB測試怎麼做?

**

 那麼如何利用貝葉斯學派的A/B測試,快速疊代你的産品呢?

 1 實驗設計

實驗定義階段主要是需要确定實驗假設,實驗優化目标和實驗方案。這是實驗中最關鍵的一步,沒有意義的假設,不清晰的優化目标還有有缺陷的實驗方案設計,都是人力物力的大量浪費。那我們在這一步具體需要确定什麼呢?

 本次實驗的名字(獨特命名,可考慮業務+實驗條件+日期形式,這樣便于區分不同的實驗)

和本次實驗直接相關的業務目标是什麼?間接業務目标是什麼?

本次實驗的假設是什麼?

用什麼名額監控和衡量本次實驗結果?如有多個名額,最重要的是哪個?

本次實驗測試的一個變量是什麼?

實驗人群如何定義?如果同時進行多組實驗,實驗人群如何分組分層(正互動斥原則)?

本次實驗可以結束的标準?

實驗的結束标準很重要。在頻率學派的A/B實驗裡,實驗結束主要是由實驗是否達到了最小的樣本量來判定,之後根據P-VALUE來确定實驗方案是否優于基準方案。但在實際操作中,實驗過程中有必要随時關注一些核心KPI是否發生大規模下降,這樣可以及時終止那些對整體業務或使用者體驗帶來太大負面影響的實驗。

 對于貝葉斯A/B測試,可以在實驗過程中,通過實時計算實驗結果,決定是否停止實驗。 我們可以通過Expected Loss的大小來判斷是否可以停止一次貝葉斯A/B測試的實驗。通常我們會從業務需求出發,權衡實驗速度和實驗結果精度選擇一個合适的Expected Loss門檻值(如果兩組方案在核心名額的差别越小,需要區分這個差别的實驗樣本量就越大,速度就越慢。反之,需要的樣本就越小,速度越快),通過實時計算貝葉斯A/B測試實驗的Expected Loss,選擇Expected Loss的值小于設定門檻值的方案作為最終勝出的方案。

 那什麼是Expected Loss呢? 它是你選擇的實驗組相對于基準組名額損失的期望值 AVG(MAX(基準組名額-實驗組名額,0))。舉個例子,如果基準組的轉化率為10%,實驗組相對基準組的Expected Loss是1%,意思是說如果采納實驗組的方案,會讓轉化率平均減少1%。

 需要指出的是使用Expected Loss并不是唯一的貝葉斯AB測試實驗的結束判據,由于貝葉斯方法輸出的是主要名額的機率分布,讀者完全可以結合得到的實際名額分布來判斷實驗是否可以停止,比如另外一種叫做ROPE+HDI的方法。

 2. 實驗運作

 實驗進入了運作階段,可以關注兩個組的主要名額和次要名額的分布的實時變化。如果出現了關鍵名額明顯下降的情況,是需要及時排查問題,甚至及時復原止血的。

但也要非常注意的是不要過早的停止實驗,由于改版帶來的新奇效應(novelty effect),可能在改版的開始時一部分使用者使用時長增加了,轉化率也增加了,但是新鮮感過去後又恢複到正常的效應。也有一部分使用者由于不熟悉新的版本,導緻使用這個APP的頻次下降,但是熟悉了以後發現真香,于是長期的使用時長增加了,轉化率也增加了。

 是以,一次A/B測試實驗是否可以終止觀察,除了要遵守理論上的實驗終止标準之外,其實還需要關注兩個點。

 首先需要有一些業務的判斷,以及基于實際情況的臨時決策空間。這也是我們推薦貝葉斯AB測試的原因。它允許我們在實驗運作的過程中根據Expected Loss的變化情況靈活決定終止條件。

 其次,實驗觀察時間最好是一個完整的周期。這主要是為了防止一些周期性的行為加強或者削弱對比的效果,影響最後的結論。比如某些APP會在周末活躍使用者才會變多,而實驗如果隻覆寫了周一到周五,實驗結論就會有一定偏差。 但在戶行為每天都有可能發生變化的疫情時期,周期性的概念其實并不存在。

 3. 實驗決策

 由于貝葉斯A/B測試出現的時間較晚,且貝葉斯A/B測試可以得到所關心名額的機率分布,目前沒有一個唯一的标準方法來對貝葉斯A/B測試結果進行統計和評估。 以下列出一些常見的方法:

 方法1:  采用實驗設計部分提到的Expected Loss 和 Expected Gain(和Expected Loss相反的概念)來做決定。

 比如你要測試的是一個新的算法是否能夠提高某個頁面的轉化率,通過實驗後你發現相對于基準組,Expected Gain是20%,而Expected Loss 是1%。說明實驗帶來了轉化率的提高,你可以通過評估增加的轉化率是否值得投入相應的人力和時間成本,來決定是否将這個新的算法推全。 如果實驗組相對于基準組的Expected Gain 和 Expected Loss 分别是1% 和20%,說明實驗帶來了轉化率的降低,需要對這種新的算法下線。

 如下圖的仿真實驗,随着實驗的進行,我們看到政策A和B(variant A,B)帶來的Expected Loss的的變化。由于B的Expected Loss在實驗進行到一定時期就下降到低于門檻值(虛線),是以政策B勝出。

如何科學地利用A/B測試快速疊代産品?

圖2:通過仿真實驗實時統計的Expected Loss。 (本仿真圖檔來自網絡,原始網址)

 方法2: ROPE+HDI的方法是根據A,B兩個實驗各自名額的95% credible interval是否有重合來做判斷(95%credible interval指的是一個名額區間,意思是說真實的名額值落在這個區間的機率是95%)。也有實踐是選用89%的credible interval來增加實驗的統計power。 下圖是基于94% credible interval對同時進行的三組實驗(隻有一個實驗變量)的結果對比,我們可以看到P1的區間與P0不重合,且絕對值明顯大于P0,是以P1的效果優于P0;而P2的區間在P0,P1之間,且均有重合,我們不能根據ROPE+HDI的方法确定P2和P1兩個組的優劣。這時候最佳選擇就是繼續進行實驗直到P1和P2出現差别,那麼如果沒法繼續進行試驗怎麼辦呢?我們還可以計算P2相對P1的Probability of Direction (pd) ,就是計算P2組大于P1組的機率,如果這個機率是可以接受的比如90%,那麼我們也可以選擇P2作為這個實驗的優勝組。

如何科學地利用A/B測試快速疊代産品?

圖3:94% credible interval

 當然,一次實驗的結束不意味着實驗的終結,我們會從實驗的疊代中發現新的問題,提出新的假設,這也是我們下一個實驗的基礎和開始。 由此形成對産品進行A/B測試的良性循環,不斷一步一步的疊代産品和改進産品,這才是資料驅動的産品發展的大道。

頻率學派A/B測試 VS 貝葉斯學派A/B測試

 現在已有的很多頭部公司都在使用A/B測試來優化自己的産品,比如Google的Firebase, Optimizely, VWO。VWO公司就是基于貝葉斯的方法,而阿裡内部的一休(yixiu)和螞蟻金服的Darwin,Quora,Optimizely,Netflix,Testin A/B大都是使用頻率學派的方法。頻率學派與貝葉斯學派的A/B測試,其實各有優劣。我們在進行A/B測試的時候,可以根據實際業務的需求,選擇更适合自己的A/B測試方案。

如何科學地利用A/B測試快速疊代産品?

圖4:頻率學派與貝葉斯學派A/B測試的對比

結語

在快速的A/B測試後統計到的顯著性結果,可能僅僅是當時的使用者行為模式下的顯著結果。但這也正是目前移動生态發生急劇變化的情況下,廣大移動網際網路企業需要的,因為快速的改版帶來的收益可能是非常巨大的。我們希望通過介紹基于貝葉斯學派的A/B測試讓廣大開發者不僅僅在疫情時期可以更快的進行産品的疊代,實作使用者的增長和更高的留存,也希望在後疫情時代,開發者能持續利用适合自己業務場景的資料科學技術,實作産品力的良性提升。

附:關于A/B測試的更多資料

更多關于貝葉斯A/B測試的知識,有興趣的可以參考這篇文章。

這篇文章更加詳細的讨論了貝葉斯和頻率學派方法的不同之處:

https://www.gamasutra.com/blogs/ViktorGregor/20181105/328404/Its_time_to_rethink_AB_testing.php 這篇文章更詳細的比較了貝葉斯A/B測試和頻率學派中t-test的比較

開源的貝葉斯方法的工具:

stan

https://mc-stan.org/

edward

http://edwardlib.org/

edward2

https://github.com/google/edward2

pymc

https://pymc-devs.github.io/pymc/

  pymc3

https://docs.pymc.io/

繼續閱讀