目錄
- 一、什么是A/B測試
- 1.1 A/A測試
- 1.2 多變量測試
- 二、A/B測試應用場景
- 三、A/B測試基本流程
- 四、A/B測試面試真題
- 4.1 【是什么】
- 4.2 【為什么】
- 4.3 【怎么做】
- 五、應用實戰
一、什么是A/B測試
??A/B 測試是一種常見的實驗方法,用于比較兩個或多個方案的效果,以確定哪種方案更優。通常,將用戶隨機分配到 A 組(對照組) 和 B 組(實驗組),A 組使用當前版本(Baseline),B 組使用新版本(Variant),然后通過數據分析評估哪種方案在關鍵指標(如點擊率、轉化率、停留時間等)上表現更好。 A/B 測試廣泛應用于 產品優化、網站設計、廣告投放、功能迭代等領域,可以減少主觀決策,提高用戶體驗和業務收益。
1.1 A/A測試
??就是像AB測試一樣流量會被隨機分配到兩個或者多個版本內,但又區別于AB測試,叫AA,就說明實驗組的策略(變量)其實未生效,說白了就是實驗組和對照組配置全都一樣,可以理解為就是相同版本的“特殊AB實驗”,有時也被叫做“空測試”。主要目的是為了確保AB測試結果的可靠性。假設實驗和對照組的用戶在AA測試階段已出現顯著差異,那么AB上線后的顯著差異結論就是不可靠的。
1.2 多變量測試
??多變量測試指的是通過比較頁面上各元素中的選項組合,來確定哪個組合對特定受眾的效果最佳,以及哪個元素對活動成功的影響最大。與 A/B測試相比,多變量測試提供的一個優勢在于,它能夠顯示頁面上哪些元素會對轉化產生最大的影響,這被稱為“主效應”。此外多變量測試還可以發現頁面上兩個或多個元素之間的復合效果(比如特定文案與特定橫幅或主題圖像結合使用時,特定廣告可能會產生更多轉化)這被稱為“交互效應”。
??多變量測試的終極版就是全因子多變量測試(以相等的概率測試所有可能的內容組合)由于可能生成大量的組合,因此多變量測試需要的時間和流量多于A/B測試。頁面必須獲得足夠的流量才能為每個體驗產生具有統計意義的結果。
二、A/B測試應用場景
??一般來說,A/B測試可以應用以下三種場景:
- 產品迭代:界面優化、功能增加、流程增加等
- 算法優化:通過流量切分構造實驗組和對照組來驗證算法篩選、算法優化等
- 市場營銷相關運營策略:內容的篩選、時間的篩選、人群的篩選、運營玩法的篩選等
A/B測試可以不適用的場景:
- 變量不可控:用戶使用了A產品后再去使用B產品的概率,為什么關閉app,有非常多的不可控因素
- 樣本量較小:從統計學角度,驗證一個數據是否有效,需要一定的樣本支撐。
- 全量投放:緊急修復、重大更新或用戶期望一致等場景
三、A/B測試基本流程
??
(1)明確實驗改動點
??通常關于產品選代的AB測試需求一般是由產品經理或者項目經理提出,數據分析師在這個過程中更多的是一個參與者,那么在實驗開始之前,我們首先需要跟需求提出者明確實驗的變量是什么?我們要保證AB測試的“單一因素原則”,即每一個實驗的評估因素都是單一因素,一次實驗不能糅合多個影響因素,否則分析師在后續分析實驗結果的時候難以區分是哪個因素的影響,可能會得出錯誤的結論。
(2)明確觀測指標
??一般來說,在實際工作中AB測試的觀測指標通常只有一個(最多不超過3個),指標的類型分為兩種:
- 絕對值類指標:DAU、平均停留時長等指標,通常會一段時間內的均值或者匯總值(較少)
- 比率類指標:主要通過多個指標計算得到,如:頁面點擊率、轉化率、復購率等等(較多)
(3)AB測試樣本量的計算
??A/B 測試樣本量的選取基于大數定律和中心極限定理。
AB測試樣本量計算工具(絕對值)
AB測試樣本量計算工具(比率)
(4)AB測試流量分割
??為什么要進行合理的流量分割? 合理的流量分割能保證實驗組和對照組的用戶特征分布相似,避免因用戶差異導致結果偏差。
??流量分割常用的方法:分流、分層和分流分層模型。
分流:用戶分流是指按照地域、性別、年齡等把用戶均勻地分為幾個組,1個用戶只能出現在1個組中。
分層:同一份流量可以分布在多個實驗層,也就是說同一批用戶可以出現在不同的實驗層。
分流分層模型:分流:組1、組2通過分流的方式分為2組流量,此時組1和組2是互斥的,即組1+組2=100%試驗流量。分層:流量流過組2中的B1層、B2層、B3層時,B1層、B2層、B3層的流量都是與組2的流量相等,相當于對組2的流量進行了復用,即B1層=B2層=B3層=組2
擴展:流量流過組2中的B1層時,又把B1層分為了B1-1,B1-2,B1-3,此時B1-1,B1-2,B1-3之間又是互斥的,即B1-1層+B1-2層+B1-3層=B1層。再流經B2層時,B1層各部分會被隨機打散,重新均勻分配,再形成一個新的流量分布,進入B2層的各個子層或實驗組。
(5)實驗周期的計算
??AB測試中,對照組和實驗組的樣本量越大,實驗時間越長,實驗結果就更加準確。這可以說是常識性的判斷,但是實際上這是由統計顯著性決定的(統計顯著性是指對照組和實驗組的數據差異,有多大可能是真實存在的,而不是隨機誤差導致的。)所以周期更久、樣本量更多的AB測試更有說服力。但是實際工作中,產品或活動的迭代速度快,這就要求AB測試的實驗周期不能過長,所以在AB測試前對樣本規模和實驗周期的預估是非常重要的。
??AB測試的實驗周期應該如何確定呢?
首先這里也是確定一個最小實驗周期,也就是說,實驗時間必須超過最小實驗周期,AB測試才算是有效。
實驗周期計算公式:實驗所需最少時間=每組最小樣本數*組數量/某個時間段的訪問流量(可以是每天,流量大的話可以按每小時)
要根據實驗目的和歷史經驗,綜合考慮用戶行為周期、適應期等其他影響因素對實驗流量的干擾,在成本可控的情況下適當延長實驗時長(能覆蓋最小實驗周期)
(6)AB測試上線
??一般在上線正式實驗之前,會通過小流量去看一段時間的灰度實驗。這個灰度實驗的目的就是為了驗證我們這個改動并不會造成什么特別極端的影響。在灰度之后就會正式發版,等到實驗周期結束,我們對實驗的結果進行顯著性檢驗。
(7)效果評估驗證
??A/B測試開啟之后,我們該怎么評估這個AB測試的實驗效果,給出這個需求到底要不要上線的分析結論呢?
商業上的驗證:通過前面確認的核心指標以及相關指標在對照組和實驗組之間的對比,來綜合判定AB測試效果。
統計上的驗證:通過統計學上的假設檢驗來驗證AB測試是夠具有統計學意義上的顯著有效。
A/B測試的基本原理:
A/B測試的統計理論基礎是假設檢驗。假設檢驗是統計推斷中的重要方法,其基本思路是“先假設、再檢驗”:即事先對總體參數或總體分布形式作出一個假設,然后利用樣本信息來判斷假設是否合理的過程。換句話說,假設檢驗會判斷樣本信息與原假設是否有顯著差異,從而決定應接受還是否定原假設。
四、A/B測試面試真題
4.1 【是什么】
(1)什么是A/B測試?
??在回答定義類問題時,既要描述AB測試的統計學定義【常規答案】,還要結合實際業務場景進行復述【加分項】
??AB測試是一種基于統計學的實驗方法,通過設置對照組和實驗組,對變量進行試驗,通過假設檢驗對不同組的結果進行檢驗,以檢驗變量是否對結果造成顯著影響,從而選取最合理的方法。
??在實際業務場景中就是為同一目標制定不同的頁面版本,并且把用戶流量對應分成幾組,然后在同一時間維度讓不同組的用戶隨機訪問這些版本,收集各群組的用戶體驗數據和業務數據,最后分析、評估出最好版本,正式采用。這個就是AB測試。
(2)A/B測試的核心原理是什么?
??回答出“假設檢驗”是常規答案。
??AB測試的核心原理是通過隨機合理分流,設置對照組和實驗組,通過控制變量法,在保證兩組用戶除待驗證變量不同外,其他變量分布均一致。分別對兩組施加不同的變量,觀察兩組用戶在一段時間內的表現,通過假設檢驗分析結果是否有顯著差異,從而判斷改動是否有效可執行。
??本質上來說,AB測試就是一個基于統計的假設檢驗過程,首先對實驗組和對照組的關系提出假設,然后計算兩組數據的差異并確定該差異是否存在統計上的顯著性,最后對假設做出判斷。在整個測試背后,還隱藏著其他的理論:第一個是中心極限定理,也就是樣本量足夠大時(>30),變量均值的抽樣分布都近似于正態分布;第二個是**“小概率事件"原理,也就是小概率事件在一次實驗中基本上不會發生;第三個是反證法**,假設檢驗的機制是保護原假設,所以把要拒絕的假設放在原假設的位置,如果原假設成立的條件下,小概率事件還是發生了,那么就應該推翻原假設;第四個是P值,P值越小,拒絕原假設的理由就越充分。
(3)AB測試有哪些應用場景?
??AB測試適用的場景主要有三類,一類是產品選代,比如UI界面優化,產品功能增加或者改版,流程增加或者刪除等;第二類是算法優化,比如搜索、推薦、精準廣告等算法的優化;第三類是營銷/運營策略優化,比如內容的篩選、時間的篩選、人群的篩選、運營玩法的篩選等都可以適用AB測試。
??AB測試不適用的場景主要是原始創新方案且全量投放的那種場景(比如:公司更新logo)、用戶體量不大的業務(主要是樣本量不夠,難以支撐AB測試所需樣本量)等。
(4)有沒有接觸過ABtest,請說說對AB測試的理解?
??如果有相關工作經驗,詳細描述實際工作中AB測試的相關流程(每個公司的流程可能會有一些差異),重點講解在整個流程中,你是如何配合工作的,以及你在相關工作中遇到了哪些難題,你是如何解決這些難題的;如果沒有相關工作經驗,則可以繼續下面的問題,從AB測試的適用場景、定義、核心原理方面回答你對AB測試的理解。
??示例:我在實際工作中沒有接觸過AB測試(解釋一下公司有沒有AB測試的相關業務,以及我的工作職責中有沒有涉及AB測試的內容)。雖然我沒有實際應用過AB測試,但是在工作之余,我了解了一些關于AB測試的相關知識。我理解的AB測試是一種XXX的方法【定義】,它的理論基礎主要有xxx【核心原理】,在xxx場景中AB測試能夠發揮很大的作用。接著分析一下你前公司沒有做AB測試的原因(主要是前公司的業務主要是xxX方面的,很多業務無法使用AB測試來進行決策;或者AB測試平臺的搭建一直是公司的目標,但是因為某些具體的原因沒有搭建起來,接著展開聊聊你認為AB測試平臺搭建中可能會遇到哪些困難)【加分項】
(5)你怎么理解AB測試中的第一、二類錯誤?你覺得哪個更嚴重?
??第一類錯誤和第二類錯誤,是統計學中的兩個概念,也是AB測試中最常提到的兩個概念。第一類錯誤叫做棄真錯誤,也就是原假設是真的,但是我們否定了原假設接受了備擇假設。在實際業務場景中,原假設一般是功能改動前后沒有差異,第一類錯誤代表的是一個功能的改動,本來不能給我們帶來任何收益(原假設一般指無差異),但是我們卻誤認為這個改動能帶來收益。第二類錯誤叫做存偽錯誤,也就是原假設為假,但是我們接受了原假設。在實際業務場景中,第二類錯誤本來是一個好產品,它本來可以給業務帶來更多的收益,但是由于我們統計的誤差,導致好產品被拒絕。
??在實際工作中,我認為第一類錯誤是我們更加不能接受的。因為,在商業世界里,一個壞產品的上線帶來的損失可能是巨大的,所以我們寧愿放棄幾個好的創意好的產品,也絕不能讓壞的產品上線。如果一個壞產品上線了,不僅可能會極大程度的影響當時的用戶體驗,還有可能對以后的日活、留存等指標造成更大的影響。本身在實際工作中,把留存或者日活提升一個百分點都已經是非常耗時耗力的事情了,一個壞產品的上線可能一瞬間就能讓留存下降好幾個百分點。所以第一類錯誤在實際工作中更加不能被接受。
4.2 【為什么】
(1)為什么要做AB測試?有什么科學依據?
??回答要點:AB測試的目的/好處+理論基礎
??首先我認為功能設計者是有個人思維的局限性,并且全量用戶是具有不可調研性的,這就會導致一個問題–一個功能的預期效果可能與實際上線后的效果存在定的差異。這個差異到底有多大,我們能不能接受,最后要不要上線這個功能,這些都是需要進行決斷的。
??AB測試是一個基于統計的假設檢驗過程,首先對實驗組和對照組的關系提出假設,然后計算兩組數據的差異并確定該差異是否存在統計上的顯著性,最后依據數據結果對假設做出判斷。這個過程可以很大程度上避免我們拍腦袋決策,科學量化優化方案的效果。
(2)AB測試成本很高,每個調整都需要AB測試么?
??首先,我認為需要從源頭了解功能改動的重要性、影響程度等,如果重要性或者影響程度很大,那么是一定要做AB測試的,比如,個大型營銷活動的落地頁設計,就非常值得做AB測試,首先是這個頁面的改動有可能直接影響最后的銷售額,因為這個頁面很大程度決定了用戶是否對你的產品感興趣,并為此而付費。此外,一個大型營銷活動一定是投入了大量的人力物力財力,每一個細節都有可能決定最終的結果,所以前期一定要盡可能篩出最優的方案。
??當然,如果只是驗證一個小按鈕或者一個小改動,并且這個改動并不會對用戶體驗、活動結果、最終收益產生巨大影響的時候,就可以選擇不上AB測試了。可以選用成本更低的方式來驗證,比如在界面上按設置一個開關,用戶可以通過開關的形式自行決定采用哪一種方式,最后我們可以通過這個開關的相關指標來判斷用戶對于哪一種形式有更大的傾向性;或者可以做一些用戶調研,比如通過訪談或者說設計問卷的形式,去搜集一些用戶的反饋等等。
4.3 【怎么做】
(1)AB測試的主要流程是什么?
1、首先在開始實驗之前,我們首先需要和相關的產品或者項目經理確定這個實驗所要驗證的改動點是什么。
2、在確認改動點之后,數據分析師需要設計實驗中所需要去觀測的一些核心指標,比如點擊率、轉化率等。
3、確定完核心指標之后,下一步就是計算實驗所需的最少樣本流量,實驗樣本越大,我們的結果越可信,但是對我們用戶的不良影響就越大。所以我們需要計算能夠顯著地證明我們的策略有效的最少樣本量。
4、在計算完所需樣本量之后,就要設計流量分割策略,根據實驗需要對樣本流量進行分流分層,保證樣本的隨機和均勻分布,避免出現辛普森悖論。
5、然后還要結合目前的日均活躍的用戶量,計算實驗持續的時間周期。
6、以上準備工作就緒,就需要和產品經理、開發人員確認可以開始實驗。一般在上線正式實驗之前,會通過小流量去看一段時間的灰度實驗。這個灰度實驗的目的就是為了驗證我們這個改動并不會造成什么特別極端的影響。并且這個過程中會檢驗數據埋點是否跑通,是否能夠成功搜集到數據。
7、在灰度之后就會正式發版,等到實驗周期結束,我們對實驗的結果進行顯著性檢驗以及最終的效果評估驗證。實驗結果主要分成有效和無效兩種,無效的結果可轉化為團隊的經驗,避免再犯同樣的錯誤;有效的結果即成功通過實驗提升了產品的轉化率,可以把優勝的版本正式推送給全部客戶,實現產品用戶有效增長。
(2)選擇AB實驗的樣本的時候,應該注意什么?
??滿足最小樣本量。對于AB測試來說,樣本量太少可能導致實驗結果不可信,但是樣本量也不是越多越好,一個最直接的原因就是樣本量越大影響的用戶就越多,就有可能影響到用戶對產品的體驗。
??在AB測試時,影響樣本量選擇通常有4個因素:顯著性水平、統計功效、均值差異、標準差。
N = σ 2 δ 2 ( Z 1 ? α 2 + Z 1 ? β ) 2 N = \frac { \sigma ^ { 2 } } { \delta ^ { 2 } } \, ( Z _ { 1 - \frac { \alpha } { 2 } } + Z _ { 1 - \beta } ) ^ { 2 } N=δ2σ2?(Z1?2α??+Z1?β?)2
- 顯著性水平:顯著性水平越低,對AB測試結果的要求也就越高,越需要更大的樣本量來確保精度。
- 統計功效:統計功效意味著避免犯二類錯誤的概率,統計功效越大,需要的樣本量也越大。
- 均值差異:如果真實值和測試值的均值差別巨大,也不太需要多少樣本,就能達到統計顯著。
- 標準差:標準差越小,代表兩組差異的趨勢越穩定。越容易觀測到顯著的統計結果。
??所以選擇AB測試的實驗樣本時,需要滿足最小樣本數。【在實際業務操作時,滿足不影響用戶體驗的前提下,可以比最小樣本數多一些】。
??除了滿足最小樣本量之外,在選擇實驗組和對照組的樣本的時候,還要注意的是,選擇同一時間段內的、特征保持一致的用戶,可以通過從所有的用戶中隨機選擇來解決這個問題。
(3)AB測試的實驗周期如何選擇?需要考慮哪些因素?過長或者過短會有什么影響?
??實驗周期=最小樣本量/實驗桶天均流量,但實際操作中實驗周期選擇需要考慮三方面因素:
①考慮最小樣本量,實驗周期內累計樣本量,需要大于最小樣本量要求
②考慮周末效應,一般產品周中和周末用戶行為表現會存在差異,因此實驗至少需要運行完整一周
③考慮新奇效應,重點針對老用戶改版會對用戶產生非持久性的行為驅動,這段時期的數據是缺乏置信度的,因此需要適當拉長實驗周期。
??在考慮以上因素的前提下,制定試驗周期,時間過長會導致實驗選代的效率變低,而時間過短會導致實驗的不置信
(4)如何驗證你的改進辦法有效果?如何確定此功能上線收益?
??考察要點:AB測試上線后,從哪些維度確定新方案比舊方案更好
??對于A方案和B方案哪個方案的結果更好,通常會去關注指定的關鍵性指標,比如:點擊率、留存率、復購率、轉化率、人均時長等指標,然后運用假設檢驗對這些指標進行檢驗,看結果是否置信。如果結論置信,我們就能夠得到A方案和B方案哪個指標更好(有顯著性差異)
??此外,還可以計算ROI來比對不同的方案。計算出每組的ROI來確定改動是否有效。
(5)請分析下AB test的結果統計顯著不等于實際顯著,你怎么看?
??統計學上顯著,實際不顯著:可能的原因是我們在AB測試當中所選取的樣本量過大,導致和總體數量差異很小
舉例:對應到我們的互聯網產品實踐當中,我們做了一個改動,APP的啟動時間的優化了0.001秒,這個數字可能在統計學上對應的P值很小(統計學上是顯著的),但是在實際使用過程中,對于用戶來說,0.001秒的差異太微小了,是感知不出來的。那么這樣一個顯著的統計差別,其實對我們來說是沒有太大的實際意義的
??統計上不顯著,實際顯著:一般我們會使用的通用的方式是將這個指標去拆分成每一天去觀察。如果指標的變化曲線每一天實驗組都高于對照組,即使它在統計上來說是不顯著的,我們也認為在這樣一個觀測周期內,實驗組的關鍵指標表現是優于對照組的,那么結合這樣一個觀測,我們最終也可以得出這個優化可以上線的結論。
(6)如果你在AB測試中發現實驗組核心指標明顯優于對照組,那這個優化就一定能夠上線嗎?
??不一定,需要實際情況實際分析。舉個例子,比如說有的時候我們想要提升產品的視覺展現效果。但是這種優化可能是以用戶等待內容展現的時間作為代價來進行提升的。所以一個方面的優化可能會導致另一個方面的劣化。在做這個優化的時候,可能會對其他部門產生一些負向的影響,進而導致公司收入的下降。所以我們在進行AB測試的時候,必須要綜合評估所有方面的一些指標變動,同時對于收益和損失來做一個評估,才能確認這個優化可以最終上線。
五、應用實戰
step1:提出假設
??設計AB test實驗的第一步通常是提出假設。假設是對于某個特定變化我們所期望的結果,也是后續實驗的基礎,我們需要在后續實驗中通過數據驗證這個假設是否成立,如果驗證成立,我們可以將這個變化推廣到全部用戶。如果驗證不成立則需要繼續優化這個假設或者放棄這個修改方案,以尋找更好的變化。
??假設我們希望新頁面可以提升2%的轉化率,原則上我們應選擇單尾檢驗,準確的說,應該選擇右側單尾檢驗,因為我們的假設是新頁面的轉化率要大于舊頁面的轉化率,但是,在本案例中,我們并不能確定新頁面的性能一定比當前的頁面更好。所以,這里選擇雙尾檢驗。
step2:確定實驗分組
??在AB測試中,我們分為實驗組和對照組:
- 對照組:這一組用戶將看到舊版落地頁
- 實驗組:這一組用戶將看到新版落地頁
??為了后續計算每一組的轉化效率,需要記錄每一位參與實驗的用戶的購買行為,也就是說無論用戶看到的是新版落地頁還是舊版落地頁,都需要記錄這位用戶最終是否購買了產品。這可以通過在網站上添加相應的追蹤代碼來實現:0(代表用戶在測試期間沒有購買產品);1(代表用戶在測試期間購買l了產品),這樣,后續就可以很容易地計算出每個組的均值,從而得到新舊兩版落地頁的轉化率。
step3:計算實驗樣本量、試驗周期
- 實驗樣本量的確定
??根據大數定律和中心極限定理,樣本量越大我們的估計就會越精確,但同時也意味著成本越高,所以需要知道實驗所需的最小樣本量是多少,在成本可控范圍里,選擇合適的樣本量即可。
N = σ 2 δ 2 ( Z 1 ? α 2 + Z 1 ? β ) 2 N = \frac { \sigma ^ { 2 } } { \delta ^ { 2 } } \, ( Z _ { 1 - \frac { \alpha } { 2 } } + Z _ { 1 - \beta } ) ^ { 2 } N=δ2σ2?(Z1?2α??+Z1?β?)2
當衡量指標為比率類指標時,標準差計算公式為:
σ 2 = P A ( 1 ? P A ) + P B ( 1 ? P B ) \sigma^2 = P_A(1 - P_A) + P_B(1 - P_B) σ2=PA?(1?PA?)+PB?(1?PB?)
其中, P A P_A PA?和 P B P_B PB?分別時對照組和實驗組的觀測值。
step4:上線AB測試并收集數據
??目前市面上大家熟知的大公司基本上都在做AB測試,比如:百度、阿里、騰訊、字節跳動、京東、滴滴、攜程、美團等。大公司做AB測試的主要特點就是。一般都是自研系統。而對于規模不是那么大的企業,也有做AB測試的需求,但是這部分企業一般是使用第三方的A/B測試工具。目前市面上的第三方AB測試工具主要有:神策數據、熱云數據等。
step5:數據分析及假設檢驗
??數據集及代碼鏈接:https://pan.quark.cn/s/97d5c25bbc6d
代碼也可見網頁版資源鏈接。
step6:分析結果及建議
??由于我們計算出來的P=0.607遠高于顯著水平a= 0.05,所以我們不能拒絕原假設H0,這意味著新版落地頁與舊版落地頁沒有明顯不同。此外,我們繼續看置信區間,treatment組的置信區間為[0.117.0.136],可以看出:它包括我們的轉化率基準線13%;它不包括我們的轉化率目標值15%。也可以說明,新版落地頁的真實轉化率更有可能與我們的基線相似,而沒有辦法達到我們期望的15%。進一步證明了,新版設計并不是一個很好的改進。