俗話說(shuō)得好,AB測(cè)試搞得好,產(chǎn)品優(yōu)化沒(méi)煩惱!這不,貓哥特地復(fù)盤(pán)了工作中的實(shí)戰(zhàn)經(jīng)驗(yàn),梳理了AB-Test的全流程秘籍,?今兒分享給大家。
AB測(cè)試來(lái)源
越來(lái)越多的公司重視AB測(cè)試,按照貓哥的經(jīng)驗(yàn),之前會(huì)Excel就行,SQL是加分項(xiàng)。后來(lái)變成了必須懂SQL,AB測(cè)試是加分項(xiàng)。再到后來(lái)變成了,AB測(cè)試和SQL都是必會(huì)的東西。
因?yàn)閺?5年至今,人口紅利肉眼可見(jiàn)的減少,流量競(jìng)爭(zhēng)從增量競(jìng)爭(zhēng)變成了存量競(jìng)爭(zhēng)。截至2020年底,互聯(lián)網(wǎng)用戶已經(jīng)高達(dá)10億。微信,支付寶,頭條,抖音這些巨型APP基本已經(jīng)瓜分了用戶的大部分時(shí)間,別的APP想要存活及增長(zhǎng),精細(xì)化運(yùn)營(yíng)就變成了必須。
精細(xì)化從技術(shù)上,又無(wú)法避免AB測(cè)試。往往產(chǎn)品的認(rèn)知并不是用戶的認(rèn)知,所以我們需要去測(cè)試,去實(shí)驗(yàn)用戶的喜好。選擇一個(gè)用戶偏愛(ài)的功能上線,才會(huì)不斷提高用戶滿意度,我們的APP才能活下來(lái),并有一定程度的增長(zhǎng)。
AB測(cè)試是借鑒了實(shí)驗(yàn)的思維,目標(biāo)是為了歸因。通俗來(lái)說(shuō),就是我們想把條件分開(kāi),明確的知道,哪種條件下,用戶會(huì)買(mǎi)賬。這就需要三個(gè)條件:有對(duì)照組,隨機(jī)分配用戶,且用戶量足夠。
最早的AB測(cè)試本身是起源于醫(yī)學(xué)。當(dāng)一個(gè)藥劑被研發(fā)后,醫(yī)學(xué)工作人員需要評(píng)估藥劑的效果。一般就會(huì)選擇兩組用戶(隨機(jī)篩選的用戶),構(gòu)建實(shí)驗(yàn)組和對(duì)照組。用這兩組用戶來(lái)“試藥”。也就是實(shí)驗(yàn)組用戶給真的藥劑,對(duì)照組用戶給安慰劑,但是用戶本身不知道自己是什么組,只有醫(yī)生指導(dǎo)。之后,在后期的觀察中,通過(guò)一些統(tǒng)計(jì)方法,驗(yàn)證效果的差異性是否顯著,從而去校驗(yàn)藥劑是否達(dá)到我們的預(yù)期效果。
這個(gè)就是最早期的醫(yī)學(xué)“雙盲實(shí)驗(yàn)”?;ヂ?lián)網(wǎng)行業(yè)其實(shí)也差不多是這么用。我們需要確認(rèn)的是,當(dāng)前改版,是否有效果,也就是說(shuō),我們需要驗(yàn)證效果的“藥劑”變成了一個(gè)“改版”。
業(yè)務(wù)把將web或者app界面或者流程,拆分為多個(gè)版本。然后將流量分層(或者分流),不同的人群使用的某個(gè)功能或者觸發(fā)的策略不同。但是這里的人群一定要滿足同質(zhì)化的特性。所以無(wú)論分層還是分流,我們都需要將用戶隨機(jī)分配,且同一用戶不能處在兩個(gè)組內(nèi)。
通俗來(lái)說(shuō),AB測(cè)試是一種互聯(lián)網(wǎng)人口紅利減少的背景下,為了提高用戶滿意度,留下用戶而使用的一種利用數(shù)學(xué)原理來(lái)精細(xì)化運(yùn)營(yíng)的評(píng)估方法。
從本質(zhì)上來(lái)說(shuō),AB-Test是對(duì)某唯一變化的有效性進(jìn)行測(cè)試的實(shí)驗(yàn)
AB測(cè)試適用場(chǎng)景
當(dāng)然,AB測(cè)試也不是每種迭代或者改版都能用。一般來(lái)說(shuō),三種場(chǎng)景可以使用AB測(cè)試,三種場(chǎng)景不能使用AB測(cè)試。
產(chǎn)品迭代可以使用AB測(cè)試。比如界面優(yōu)化,功能增加,流程增加,這些都可以使用AB測(cè)試。因?yàn)槲覀兪窃谠谢A(chǔ)上做一定更新迭代,可以直接使用AB測(cè)試。
算法優(yōu)化可以使用AB測(cè)試。同理,算法篩選,算法優(yōu)化這些我們都可以使用AB測(cè)試來(lái)測(cè)試。因?yàn)槲覀円部梢酝ㄟ^(guò)流量切分構(gòu)造實(shí)驗(yàn)組和對(duì)照組來(lái)驗(yàn)證效果。
市場(chǎng)營(yíng)銷(xiāo)的部分場(chǎng)景可以使用AB測(cè)試。內(nèi)容的篩選,時(shí)間的篩選,人群的篩選,我們也可以使用AB測(cè)試來(lái)實(shí)驗(yàn)驗(yàn)證效果。
但是,當(dāng)變量不可控,或者樣本量比較小不足以支撐AB測(cè)試,或者我們的投放是全流量投放。這三種情況是不支持使用AB測(cè)試的。
變量不可控,比如我們業(yè)務(wù)有兩個(gè)APP,我們想做一個(gè)策略,驗(yàn)證是否能夠提高用戶使用了A產(chǎn)品,再去使用B產(chǎn)品的概率。這種是不支持AB測(cè)試的,因?yàn)橛脩絷P(guān)閉一個(gè)APP后,非常多的不可控因素。
樣本量較小也不支持AB測(cè)試,因?yàn)閺慕y(tǒng)計(jì)學(xué)上來(lái)說(shuō),我們要驗(yàn)證一個(gè)數(shù)據(jù)是否有效,還是需要一定的樣本量的。
至于全量投放,比如我們開(kāi)了一個(gè)發(fā)布會(huì),換了一個(gè)logo,這種全量投放,怎么做AB測(cè)試?你可以讓用戶不來(lái)參與發(fā)布會(huì)還是讓用戶不看到新logo?!
AB測(cè)試原理簡(jiǎn)介
AB測(cè)試最核心的原理,就四個(gè)字:假設(shè)檢驗(yàn)。檢驗(yàn)我們提出的假設(shè)是否正確。對(duì)應(yīng)到AB測(cè)試中,就是檢驗(yàn)實(shí)驗(yàn)組&對(duì)照組,指標(biāo)是否有顯著差異。
既然是假設(shè)檢驗(yàn),那么就是先假設(shè),再收集數(shù)據(jù),最后根據(jù)收集的數(shù)據(jù)來(lái)做檢驗(yàn)。
先來(lái)說(shuō)說(shuō)假設(shè)。
假設(shè)一般成對(duì)出現(xiàn),分為零假設(shè) 和 備選假設(shè)。
在AB測(cè)試中,零假設(shè)是:實(shí)驗(yàn)組&對(duì)照組 指標(biāo)相同,無(wú)顯著差異;備選假設(shè)則相反,實(shí)驗(yàn)組&對(duì)照組 指標(biāo)不同,有顯著差異。
舉個(gè)例子。我們優(yōu)化了某算法,想提高頁(yè)面的點(diǎn)擊率。針對(duì)這個(gè)場(chǎng)景的AB測(cè)試,零假設(shè)就是 新算法&老算法的頁(yè)面點(diǎn)擊率無(wú)明顯差異,備選假設(shè)是 新算法&老算法的頁(yè)面點(diǎn)擊率有顯著差異。
再來(lái)說(shuō)說(shuō)檢驗(yàn)。
一般來(lái)說(shuō),我們是通過(guò)具體的指標(biāo)屬性來(lái)找尋相應(yīng)的檢驗(yàn)方法。那么問(wèn)題來(lái)了,指標(biāo)如何分類(lèi)呢?
指標(biāo)可以分為兩種類(lèi)別:
1、絕對(duì)值類(lèi)指標(biāo)。也就是我們平常直接計(jì)算就能得到的,比如DAU,點(diǎn)擊次數(shù)等。我們的一般都是統(tǒng)計(jì)該指標(biāo)在一段時(shí)間內(nèi)的均值或者匯總值,不存在兩個(gè)值之間還要相互計(jì)算。
2、相對(duì)值類(lèi)指標(biāo)。與絕對(duì)值類(lèi)指標(biāo)相反,我們不能直接計(jì)算得到。比如某頁(yè)面的CTR,我們是用 頁(yè)面點(diǎn)擊數(shù) / 頁(yè)面展現(xiàn)數(shù)。我們要計(jì)算點(diǎn)擊數(shù)和展現(xiàn)數(shù),兩者相除才能得到該指標(biāo)。類(lèi)似的,還有XX轉(zhuǎn)化率,XX點(diǎn)擊率,XX購(gòu)買(mǎi)率一類(lèi)的。我們做的AB實(shí)驗(yàn),大部分情況下都想提高這類(lèi)指標(biāo)。
根據(jù)指標(biāo)我們可以知道,該如何計(jì)算最小樣本量,以及實(shí)驗(yàn)周期,以及對(duì)應(yīng)的檢驗(yàn)方法。
AB測(cè)試詳細(xì)流程
我們先看一個(gè)圖,結(jié)合這個(gè)實(shí)驗(yàn)的流程圖,我們一點(diǎn)點(diǎn)來(lái)說(shuō):
選取指標(biāo)
在做AB測(cè)試之前,我們一定要清楚,我們實(shí)驗(yàn)的目標(biāo)是什么。并落地到具體的幾個(gè)指標(biāo)上,這幾個(gè)指標(biāo)對(duì)于我們度量實(shí)驗(yàn)結(jié)果,有非常明顯的幫助。但是,指標(biāo)也要分層級(jí),唯一一個(gè)核心指標(biāo)+多個(gè)觀察指標(biāo)。
核心指標(biāo)用來(lái)度量我們這次實(shí)驗(yàn)的效果,以及計(jì)算相應(yīng)的樣本量。觀察指標(biāo)則用來(lái)度量,該實(shí)驗(yàn)對(duì)其他數(shù)據(jù)的影響(比如對(duì)大盤(pán)留存的影響,對(duì)網(wǎng)絡(luò)延遲的影響等等)。
建立假設(shè)
建立假設(shè)就如同上文所說(shuō),我們建立了零假設(shè)和備選假設(shè),零假設(shè)一般是沒(méi)有效果,備選假設(shè)是有效果。
選取實(shí)驗(yàn)單位
大家應(yīng)該都使用用戶粒度來(lái)作為實(shí)驗(yàn)單位,但是總體說(shuō)來(lái),實(shí)驗(yàn)單位一般有3種。我們不用掌握,但是很多情況下面試官會(huì)問(wèn)到,大家可以作為了解。
1、用戶粒度:這個(gè)是最推薦的,即以一個(gè)用戶的唯一標(biāo)識(shí)來(lái)作為實(shí)驗(yàn)樣本。好處是符合AB測(cè)試的分桶單位唯一性,不會(huì)造成一個(gè)實(shí)驗(yàn)單位處于兩個(gè)分桶,造成的數(shù)據(jù)不置信。
2、設(shè)備粒度:以一個(gè)設(shè)備標(biāo)識(shí)為實(shí)驗(yàn)單位。相比用戶粒度,如果一個(gè)用戶有兩個(gè)手機(jī),那么也可能出現(xiàn)一個(gè)用戶在兩個(gè)分桶中的情況,所以也會(huì)造成數(shù)據(jù)不置信的情況。
3、行為粒度:以一次行為為實(shí)驗(yàn)單位,也就是用戶某一次使用該功能,是實(shí)驗(yàn)桶,下一次使用可能就被切換為基線桶。會(huì)造成大量的用戶處于不同的分桶。強(qiáng)烈不推薦這種方式。
計(jì)算樣本量
樣本量計(jì)算,我們需要了解一下中心極限定理。具體書(shū)面定義和推導(dǎo)過(guò)程,大家可以在網(wǎng)上百度一下就好,我們這里就通俗的解釋一下。中心極限定理的含義,就是只要樣本量足夠大,無(wú)論是什么指標(biāo),無(wú)論對(duì)應(yīng)的指標(biāo)分布是怎樣的,樣本的均值分布都會(huì)趨于正態(tài)分布。
基于正態(tài)分布,我們才能計(jì)算出相應(yīng)的樣本量和做假設(shè)檢驗(yàn)。具體的樣本量計(jì)算推導(dǎo)過(guò)程,大家如有需要,可以關(guān)注后加我微信私聊,這里就放結(jié)論。
整體公式如下:
由于指標(biāo)可以分為將絕對(duì)值指標(biāo)和相對(duì)值指標(biāo)。對(duì)應(yīng)的,我們?cè)谟?jì)算絕對(duì)值指標(biāo)和相對(duì)值指標(biāo)時(shí),標(biāo)準(zhǔn)差的計(jì)算方式也會(huì)不同。具體如下:
我們舉兩個(gè)例子說(shuō)明一下,讓大家更有體感。
案例1-相對(duì)值指標(biāo):
某產(chǎn)品點(diǎn)擊率1.5%,波動(dòng)范圍[1.0%,2.0%],優(yōu)化了該功能后,需要AB測(cè)試計(jì)算樣本量
P:1.5%,p:2.0%(由于波動(dòng)范圍是[1.0%,2.0%],所以至少是2.0%
總樣本量 = 16 * (1.5%*(1-1.5%)+2.0%*(1-2.0%))/ (2.0%-1.5%)^2=22000
案例2-絕對(duì)值指標(biāo):
某產(chǎn)品購(gòu)買(mǎi)金額標(biāo)準(zhǔn)差是25,優(yōu)化了該功能后,預(yù)估至少有5元的絕對(duì)提升,需要AB測(cè)試計(jì)算樣本量
σ=25,Δ=5
總樣本量 = 16 * 25*25*2/5*5=800
總樣本量,是指我們的實(shí)驗(yàn)單位,必須滿足這個(gè)數(shù)量,實(shí)驗(yàn)結(jié)果中的數(shù)據(jù)檢驗(yàn)才可信。也就是說(shuō),我們的實(shí)驗(yàn)桶和基線桶之和必須達(dá)到這個(gè)流量,才能收集數(shù)據(jù)及檢驗(yàn)指標(biāo)。
流量分割
流量切割有兩種方式:分流和分層。
分流是指我們直接將整體用戶切割為幾塊,用戶只能在一個(gè)實(shí)驗(yàn)中。但是這種情況很不現(xiàn)實(shí),因?yàn)槿绻乙瑫r(shí)上線多個(gè)實(shí)驗(yàn),流量不夠切怎么辦?那為了達(dá)到最小樣本量,我們就得延長(zhǎng)實(shí)驗(yàn)周期,要是做一個(gè)實(shí)驗(yàn),要幾個(gè)月,相信我,你老板一定會(huì)和你聊聊人生理想的。
另一種方式,分層。就是將同一批用戶,不停的隨機(jī)后,處于不同的桶。也就是說(shuō),一個(gè)用戶會(huì)處于多個(gè)實(shí)驗(yàn)中,只要實(shí)驗(yàn)之間不相互影響,我們就能夠無(wú)限次的切割用戶。這樣在保證了每個(gè)實(shí)驗(yàn)都能用全流量切割的同時(shí),也保證了實(shí)驗(yàn)數(shù)據(jù)是置信的。
兩種方式用圖來(lái)表達(dá)如下:
實(shí)驗(yàn)周期計(jì)算
相應(yīng)的,最小樣本量有了,我們切分了流量,知道了實(shí)驗(yàn)桶一天大概能有多少樣本量(也可以算小時(shí),如果產(chǎn)品的流量足夠大)。我們直接用 最小樣本量 / 實(shí)驗(yàn)桶天均流量 即可以得到相應(yīng)的實(shí)驗(yàn)周期。
線上驗(yàn)證
很多公司不會(huì)做線上驗(yàn)證。當(dāng)然,不驗(yàn)證也沒(méi)關(guān)系,就是有可能會(huì)踩坑,所以還是建議大家在實(shí)驗(yàn)上線后進(jìn)行線上驗(yàn)證。
線上驗(yàn)證主要是2個(gè)方向,一個(gè)是驗(yàn)證實(shí)驗(yàn)策略是否真的觸發(fā)。即我們上線的實(shí)驗(yàn)桶,是否在產(chǎn)品上實(shí)際落地了。比如你優(yōu)化了一個(gè)產(chǎn)品功能,你可以去實(shí)際體驗(yàn)下,實(shí)驗(yàn)桶產(chǎn)品是否真的有優(yōu)化。
另一個(gè)是驗(yàn)證同一個(gè)用戶只能在同一個(gè)桶中,要是同時(shí)出現(xiàn)在兩個(gè)桶中,后期數(shù)據(jù)也會(huì)不置信。這個(gè)上文有說(shuō)過(guò)。
數(shù)據(jù)檢驗(yàn)
數(shù)據(jù)檢驗(yàn),大家可能都聽(tīng)過(guò)。比如Z檢驗(yàn),T檢驗(yàn),單尾檢驗(yàn),雙尾檢驗(yàn),算P值,算置信區(qū)間等等。我們這里先說(shuō)說(shuō)哪種情況用Z檢驗(yàn),哪種情況用T檢驗(yàn)。因?yàn)檫@個(gè)問(wèn)題經(jīng)常會(huì)碰到,也是AB測(cè)試中,面試官的必問(wèn)問(wèn)題。
大家應(yīng)該都看過(guò)這個(gè)圖:
賈俊平老師的書(shū)中就有這個(gè)圖,具體的公式和原理書(shū)中有非常明細(xì)的介紹,關(guān)注公眾號(hào)之后領(lǐng)取的“ 資料 ”中就有這本書(shū)的電子版PDF。
按照上文我們說(shuō)的指標(biāo)分類(lèi),一般情況下,絕對(duì)值指標(biāo)用T檢驗(yàn),相對(duì)值指標(biāo)用Z檢驗(yàn)。因?yàn)榻^對(duì)指標(biāo)的的總體方差,需要知道每一個(gè)用戶的值,這個(gè)在AB實(shí)驗(yàn)中肯定不可能。而相對(duì)值指標(biāo)是二項(xiàng)分布,可以通過(guò)樣本量的值計(jì)算出總體的值,就如同10W人的某頁(yè)面點(diǎn)擊率是10%,隨機(jī)從這10W人中抽樣1W人,這個(gè)點(diǎn)擊率也是10%一樣。
再來(lái)說(shuō)說(shuō)具體的檢驗(yàn)。一般情況下我們可以用兩種常用方法:
1、算P值,也就是算當(dāng)零假設(shè)成立時(shí),觀測(cè)到樣本數(shù)據(jù)出現(xiàn)的概率。統(tǒng)計(jì)學(xué)上,將5%作為一個(gè)小概率事件,所以一般用5%來(lái)對(duì)比計(jì)算出來(lái)的P值。當(dāng)P值小于5%時(shí),拒絕零假設(shè),即兩組指標(biāo)不同;反過(guò)來(lái),當(dāng)P值大于5%時(shí),接受零假設(shè),兩組指標(biāo)相同。
2、算置信區(qū)間。一般情況下,我們都會(huì)用95%來(lái)作為置信水平。也就是說(shuō),當(dāng)前數(shù)據(jù)的估計(jì),有95%的區(qū)間包含了總體參數(shù)的真值。這么說(shuō)可能比較繞,我們可以簡(jiǎn)單理解成 總體數(shù)據(jù)有95%的可能性在這個(gè)范圍內(nèi)。
我們計(jì)算兩組指標(biāo)的差異值,如果我們算出的差異值置信區(qū)間不含0,我們就拒絕零假設(shè),認(rèn)為兩組指標(biāo)不同;但是如果包含0,我們則要接受零假設(shè),認(rèn)為兩組指標(biāo)相同。
當(dāng)然,我們也可以直接算出Z值或者T值,查表對(duì)比。但是這種不是很常用,還是以P值及置信區(qū)間為主流。
還有些公司,會(huì)將所有指標(biāo)計(jì)算到為不同流量區(qū)間內(nèi)的自然波動(dòng)。比如我有三個(gè)指標(biāo),日活100W,那么可以拆分成多個(gè)流量區(qū)間,比如 1w、2w、5w、10w、20w、50w,100w這幾個(gè)流量比例,然后依次計(jì)算這3個(gè)指標(biāo),在這些流量下的自然波動(dòng)閾值,如果高于閾值,我們就認(rèn)為實(shí)驗(yàn)有效。這種就會(huì)方便很多,但是不夠嚴(yán)謹(jǐn)。
最后來(lái)說(shuō)說(shuō)單尾檢驗(yàn),雙尾檢驗(yàn)。單尾檢驗(yàn)的前提是我們不僅認(rèn)為兩組指標(biāo)不同,還明確了大小,一般情況下,我們都認(rèn)為實(shí)驗(yàn)組的效果高于基線組。而雙尾檢驗(yàn)只是認(rèn)為兩組指標(biāo)不同,未明確大小。通常來(lái)說(shuō),我們更推薦使用雙尾檢驗(yàn),為什么呢?
因?yàn)閷?shí)驗(yàn)本身就是一種利用數(shù)據(jù)來(lái)做決策的方法,我們不要再人為的帶入主觀設(shè)想。而是用雙尾檢驗(yàn),我們不僅能量化漲了多少,還能量化掉了多少,因?yàn)閷?shí)驗(yàn)結(jié)果有正有負(fù),不一定都是有效果的(正向的),還可能有負(fù)向的效果,我們也可以將有負(fù)向效果的實(shí)驗(yàn)記錄下來(lái),沉淀成知識(shí)庫(kù),為后期實(shí)驗(yàn)避坑。
當(dāng)然,生活中有些事件是可以用單尾檢驗(yàn)的。比如我們優(yōu)化了制造燈泡的流程,提升了燈泡的質(zhì)量,那對(duì)于燈泡的質(zhì)量檢驗(yàn)我們就采用單尾檢驗(yàn)就好,因?yàn)槲覀冎魂P(guān)心燈泡質(zhì)量是否和預(yù)期一樣,有所提升。
AB測(cè)試案例串講
我們先來(lái)按照上節(jié)課的流程串講一個(gè)案例。
大體背景如下:
某社交APP增加了“看一看”功能,即用戶之間可以查閱到對(duì)方所填寫(xiě)的一些基礎(chǔ)信息?,F(xiàn)在要分析該功能,是否有效果。
我們得到這個(gè)問(wèn)題,需要腦子里想到AB測(cè)試的整體流程圖(如下)。
從流程圖中,我們需要想到幾個(gè)問(wèn)題:
1、實(shí)驗(yàn)前:如何選指標(biāo),如何做假設(shè),如何選實(shí)驗(yàn)單位,根據(jù)實(shí)驗(yàn)指標(biāo)和單位,如何計(jì)算最小樣本量,以及實(shí)驗(yàn)的周期
2、實(shí)驗(yàn)中:需要驗(yàn)證是否所有用戶僅處于同一個(gè)桶,還需要驗(yàn)證線上實(shí)驗(yàn)桶策略是否符合預(yù)期
3、實(shí)驗(yàn)后:需要回收數(shù)據(jù),通過(guò)計(jì)算P值或者置信區(qū)間Diff的方法,校驗(yàn)該功能是否有效
從該功能來(lái)說(shuō),我們需要考慮的主要指標(biāo)是用戶之間建立聯(lián)系的率值是否有提升。因?yàn)樯缃皇菫榱俗層脩糁g建立聯(lián)系,增加這種查閱資料的功能,是為了讓用戶通過(guò)資料查閱,與感興趣的用戶建立聯(lián)系。
所以該功能,我們的指標(biāo)選擇為加好友率。這時(shí)候,零假設(shè)就是該功能無(wú)效果,即兩個(gè)桶的加好友率無(wú)明顯差異。備選假設(shè)則相反。實(shí)驗(yàn)單位我們?yōu)榱吮苊鈹?shù)據(jù)的不置信,我們選擇以用戶為實(shí)驗(yàn)單位。
假設(shè)我們的原有添加好友率如下 ,那么我們計(jì)算整體樣本量如下:
P:45%,p:47%(由于波動(dòng)范圍是[44%,46%],所以至少是2.0%)
總樣本量 = 16 * (45%*(1-45%)+ 47%*(1-47%))/ (47%-45%)^2 = 19864
由于實(shí)驗(yàn)桶和基線桶的比例是1:1,所以我們分配為實(shí)驗(yàn)桶1w樣本,基線桶1w樣本量。但是由于我們不能一上來(lái)就全量試驗(yàn),所以我們開(kāi)20%的流量為實(shí)驗(yàn)桶(假設(shè)DAU的20%是2000/天,即實(shí)驗(yàn)桶的DAU為2000/天),那么,我們預(yù)計(jì)要實(shí)驗(yàn)5天(1w/2000)。
但是通過(guò)計(jì)算,用戶的一次活躍周期是7天,所以我們?yōu)榱俗寣?shí)驗(yàn)效果可信度更高,計(jì)劃實(shí)驗(yàn)7天。
實(shí)驗(yàn)上線后,我們對(duì)線上數(shù)據(jù)進(jìn)行了驗(yàn)證,確認(rèn)了以下兩個(gè)問(wèn)題:
1、實(shí)驗(yàn)策略在實(shí)驗(yàn)桶已生效,在基線桶未生效。即相關(guān)的看一看功能在實(shí)驗(yàn)桶已上線,基線桶保持原樣;
2、同一個(gè)用戶僅處在同一分桶中,未出現(xiàn)一個(gè)用戶處于兩個(gè)桶的情況。
實(shí)驗(yàn)到期后,我們對(duì)線上數(shù)據(jù)進(jìn)行了回收。由于我們這個(gè)是相對(duì)值指標(biāo),所以我們使用Z檢驗(yàn)。
檢驗(yàn)方法有以下兩種:
1、算P值,P值小于5%,拒絕原假設(shè),即產(chǎn)品功能有效果。這個(gè)場(chǎng)景中(假設(shè))P=0.002,即我們判斷產(chǎn)品有效果。
2、算執(zhí)行區(qū)間的差值,如果不含0,則拒絕零假設(shè)。同樣,我們這里假設(shè)算出來(lái)期間不含0,我們認(rèn)為該產(chǎn)品有效果。
以上,就是一個(gè)整體的AB實(shí)驗(yàn)案例。我們從篩選指標(biāo),到設(shè)計(jì)實(shí)驗(yàn)(選取實(shí)驗(yàn)單位,計(jì)算最小樣本量,計(jì)算實(shí)驗(yàn)周期),到實(shí)驗(yàn)上線,再到后面的效果驗(yàn)證。
但是不知道大家注意沒(méi)有,這個(gè)實(shí)驗(yàn)有些地方設(shè)計(jì)的并不合理。因?yàn)樯缃挥脩糁g會(huì)有網(wǎng)絡(luò)效應(yīng),即一個(gè)用戶會(huì)影響另一個(gè)用戶,所以我們實(shí)驗(yàn)分桶這么設(shè)計(jì)并不合理。
AB測(cè)試注意事項(xiàng)
下面,我們就來(lái)講講AB實(shí)驗(yàn)的注意事項(xiàng)。
1、網(wǎng)絡(luò)效應(yīng):
這種情況通常出現(xiàn)在社交網(wǎng)絡(luò),以及共享經(jīng)濟(jì)場(chǎng)景(如滴滴)。舉個(gè)例子:如果微信改動(dòng)了某一個(gè)功能,這個(gè)功能讓實(shí)驗(yàn)組用戶更加活躍。但是相應(yīng)的,實(shí)驗(yàn)組的用戶的好友沒(méi)有分配到實(shí)驗(yàn)組,而是對(duì)照組。但是,實(shí)驗(yàn)組用戶更活躍(比如更頻繁的發(fā)朋友圈),作為對(duì)照組的我們也就會(huì)經(jīng)常去刷朋友圈,那相應(yīng)的,對(duì)照組用戶也受到了實(shí)驗(yàn)組用戶的影響。本質(zhì)上,對(duì)照組用戶也就收到了新的功能的影響,那么AB實(shí)驗(yàn)就不再能很好的檢測(cè)出相應(yīng)的效果。
解決辦法:從地理上區(qū)隔用戶,這種情況適合滴滴這種能夠從地理上區(qū)隔的產(chǎn)品,比如北京是實(shí)驗(yàn)組,上海是對(duì)照組,只要兩個(gè)城市樣本量相近即可。或者從用戶上直接區(qū)隔,比如我們剛剛舉的例子,我們按照用戶的親密關(guān)系區(qū)分為不同的分層,按照用戶分層來(lái)做實(shí)驗(yàn)即可。但是這種方案比較復(fù)雜,建議能夠從地理上區(qū)隔,就從地理上區(qū)隔。
2、學(xué)習(xí)效應(yīng):
這種情況就類(lèi)似,產(chǎn)品做了一個(gè)醒目的改版,比如將某個(gè)按鈕顏色從暗色調(diào)成亮色。那相應(yīng)的,很多用戶剛剛看到,會(huì)有個(gè)新奇心里,去點(diǎn)擊該按鈕,導(dǎo)致按鈕點(diǎn)擊率在一段時(shí)間內(nèi)上漲,但是長(zhǎng)時(shí)間來(lái)看,點(diǎn)擊率可能又會(huì)恢復(fù)到原有水平。反之,如果我們將亮色調(diào)成暗色,也有可能短時(shí)間內(nèi)點(diǎn)擊率下降,長(zhǎng)時(shí)間內(nèi)又恢復(fù)到原有水平。這就是學(xué)習(xí)效應(yīng)。
解決辦法:一個(gè)是拉長(zhǎng)周期來(lái)看,我們不要一開(kāi)始就去觀察該指標(biāo),而是在一段時(shí)間后再去觀察指標(biāo)。通過(guò)剛剛的描述大家也知道,新奇效應(yīng)會(huì)隨著時(shí)間推移而消失。另一種辦法是只看新用戶,因?yàn)樾掠脩舨粫?huì)有學(xué)習(xí)效應(yīng)這個(gè)問(wèn)題,畢竟新用戶并不知道老版本是什么樣子的。
3、多重檢驗(yàn)問(wèn)題:
這個(gè)很好理解,就是如果我們?cè)趯?shí)驗(yàn)中,不斷的檢驗(yàn)指標(biāo)是否有差異,會(huì)造成我們的結(jié)果不可信。也就是說(shuō),多次檢驗(yàn)同一實(shí)驗(yàn)導(dǎo)致第一類(lèi)錯(cuò)誤概率上漲;同時(shí)檢驗(yàn)多個(gè)分組導(dǎo)致第一類(lèi)錯(cuò)誤概率上漲。
舉個(gè)例子:
出現(xiàn)第一類(lèi)錯(cuò)誤概率:P(A)=5%
檢驗(yàn)了20遍:P(至少出現(xiàn)一次第一類(lèi)錯(cuò)誤)
=1-P(20次完全沒(méi)有第一類(lèi)錯(cuò)誤)
=1- (1?5%) ^20
=64%
也就是說(shuō),當(dāng)我們不斷的去檢驗(yàn)實(shí)驗(yàn)效果時(shí),第一類(lèi)錯(cuò)誤的概率會(huì)直線上漲。所以我們?cè)趯?shí)驗(yàn)結(jié)束前,不要多次去觀察指標(biāo),更不要觀察指標(biāo)有差異后,直接停止實(shí)驗(yàn)并下結(jié)論說(shuō)該實(shí)驗(yàn)有效。
AB測(cè)試面試踩坑
針對(duì)這些問(wèn)題,有很多時(shí)候,面試官在問(wèn)問(wèn)題時(shí),會(huì)設(shè)下一些坑,我們來(lái)舉兩個(gè)例子。
例1:滴滴準(zhǔn)備升級(jí)司機(jī)端的一個(gè)功能,該如何校驗(yàn)功能效果?
考點(diǎn)1:常見(jiàn)的AB測(cè)試流程設(shè)計(jì)
考點(diǎn)2:網(wǎng)絡(luò)效應(yīng)
解法:
針對(duì)考點(diǎn)1:AB測(cè)試的流程是 確定目標(biāo) –> 確定實(shí)驗(yàn)單位 –> 確定最小樣本量 –> 確認(rèn)流量分割方案 –> 實(shí)驗(yàn)上線 –> 規(guī)則校驗(yàn) –> 數(shù)據(jù)收集 –> 效果檢驗(yàn)
針對(duì)考點(diǎn)2:實(shí)驗(yàn)分桶,以兩個(gè)量級(jí)相近城市分割,避免網(wǎng)絡(luò)效應(yīng)的相互影響
例2:某app,用戶活躍周期是14天,這時(shí),上線了一個(gè)實(shí)驗(yàn),計(jì)劃跑20天在看效果,結(jié)果有位新同學(xué),在10天時(shí)做了統(tǒng)計(jì)推斷,發(fā)現(xiàn)數(shù)據(jù)已經(jīng)有了顯著差異,認(rèn)為可以停止實(shí)驗(yàn),這樣做對(duì)嗎?
考點(diǎn)1:實(shí)驗(yàn)周期應(yīng)該跨越一個(gè)活躍周期
考點(diǎn)2:多重檢驗(yàn)問(wèn)題
解法:
由于AB測(cè)試的實(shí)驗(yàn)周期盡量跨越一個(gè)用戶活躍周期,且在實(shí)驗(yàn)結(jié)束時(shí)再做統(tǒng)計(jì)推斷,所以該做法不對(duì),建議跑慢20天再看數(shù)據(jù)效果
AB測(cè)試小Tips
1、用戶屬性一定要一致
如果上線一個(gè)實(shí)驗(yàn),我們對(duì)年輕群體上線,年老群體不上線,實(shí)驗(yàn)后拿著效果來(lái)對(duì)比,即使數(shù)據(jù)顯著性檢驗(yàn)通過(guò),那么,實(shí)驗(yàn)也是不可信的。因?yàn)锳B測(cè)試的基礎(chǔ)條件之一,就是實(shí)驗(yàn)用戶的同質(zhì)化。即實(shí)驗(yàn)用戶群,和非實(shí)驗(yàn)用戶群的 地域、性別、年齡等自然屬性因素分布基本一致。
2、一定要在同一時(shí)間維度下做實(shí)驗(yàn)
舉例:如果某一個(gè)招聘app,年前3月份對(duì)用戶群A做了一個(gè)實(shí)驗(yàn),年中7月份對(duì)用戶群B做了同一個(gè)實(shí)驗(yàn),結(jié)果7月份的效果明顯較差,但是可能本身是由于周期性因素導(dǎo)致的。所以我們?cè)趯?shí)驗(yàn)時(shí),一定要排除掉季節(jié)等因素。
3、AB測(cè)試一定要從小流量逐漸放大
如果上線一個(gè)功能,直接流量開(kāi)到50%去做測(cè)試,那么如果數(shù)據(jù)效果不好,或者功能意外出現(xiàn)bug,對(duì)線上用戶將會(huì)造成極大的影響。所以,建議一開(kāi)始從最小樣本量開(kāi)始實(shí)驗(yàn),然后再逐漸擴(kuò)大用戶群體及實(shí)驗(yàn)樣本量。
4、如果最小樣本量不足該怎么辦
如果我們計(jì)算出來(lái),樣本量需要很大,我們分配的比例已經(jīng)很大,仍舊存在樣本量不足的情況,那么我們只能通過(guò)拉長(zhǎng)時(shí)間周期,通過(guò)累計(jì)樣本量來(lái)進(jìn)行比較
5、是否需要上線第一天就開(kāi)始看效果?
由于AB-Test,會(huì)影響到不同的用戶群體,所以,我們?cè)谧鯝B測(cè)試時(shí),盡量設(shè)定一個(gè)測(cè)試生效期,這個(gè)周期一般是用戶的一個(gè)活躍間隔期。如招聘用戶活躍間隔是7天,那么生效期為7天,如果是一個(gè)機(jī)酒app,用戶活躍間隔是30天,那生效期為30天
6、用戶是否生效
用戶如果被分組后,未觸發(fā)實(shí)驗(yàn),我們需要排除這類(lèi)用戶。因?yàn)檫@類(lèi)用戶本身就不是AB該統(tǒng)計(jì)進(jìn)入的用戶(這種情況較少,如果有,那在做實(shí)驗(yàn)時(shí)打上生效標(biāo)簽即可)
7、用戶不能同時(shí)處于多個(gè)組
如果用戶同時(shí)屬于多個(gè)組,那么,一個(gè)是會(huì)對(duì)用戶造成誤導(dǎo)(如每次使用,效果都不一樣),一個(gè)是會(huì)對(duì)數(shù)據(jù)造成影響,我們不能確認(rèn)及校驗(yàn)實(shí)驗(yàn)的效果及準(zhǔn)確性
8、如果多個(gè)實(shí)驗(yàn)同時(shí)進(jìn)行,一定要對(duì)用戶分層+分組
比如,在推薦算法修改的一個(gè)實(shí)驗(yàn)中,我們還上線了一個(gè)UI優(yōu)化的實(shí)驗(yàn),那么我們需要將用戶劃分為4個(gè)組:A、老算法+老UI,B、老算法+新UI,C、新算法+老UI,D、新算法+新UI,因?yàn)橹挥羞@樣,我們才能同時(shí)進(jìn)行的兩個(gè)實(shí)驗(yàn)的參與改動(dòng)的元素,做數(shù)據(jù)上的評(píng)估
9、特殊情況(實(shí)際情況)
樣本量計(jì)算這步,可能在部分公司不會(huì)使用,更多的是偏向經(jīng)驗(yàn)值;
假設(shè)檢驗(yàn)這一步,部分公司可能也不會(huì)使用;
大部分公司,都會(huì)有自己的AB平臺(tái),產(chǎn)運(yùn)更偏向于平臺(tái)上直接測(cè)試,最后在一段時(shí)間后查看指標(biāo)差異。
對(duì)于這兩種情況,我們需要計(jì)算不同流量分布下的指標(biāo)波動(dòng)數(shù)據(jù),把相關(guān)自然波動(dòng)下的閾值作為波動(dòng)參考,這樣能夠大概率保證AB實(shí)驗(yàn)的嚴(yán)謹(jǐn)及可信度
本文經(jīng)授權(quán)發(fā)布,不代表增長(zhǎng)黑客立場(chǎng),如若轉(zhuǎn)載,請(qǐng)注明出處:http://gptmaths.com/cgo/product/53009.html