推薦策略產品經理實操(五):AB 試驗
編輯導語:在做產品功能或者需求時,時常會被人問到這個功能/需求能夠帶來多大的收益。但其實我們對于需求所能夠帶來的實際收益是不明確的。這時,AB test就能夠協助我們衡量需求收益。本文主要對AB試驗的大致邏輯和一些重要節點和概念進行介紹,希望對你有所幫助。
在產品做一個功能或需求時,聽到最多的疑問就是:你這個功能/需求能帶來的收益是什么?收益能有多大?那我們怎么去衡量一個需求帶來的實際收益?這個時候,AB test就是協助我們衡量需求收益的好朋友。
一、AB test是什么?
專業術語說:AB測試的本質是分離式組間試驗,也叫對照試驗,在科研領域中已被廣泛應用(它是藥物測試的最高標準)。自2000年谷歌工程師將這一方法應用在互聯網產品以來,A/B測試在國外越來越普及,已逐漸成為互聯網產品運營精細度的重要體現。
現實業務使用中,我認為AB test就是保證2組或多組根據條件限制劃分的用戶在只有1個變量條件情況下,對分組用戶的各項數據指標進行匯總,對比指標變化漲幅來確定試驗好壞,并且伴隨數據分析去發現問題,解決問題的一個過程;
二、AB test的使用場景
產品UI變動時,AB一下新的UI是否會給用戶帶來更好的交互體驗和視覺感受;
新增功能,想給產品增加一個新功能,AB一下新功能能帶來多少收益,后期還值得公司投入多少資源去做這一塊。
推薦系統中,首頁推薦/搜索/推送業務都會用到AB test:推薦上用來對比一個策略、一個模型、甚至增加或減少一路召回、增加或減少一個特征、或強插一路新內容冷啟動;搜索加一個推薦業務模型、上一個意圖識別服務,建一個自定義糾錯庫;推送給用戶推的頻率、推的內容、推的時間等等,這些都需要AB試驗去協助決策。
使用場景很多,以上只是我在工作實踐中遇到的需要做AB試驗的場景。凡是涉及到單一變量的數據對比,在用戶進行維度打散的情況下,萬物皆可AB。
三、AB test怎么用?
1. 在業務中的生效邏輯
AB試驗,既可以做客戶端試驗,也可以做服務端試驗,下面就根據客戶端和推薦服務端和AB試驗平臺的試驗流程來講一下其中的區別和生效邏輯:
客戶端試驗(左圖),主要是說用戶請求推薦時,客戶端主動帶著用戶信息(app版本號、渠道號、新老用戶、用戶onlyid)去AB試驗平臺上獲取用戶的試驗配置,試驗平臺會根據用戶的onlyid進行哈希分流(這個下面有講到)。
然后將用戶分進對應的試驗組,客戶端會把用戶的試驗信息存在本地,每次用戶打開app時會再去拉取一次配置,然后帶著用戶配置請求推薦接口,推薦會根據用戶的試驗配置返回對應的推薦列表。
而服務端試驗(右圖),則是將客戶端請求試驗平臺變成了服務端請求試驗平臺獲取用戶試驗配置,再返回對應的推薦列表。
2種試驗方式各有利弊,客戶端試驗不需要再經過服務端獲取用戶配置就能直接請求AB試驗平臺,邏輯上相對簡單些,但是缺點是客戶端依賴版本更新,版本迭代較慢,試驗全量起來比較慢,不好控制。
服務端試驗的缺點則是需要在邏輯上多加一層去請求AB試驗平臺獲取用戶配置,但發版較快且不受客戶端版本更新限制,試驗全量比較好控制。
2. 業務指標建設
通常,我們做AB試驗的時候,都會根據當下試驗新增幾個試驗指標,當然,所有的試驗都會帶上大盤指標。根據公司業務和規劃的差異,各公司的大盤指標都會存在差異,電商類產品多關注點擊率、成交率、留存以及GMV等指標。
視頻類產品多關注滲透率(完播率)、轉化率等,資訊類產品多關注點擊率、轉化率、留存等。一般都會關注的大盤指標就是留存,留存又分進組留存和活躍留存。
業務指標建設的時候,主要會根據這個試驗的初衷來設置,比如,我這個試驗的目的是想提升點擊率,那么,點擊率的指標就是我此次試驗的核心指標;如果試驗是為了提升轉化率,那么從開始到結束的每一步轉化率指標,就是我們試驗的核心指標。
當然,并非所有的試驗都需要大盤數據增長才是好試驗,而一些代碼重構,或換系統等試驗,多數需要保證大盤指標數據無下降即可。
3. 用戶進組設置
試驗平臺是怎么將用戶分配到某個試驗組中的?簡單來說就是桶位算法。
可以理解為將用戶流量分為了100個桶位(現實中會分成1000個桶位或更多),假設我們要開一個10%流量的試驗,需要對用戶onlyid進行哈希取余,如果余數落在前10個桶位,用戶就命中這10%的流量,否則就不命中實驗,用戶也就不會進這個實驗組。
4. 試驗層流量控制
AB試驗可以單層,也可以多層,通常根據產品的用戶量來決定是否采取多層試驗,用戶量較大,業務較多時,需要做的試驗也越多,就需要通過多層試驗模式去進行AB,實現流量最大化利用。
(1)單層試驗
單層試驗上,流量100%,每個試驗的流量是互斥的,舉例,試驗1的用戶,命中試驗1,就不會再進同一個試驗層上的試驗2或試驗3,在單層試驗上,用戶只能進一個試驗的一個組,即便是對照組流量,也是如此。
每個試驗的流量至少會分成2組,也有多組試驗,有試驗組和對照組,每個試驗中的各試驗組的流量分配可以均勻分配,也可以自定義分配。
(2)多試驗層——分層流量
多層試驗,可以理解是多個單層試驗的組合,每個試驗層就是上面說的單層試驗,而試驗層與試驗層之間的流量是正交的,也就是說,在召回層的試驗1和試驗2的2個用戶,在召回層是互斥的,但在粗排層,很有可能在一個試驗中,而在其他層,可能又會中其他的試驗,業務越復雜,試驗層越多。
當兩個試驗處于不同層時,需要保證試驗內容互不相關,也就是相同的試驗配置需要開在一個單層試驗層上互斥,否則將會干擾試驗數據。通常,用戶量大一些的公司,都會采取多試驗層,這樣試驗流量也多,且各試驗之間互不干擾。
四、AB test數據控制
1. AB試驗的原理是什么?如何判斷數據置信?置信區間怎么計算?
AB試驗的原理就是統計對照組用戶和試驗組用戶的樣本數據(主要是樣本平均數和樣本方差),通過正太分布公式,計算試驗組總體樣本數據比對照組總體樣本數據提升或下降的概率。
怎么判斷一個試驗的結果是否置信?這里需要講到2個概念:P值(p_value)和置信區間(可以看一些專業的相關文章)。
什么是P值?P值也叫顯著性水平,可以理解P值是一個概率,是一個統計學上的衡量指標,有很多算法都可以統計出P值,通常用的比較多的是雙側雙樣本T檢驗,Z分數算出來P值(這里不做過多介紹)。
知道本質是通過進組用戶樣本算出檢驗統計量,再通過統計量算出P值就可以了。是指在原假設為真的條件下,樣本數據拒絕原假設這樣一個事件發生的概率。
置信區間(Confidence interval)就是用來對一個概率樣本的總體參數的進行區間估計的樣本均值范圍。置信區間展現了這個均值范圍包含總體參數的概率,這個概率稱為置信水平。
(1)顯著正向舉例
置信區間為: [0.356269%, 3.063578%],p-value: 0.013292
試驗版本樣本均值對比對照版本的變化率為1.709294%。在95%置信度下,置信區間為[0.356269%, 3.063578%],統計顯著正向說明當前的樣本容量條件下已經檢測出試驗版本優于對照版本。
(2)顯著負向舉例
置信區間為: [–0.161000%, –0.043200%],p-value: 0.000682
試驗版本樣本均值對比對照版本的變化率為-13.064318%。在95%置信度下,置信區間為[-0.161000%, -0.043200%],統計顯著負向說明當前的樣本容量條件下已經檢測出試驗版本劣于對照版本
(3)不顯著舉例
置信區間為: [-0.999858%, 0.989777%],p-value: 0.992076
試驗版本樣本均值對比對照版本的變化率為-0.005041%。在95%置信度下,置信區間為[-0.999858%, 0.989777%],置信區間一負一正,試驗結果是非統計顯著的
這里可以簡單的理解為試驗組與對照組之間樣本的總體均值之差是一個范圍,如果這個范圍同正,那么試驗就為顯著正向,如果同負,那么試驗就是顯著負向,如果范圍一正一負,就說明試驗數據不置信。
2. 單天數據和多天數據怎么計算?多天數據用戶去重?
大多數試驗都需要開多天,我們觀察試驗數據的時候,既需要觀察好幾天的數據,也需要對比每一天的數據,每一天的數據計算就是根據指標計算方式來計算即可,但指標的多天數據展示并不丹丹是簡單的多天相加這樣。
例如求用戶人均時長指標的多天數據,就會將多天的用戶去重進行人均時長計算,或者其他指標用用戶去重求均值的方式計算多天指標,這一步主要看業務指標的定義以及需要對比的數據是什么性質。
基本上就是天級加和求平均和用戶去重計算均值這2種方式。
3. 存在數據波動
我們開試驗的時候,有時候會遇到一些數據波動的情況,比如大盤數據今天是顯著下降的,但是第二天數據有做平了,第三天又微降了,這種時候通常是因為試驗流量太小,用戶量太少導致的數據波動,解決的辦法主要是擴大試驗流量以及長期觀察(一周左右),試驗中每個試驗組保證單天進組用戶人數在10萬+是比較置信的流量,數據量過少不能輸出置信的結果。
五、根據實際業務試驗改編舉例
之前得一篇文章介紹過負反饋功能,那這里我們就以負反饋功能的增加作為AB試驗實例進行擴展,這里就是新增功能AB,因為涉及到公司業務,因此以下試驗內容做了細節調整;
1. 功能開發、埋點注冊
這一步在前面的文章中講過,主要就是功能的設計和相關埋點的設計和注冊,后期需要分析的數據都需要在這一步準備好,因此這一步至關重要;
2. 試驗設計
(1)試驗內容
- 對照組:base(基線,沒有負反饋功能)
- 試驗組1:負反饋1(有負反饋功能)
- 試驗組2:負反饋2(有負反饋功能,且新老用戶都會觸發1次引導)
- 試驗組3:負反饋3(有負反饋功能,且只有老用會戶觸發1次引導)
(2)版本限制
appversioncode>=XXX(這里主要是針對客戶端版本更新做限制)
(3)試驗層
可以在多層試驗中單獨新建一個試驗層進行試驗;
(4)試驗流量
XX%(這里需要提前計算我們需要的試驗用戶量當下一共有多少量,假設我們一共需要10萬用戶,而我們需要的版本用戶目前一共有100萬用戶,那么我們的試驗就需要開10%的流量)
3. 試驗指標設置
這個試驗對比大盤數據的影響我們在開始試驗之前就能大概預測到不會有太大影響,因為同比功能覆蓋率都不高。
但是還是需要確保該功能不會給大盤數據帶來負向影響,主要還有對首頁推薦的點擊、轉化指標是否有影響,基本上都是講和功能可能會造成的影響對應的數據指標設置成試驗指標就可以。
4. 取數分析
試驗進行到一個置信的階段(數據顯著增長或下降或者用戶量夠多時間夠長的情況下),我們就可以下試驗結論。
而下結論之前我們需要去取數分析,這里是一個功能試驗,那么就需要計算一下這個功能的覆蓋率(使用功能的用戶占數/這個功能的日活用戶數),功能的數據轉化(觸發功能的用戶有多少使用了這個功能),以及使用這些功能的用戶的用戶分群數據。
例如,1萬個用戶觸發了這個功能,有9000個用戶使用了這個功能,而9000個用戶中男女比例為1:3,等等,這些細化數據都需要我們后期的分析,因為試驗數據沒有變化,不代表功能沒有意義。
可能是這個功能在某一類用戶群上有正向效果,在另一類用戶群上有負向效果,然后正負效果相抵消了。這些細化分析都需要在做的時候考慮到。
5. 結論、優化方向
當我們細化試驗數據以后,就可以對試驗下一個結論,試驗是正向還是負向,在某些用戶上是正向,在某些用戶上是負向。
這里對用戶的分群可以是根據用戶app版本、用戶年齡段、性別、新老用戶、用戶渠道等等各種維度。得出結論后,如果不能上線或數據不是正向,我們就可以知道下一步的優化方向是什么,朝著優化方向繼續進行AB試驗或其他的操作,直到我們不再優化或迭代,這一個功能試驗才算結束。
以上就是本次AB試驗的大致邏輯和一些重要節點和概念的介紹。
加油,打工人!
本文由 @王珂 原創發布于人人都是產品經理,未經作者許可,禁止轉載。
題圖來自Unsplash,基于CC0協議。
如何才能加到作者微信呢?可以告知下嗎?
果斷收藏
給大佬跪了
寫的好專業~真的秀
內容蠻詳細的,頂一下