聊聊A/B實(shí)驗(yàn)?zāi)切┦聝?/h2>
2 評論 7258 瀏覽 21 收藏 13 分鐘

編輯導(dǎo)語:作為一個(gè)大部分業(yè)務(wù)都依賴的重要引擎,在實(shí)際使用過程中卻發(fā)現(xiàn)會(huì)遇到各種各樣的問題。這篇文章詳細(xì)介紹了數(shù)據(jù)驅(qū)動(dòng)的核心引擎——A/B實(shí)驗(yàn),分別從過程、節(jié)奏以及結(jié)果進(jìn)行闡述,推薦想要了解A/B實(shí)驗(yàn)的童鞋閱讀。

A/B實(shí)驗(yàn)是數(shù)據(jù)驅(qū)動(dòng)的核心引擎,目前大部分業(yè)務(wù)都依賴它進(jìn)行決策,但在實(shí)際運(yùn)行過程中會(huì)遇到各種各樣問題。

下面讓我一起聊聊A/B實(shí)驗(yàn)?zāi)切┦聝骸?/p>

一、AB實(shí)驗(yàn)設(shè)計(jì)過程

首先聊聊實(shí)驗(yàn)設(shè)計(jì)過程,實(shí)驗(yàn)設(shè)計(jì)過程包含4個(gè)核心問題:

問題1:隨機(jī)分桶單元是什么?

大部分隨機(jī)分桶是按用戶維度,用戶維度有登錄id、設(shè)備id、匿名用戶id(cookie),除cookie在時(shí)間縱向上不穩(wěn)定,登錄id和設(shè)備id均是長期穩(wěn)定的。

分桶方法:目前有很多A/B實(shí)驗(yàn)平臺(tái)都可以支持分桶,主要通過設(shè)備id和層級(jí)id使用Hash函數(shù)進(jìn)行分桶,同樣也存在按尾號(hào)分桶情況,若是尾號(hào)分桶需要考慮各個(gè)尾號(hào)樣本數(shù)據(jù)是否均衡,例如是否會(huì)存在某個(gè)尾號(hào)經(jīng)常做實(shí)驗(yàn),造成樣本不均衡。

問題2:我們的目標(biāo)群體是什么?

思考實(shí)驗(yàn)的目標(biāo)群體是什么,實(shí)驗(yàn)的背景和目標(biāo)是什么,是實(shí)驗(yàn)設(shè)計(jì)的核心問題,若實(shí)驗(yàn)是一個(gè)以特定群體為目標(biāo)意味著你只想對具有某一特征下的特定用戶運(yùn)行實(shí)驗(yàn),那么觸發(fā)條件變得尤為重要,因?qū)嶒?yàn)觸發(fā)條件不同可能會(huì)導(dǎo)致幸存者偏差等各類問題,從而導(dǎo)致實(shí)驗(yàn)結(jié)果不可信。

問題3:實(shí)驗(yàn)需要多大的樣本量?

實(shí)驗(yàn)需要多大樣本量,涉及到實(shí)驗(yàn)功效是否充足情況,對結(jié)果的精確度有直接影響。樣本量越大,樣本的功效越好,實(shí)驗(yàn)結(jié)果越可信,但同時(shí)耗費(fèi)的資源也越多,如果樣本量太小,實(shí)驗(yàn)功效不足,結(jié)果不可信,那么如何計(jì)算最小樣本量,可以參考下面公式:

問題4:實(shí)驗(yàn)需要運(yùn)行多久?

對于線上實(shí)驗(yàn),用戶隨之時(shí)間進(jìn)入實(shí)驗(yàn),時(shí)間越長,用戶數(shù)越多,統(tǒng)計(jì)功效通常也會(huì)隨之提高,考慮到用戶會(huì)反復(fù)訪問,用戶隨時(shí)間的累計(jì)可能是次線性的,即第1天來N人,第2天累計(jì)進(jìn)入實(shí)驗(yàn)用戶<2N,所以實(shí)驗(yàn)運(yùn)行僅運(yùn)行1天,則更側(cè)重在高頻活躍用戶。

同樣因周末與工作日用戶群體不同,也會(huì)有周末效應(yīng),季節(jié)性也同理。

有些實(shí)驗(yàn)在初始階段有較大或較小的新奇效應(yīng),也會(huì)影響數(shù)據(jù)指標(biāo),因此建議實(shí)驗(yàn)至少運(yùn)行一周。

二、A/B實(shí)驗(yàn)放量節(jié)奏

通過逐步放量的流程來控制新功能發(fā)布帶來的未知風(fēng)險(xiǎn)是很普遍的,我們需要衡量速度、質(zhì)量和風(fēng)險(xiǎn)。

第一階段目標(biāo)降低風(fēng)險(xiǎn):可以建立測試人群,測試實(shí)驗(yàn)運(yùn)行風(fēng)險(xiǎn),觀察實(shí)時(shí)或近實(shí)時(shí)結(jié)果,盡早了解實(shí)驗(yàn)是否有風(fēng)險(xiǎn),如遇問題可快速回滾。

第二階段目標(biāo)保證實(shí)驗(yàn)質(zhì)量,我們建議最后保持一周,如有初始或新奇效應(yīng),則需要更長時(shí)間,若僅運(yùn)行一天的實(shí)驗(yàn),其結(jié)果將傾向于重度用戶,根據(jù)經(jīng)驗(yàn),如果沒有發(fā)現(xiàn)初始或新奇效應(yīng),則一周之后每多運(yùn)行一天帶來的額外收益都會(huì)越來越小。

第三階段目標(biāo)通過實(shí)驗(yàn)進(jìn)行決策,通過分析實(shí)驗(yàn)核心指標(biāo),確定實(shí)驗(yàn)是全量或者放棄。

若實(shí)驗(yàn)期間提前達(dá)到統(tǒng)計(jì)顯著,根據(jù)經(jīng)驗(yàn),是不建議提前全量,通常使用的統(tǒng)計(jì)學(xué)假設(shè)是在實(shí)驗(yàn)結(jié)束時(shí)進(jìn)行統(tǒng)計(jì)測試,而提前提前結(jié)束實(shí)驗(yàn)違反了假設(shè),會(huì)導(dǎo)致一些虛假的成功。

三、A/B實(shí)驗(yàn)結(jié)果分析

陷阱1:樣本量不均衡

實(shí)驗(yàn)分析第一步檢驗(yàn)實(shí)驗(yàn)組與對照組樣本是否均衡,實(shí)驗(yàn)組UV/對照組UV=1代表均衡,如果實(shí)驗(yàn)組和對照組樣本量不均衡,那可能在實(shí)驗(yàn)階段發(fā)生漏洞導(dǎo)致的,那么我們不應(yīng)該相信任何其他指標(biāo)。產(chǎn)生樣本量不均衡有多種原因,主要是以下原因:

  • 瀏覽器跳轉(zhuǎn),一種常見的ab實(shí)驗(yàn)機(jī)制是實(shí)驗(yàn)組跳轉(zhuǎn)到另一個(gè)頁面,這通常會(huì)導(dǎo)致樣本比率不均衡,主要原因:a、性能差異:實(shí)驗(yàn)組用戶需要接受額外的跳轉(zhuǎn),跳轉(zhuǎn)過程性能可能快可能慢。b、跳轉(zhuǎn)不對稱:實(shí)驗(yàn)組跳轉(zhuǎn)新頁面后,可以進(jìn)行收藏、轉(zhuǎn)發(fā)、返回等各種動(dòng)作,而對照組均沒有;所以對照組和實(shí)驗(yàn)組都需要有跳轉(zhuǎn)頁面,讓實(shí)驗(yàn)組和對照組有相同待遇。
  • 殘留或滯留效應(yīng),新的實(shí)驗(yàn)通常會(huì)涉及新的代碼,所以錯(cuò)誤率會(huì)比較高,新實(shí)驗(yàn)會(huì)引發(fā)一些意想不到的問題導(dǎo)致實(shí)驗(yàn)中止并快速修復(fù)上線,重新隨機(jī)化會(huì)打破用戶的連貫性,會(huì)讓用戶從一個(gè)用戶組轉(zhuǎn)到另一個(gè)用戶組,從而影響樣本均衡。
  • 用戶隨機(jī)分桶過程有漏洞,有可能在放量過程中出現(xiàn)bug導(dǎo)致實(shí)驗(yàn)組和對照組樣本不均衡
  • 糟糕的觸發(fā)條件,觸發(fā)條件應(yīng)該包含任何可能被影響的用戶,觸發(fā)條件基于可能被實(shí)驗(yàn)影響的屬性也會(huì)讓實(shí)驗(yàn)樣本不均衡

那如何識(shí)別樣本不均衡呢?

  • 驗(yàn)證分桶時(shí)機(jī)點(diǎn)或觸發(fā)時(shí)機(jī)點(diǎn)的上游有沒有差異;
  • 驗(yàn)證實(shí)驗(yàn)樣本的分桶設(shè)置是否正確;
  • 順著數(shù)據(jù)漏斗路徑排查是否有任何環(huán)節(jié)導(dǎo)致樣本不均衡;
  • 查看用戶細(xì)分群體樣本比例
  • 查看與其他實(shí)驗(yàn)的交集

陷阱2:分析單元不一樣

在分析頁面跳轉(zhuǎn)時(shí),有個(gè)核心指標(biāo)CTR,CTR有兩種常見計(jì)算方法,二者的分析單元是不一樣的。

第一種CTR1=總點(diǎn)擊數(shù)/總曝光數(shù)。

第二種CTR2,先計(jì)算每個(gè)用戶的CTR然后平均所有用戶的CTR。

如果隨機(jī)分桶單元是用戶層面,那么第一種方法使用了一個(gè)與分桶單元不同的分析樣本,違背獨(dú)立性假設(shè),并且讓方差計(jì)算變得復(fù)雜。

例如下面例子,有1W用戶,假設(shè)每1K人有相同曝光和點(diǎn)擊, CTR1=7.4%,CTR2=30.4%,顯然CTR1受到了離群點(diǎn)影響。

這兩種定義沒有對錯(cuò)之分,都是CTR的有用定義。但使用不同的定義會(huì)得到不同的結(jié)果。一般兩個(gè)指標(biāo)都會(huì)做成看板。

陷阱3:稀釋效應(yīng)陷阱

計(jì)算對觸發(fā)人群的實(shí)驗(yàn)效應(yīng)時(shí),需要將效應(yīng)稀釋到整個(gè)用戶群,如果在10%的用戶上增加3%的收入,那么整體收入是否將提升10%*3%=0.3%?一般并沒有,總體效應(yīng)可能是0–>3%之間任意值!

如果改動(dòng)針對站用戶總體10%的低花費(fèi)人群(花費(fèi)為普通用戶的10%),且該改動(dòng)將這部分用戶的營收提高3%,那么對整體營收將提高=3%*10%*10%=0.03%。

陷阱4:樣本間信息干擾

我們假設(shè)實(shí)驗(yàn)中每一個(gè)實(shí)驗(yàn)個(gè)體是獨(dú)立的,不會(huì)相互影響,但用戶個(gè)體會(huì)因?yàn)樯缃痪W(wǎng)絡(luò),對同一內(nèi)容的互動(dòng)信息等導(dǎo)致相互影響。

例如對社交類app有個(gè)策略“你可能認(rèn)識(shí)的人”這個(gè)功能,實(shí)驗(yàn)組更好的推薦策略,會(huì)促使用戶發(fā)送更多的邀請。然而接收到這些邀請的用戶可能在對照組,如果評估指標(biāo)是總邀請量,那么實(shí)驗(yàn)組和對照組的邀請都會(huì)增加,因此測量出來的實(shí)驗(yàn)組和對照組的差異會(huì)偏小。同樣一個(gè)人可能認(rèn)識(shí)的人是有限的,因此新算法在一開始可能會(huì)表現(xiàn)更好,但由于供推薦的供應(yīng)量限制,長期來看可能會(huì)達(dá)到較低的均衡。

那要如何應(yīng)對上述問題呢,首先不是所有用戶行為都會(huì)出現(xiàn)網(wǎng)絡(luò)效應(yīng),我們可以界定特殊行為會(huì)造成影響,只有這些行為被影響時(shí),我們觀察特殊行為是否影響下游的指標(biāo),同時(shí)重點(diǎn)分析該行為帶來的生態(tài)價(jià)值,根據(jù)行為對生態(tài)系統(tǒng)的價(jià)值和貢獻(xiàn)來考量最終決策。

陷阱5:混雜因素誤導(dǎo)

混雜因素是指與研究因素(暴露因素)和研究結(jié)果(結(jié)局因素)均有關(guān)、若在比較的人群組中分布不勻,可以歪曲(掩蓋或夸大)暴露因素與結(jié)局因素的真正聯(lián)系的因素。

例如:很多產(chǎn)品有一個(gè)現(xiàn)象:看到更多錯(cuò)誤的用戶通常更少流失!

所以,可以嘗試顯示更多的錯(cuò)誤以啟迪可以減少用戶流失嗎?當(dāng)然是不可以,這種相關(guān)性是由一個(gè)共同愿意造成的:使用度。重度用戶會(huì)看到更多錯(cuò)誤,同時(shí)流失率更低。

如果發(fā)現(xiàn)某個(gè)新功能可以減少用戶流失,需要分析是新功能在起作用,還是因?yàn)楦呋钴S用戶流失率低,同時(shí)更可能使用更多功能?

這種實(shí)驗(yàn)就要拆分活躍度進(jìn)行實(shí)驗(yàn)。AB實(shí)驗(yàn)是需要控制變量的,但控制的東西過多了,實(shí)驗(yàn)變得束手束腳,具體控制哪些變量是非常值得思考的,有時(shí)候最終控制你真正想要測量的東西,那樣功虧一簣。

有些時(shí)候?qū)嶒?yàn)結(jié)果給不了清晰的答案,但仍然要做出決策。對于這種情況,我們需要明確需要考慮的因素,尤其是這些因素如何影響實(shí)驗(yàn)顯著和統(tǒng)計(jì)顯著的邊界設(shè)定。這些考慮會(huì)為為了決策提供基礎(chǔ),而非局限于當(dāng)前的單一決策。

 

本文由@李誓杰 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來自 Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App

評論
評論請登錄
  1. 寫的很棒,很詳細(xì),也很專業(yè),但是可能專業(yè)性太強(qiáng)了,作為行外人可能看不太懂

    來自河南 回復(fù)
    1. 謝謝,主要是針對分析師,如有不懂可以深入交流

      來自北京 回復(fù)