項(xiàng)目復(fù)盤:如何避開(kāi)從0~1構(gòu)建AB Test過(guò)程中的坑(上)
編輯導(dǎo)語(yǔ):ABTest,簡(jiǎn)單來(lái)說(shuō),就是為同一個(gè)產(chǎn)品目標(biāo)制定兩個(gè)方案,通過(guò)日志記錄用戶的使用情況,通過(guò)結(jié)構(gòu)化的日志數(shù)據(jù)分析相關(guān)指標(biāo),從而得出更符合預(yù)期設(shè)計(jì)目標(biāo)的方案,最終將全部流量切換至符合目標(biāo)的方案。本文作者通過(guò)自己的經(jīng)驗(yàn),分享給我們應(yīng)該如何避開(kāi)從0~1構(gòu)建AB Test過(guò)程中的坑。
最近設(shè)計(jì)完成了一個(gè)用于信息投放的ABTest功能,正好總結(jié)梳理下,避免大家踩坑。
AB實(shí)驗(yàn)大家都聽(tīng)過(guò),互聯(lián)網(wǎng)公司里更常見(jiàn),開(kāi)始講內(nèi)容之前通俗的介紹下AB概念:你在做產(chǎn)品規(guī)劃設(shè)計(jì)時(shí),想出了一個(gè)改版方案(姑且稱為版本B),但不確定這個(gè)改進(jìn)的效果是否比老版本(稱為版本A)效果好。
于是想對(duì)比下這兩版本的效果,所以你把用戶群體(假設(shè)100人),其中10%的流量分配給B方案,90%的流量分配給A方案,持續(xù)一周后,查看數(shù)據(jù);如果版本B效果比版本A好,那就準(zhǔn)備全部上線,如果版本B效果不好,那就下線或重新做實(shí)驗(yàn)。
(手繪人群分流示意,請(qǐng)諒解)
故事講完了,可能很多人覺(jué)得很簡(jiǎn)單,不就是之前學(xué)的生物化學(xué)里的單一變量嘛,如果這樣想,那么你的AB實(shí)驗(yàn)應(yīng)該是做錯(cuò)了。
一、AB實(shí)驗(yàn)中的典型問(wèn)題
先看下AB里的幾個(gè)核心問(wèn)題:
- 怎么劃分人群,是隨機(jī)劃分還是依照什么規(guī)則確保人群劃分的合理?(AB實(shí)驗(yàn)里的分流邏輯);
- 實(shí)驗(yàn)結(jié)果出來(lái)了,我怎么判斷這個(gè)結(jié)果可信不可信(AB實(shí)驗(yàn)里的顯著性差異);
- 實(shí)驗(yàn)結(jié)果出來(lái)了,實(shí)驗(yàn)組數(shù)據(jù)好,我怎么判斷是不是真的好(AB實(shí)驗(yàn)里的第一類錯(cuò)誤);
- 實(shí)驗(yàn)結(jié)果出來(lái)了,實(shí)驗(yàn)組數(shù)據(jù)差,我怎么判斷是不是真的差(AB實(shí)驗(yàn)里的第二類錯(cuò)誤);
- 實(shí)驗(yàn)結(jié)果出來(lái)了,好多個(gè)維度數(shù)據(jù),我怎么衡量實(shí)驗(yàn)結(jié)果(AB實(shí)驗(yàn)里的衡量指標(biāo));
- 實(shí)驗(yàn)結(jié)果出來(lái)了,但是一組AB實(shí)驗(yàn)我總覺(jué)得不靠譜(AB實(shí)驗(yàn)的AB組,稱為AA組以及AABB組)。
解決上面6個(gè)問(wèn)題,就從邏輯上完成了AB實(shí)驗(yàn)方案的規(guī)劃,剩下的就是產(chǎn)品設(shè)計(jì)了。
二、如何合理的劃分人群
1. 什么是人群劃分(分流)
這個(gè)問(wèn)題是AB實(shí)驗(yàn)里最關(guān)鍵的分流邏輯。
AB實(shí)驗(yàn)最關(guān)鍵的是保證變量,是的,這一點(diǎn)和生物化學(xué)里的單一變量法一樣了,除了你產(chǎn)品要實(shí)驗(yàn)的點(diǎn)不同外,其實(shí)人群也要保證一樣,這個(gè)一樣不是說(shuō)流量或比例一樣,而是人群特質(zhì)一樣。
舉個(gè)例子:BB霜廠家做總?cè)藬?shù)1200人的AB實(shí)驗(yàn),1號(hào)BB霜投放給了一波600人的女生群體(即人群A分流50%),2號(hào)BB霜投放給了另一波600人男生群體(即人群B分流50%),流量劃分一致,實(shí)驗(yàn)結(jié)果發(fā)現(xiàn)人群A的接受度很高,結(jié)論:1號(hào)BB霜更受市場(chǎng)歡迎!
這個(gè)結(jié)論可信么,不可信,因?yàn)楸旧砣巳禾刭|(zhì)就不一樣,這里和流量1:1沒(méi)關(guān)系,流量的比例多少不會(huì)影響AB實(shí)驗(yàn)結(jié)果,男生拿到BB霜接受度肯定不高(莫要牛角尖,說(shuō)男生拿到送女朋友之類云云),這個(gè)例子說(shuō)明的是人群特質(zhì)對(duì)實(shí)驗(yàn)結(jié)果的影響。
2. 如何進(jìn)行人群劃分(分流)
首先我們公司是內(nèi)部有專門的人群分流系統(tǒng),主要默認(rèn)的分流算法是uid+hash因子 計(jì)算md5取模,根據(jù)結(jié)果判斷是落在哪個(gè)實(shí)驗(yàn)分桶里,該系統(tǒng)可以直接對(duì)接使用,所以此處不贅述。
本次主要講下對(duì)于沒(méi)有科學(xué)分流系統(tǒng)的公司如何處理?
采用算法或規(guī)則分流,算法分流也分為在線分流和離線分流。在線分流是指根據(jù)當(dāng)前線上目前的實(shí)時(shí)特征進(jìn)行劃分,結(jié)果更加精確;離線分流是指根據(jù)T+1或T+N(具體N根據(jù)不同公司不同業(yè)務(wù)來(lái)確定)的特征進(jìn)行劃分。條件允許情況下,推薦前者。
核心思路主要是拿到用戶的唯一標(biāo)識(shí),對(duì)用戶的唯一標(biāo)識(shí)進(jìn)行雜散后重新分配。
不同產(chǎn)品唯一標(biāo)識(shí)不同,但一般都有用戶Uid,簡(jiǎn)單方式可以用規(guī)則對(duì)uid采取奇偶數(shù)劃分;另外一種引入算法,如Hash算法(一般翻譯為散列、雜湊或音譯為哈希,其輸出是散列值),對(duì)uid進(jìn)行哈希處理。處理后根據(jù)業(yè)務(wù)要求,加入分桶邏輯,判斷具體的uid落在哪個(gè)分桶內(nèi),完成科學(xué)分流。
3. 如何設(shè)計(jì)人群劃分(分流)
分流的本質(zhì)是分桶,劃分到不同桶內(nèi)。所以實(shí)現(xiàn)邏輯上明確后,產(chǎn)品設(shè)計(jì)上其實(shí)很簡(jiǎn)答,參考思路如下:
(axure草稿版交互,人群分桶示意,參考看就好)
三、如何判斷結(jié)果是否可信
1. 結(jié)果差異是不是明顯(顯著性檢驗(yàn))
判斷實(shí)驗(yàn)是否可信就是AB實(shí)驗(yàn)里的顯著性檢驗(yàn),由于AB實(shí)驗(yàn)對(duì)用戶進(jìn)行了分流、抽樣,不同實(shí)驗(yàn)組之間的差異本身就存在隨機(jī)性。
所以存在一個(gè)顯而易見(jiàn)的問(wèn)題,實(shí)驗(yàn)的結(jié)果是隨機(jī)波動(dòng)導(dǎo)致的還是真實(shí)可信的差異?檢驗(yàn)差異的統(tǒng)計(jì)顯著性就是幫助我們判斷這個(gè)差異是真實(shí)的效果,還是僅僅是由于分流抽樣帶來(lái)的隨機(jī)的差異。
之前聽(tīng)韓瞳大佬的課程時(shí),了解到一個(gè)拋硬幣的例子,淺顯易懂,借由該例子解釋下:想驗(yàn)證一個(gè)硬幣有沒(méi)有被動(dòng)了手腳,應(yīng)該怎么做?
- 無(wú)限次拋擲,然后記錄正反面數(shù)據(jù),看下正反面比例;
- 這件事前提是大家均知道,正反面的概率分別是50%。
在證明之前,統(tǒng)計(jì)學(xué)上有個(gè)概念原假設(shè)和備擇假設(shè),原假設(shè)即想要證明的假設(shè),備擇假設(shè)即不想證明的假設(shè)。所以在這個(gè)例子里,我們做如下假設(shè):
- 原假設(shè):硬幣沒(méi)有被動(dòng)手腳
- 備擇假設(shè):硬幣被動(dòng)了手腳
那么假設(shè)硬幣的數(shù)據(jù)如下:
你是不是覺(jué)得結(jié)果不好判斷,或者自己心里的判斷很主觀,到底偏移多少算正常的,偏移多少算不正常的?這就是顯著性檢驗(yàn)要解決的。
再給出答案之前,還需要知道AB實(shí)驗(yàn)里的四種數(shù)據(jù)情況:
表格中的兩個(gè)錯(cuò)誤是什么情況下發(fā)生的呢?
第一類錯(cuò)誤:也就是比如拋擲1000次,600次正面,400次反面,數(shù)據(jù)看起來(lái)不正常,但是實(shí)際上是統(tǒng)計(jì)學(xué)里正常的情況,如果繼續(xù)拋擲1000次,可能就是510正面,490反面了,也就是之前的拋擲恰好處于自然波動(dòng)范圍內(nèi)了;
第二類錯(cuò)誤:也就是比如拋擲10次,5次正面,5次反面,數(shù)據(jù)看起來(lái)正常,但是實(shí)際上統(tǒng)計(jì)學(xué)里已經(jīng)不正常了,如果繼續(xù)拋擲1000次,可能這個(gè)硬幣就變成800正面,200反面了,也就是說(shuō)由于拋擲次數(shù)過(guò)少導(dǎo)致的。
講到這里,就是顯著性檢驗(yàn)的作用了,用于判斷到底是否是正常的波動(dòng)。
- 如何評(píng)估是否出現(xiàn)了第一類錯(cuò)誤:采用P值
- 如何評(píng)估是否出現(xiàn)了第二類錯(cuò)誤:采用Power值
2. 怎么判斷結(jié)果是否明顯(檢驗(yàn)方法)
1)先來(lái)解決第一類錯(cuò)誤
這里非統(tǒng)計(jì)學(xué)概率學(xué)伙伴要問(wèn),什么是P值,那么來(lái)解釋下。AB實(shí)驗(yàn)的基礎(chǔ)是統(tǒng)計(jì)學(xué)里的假設(shè)檢驗(yàn)里的知識(shí),核心思路如下:
- 當(dāng)樣本量足夠大足夠多時(shí),把實(shí)驗(yàn)對(duì)象分為兩組,如A組和B組。由于數(shù)量夠多夠大,理論上可以認(rèn)為AB兩組的樣本特質(zhì)一樣,即樣本無(wú)差別;
- AB兩組投放同一個(gè)產(chǎn)品,對(duì)B組投放的產(chǎn)品做了改動(dòng),A組無(wú)改動(dòng)(統(tǒng)計(jì)上稱B組為實(shí)驗(yàn)組,A組為對(duì)照組);
- 假設(shè)該改動(dòng)沒(méi)有影響(統(tǒng)計(jì)學(xué)上稱之為“原假設(shè)”:即最初的假設(shè)條件);
- 假設(shè)該改動(dòng)有影響(統(tǒng)計(jì)學(xué)上稱之為“備擇假設(shè)”:即原假設(shè)的對(duì)立假設(shè),包含一切使原假設(shè)不成立的命題);
- 觀察B組的實(shí)驗(yàn)數(shù)據(jù),在統(tǒng)計(jì)學(xué)和概率學(xué)的計(jì)算下,原假設(shè)成立的前提下,判斷B組數(shù)據(jù)出現(xiàn)的概率。根據(jù)這個(gè)概率是否處于置信區(qū)間范圍內(nèi)來(lái)判斷,原假設(shè)是真還是假。
(手繪p值示意,請(qǐng)諒解)
如圖,在統(tǒng)計(jì)學(xué)上,參考原假設(shè)來(lái)判斷其出現(xiàn)概率稱之為P-Value,即p值。
P值指的是比較的兩者的差別是由機(jī)遇所導(dǎo)致的可能性大小。P值越小,越有理由認(rèn)為對(duì)比事物間存在差異。一般統(tǒng)計(jì)學(xué)認(rèn)為,P>0.05稱“不顯著”;P<=0.05稱“顯著”,P<=0.01稱“非常顯著”。
P<0.05,就是說(shuō)結(jié)果顯示的差別是由機(jī)遇所致的可能性不足5%,或者說(shuō),別人在同樣的條件下重復(fù)同樣的研究,得出相反結(jié)論的可能性不足5%。
但是很多AB實(shí)驗(yàn)里容易搞混一個(gè)詞,因?yàn)锳B實(shí)驗(yàn)里經(jīng)常用“顯著”來(lái)描述,所以容易出現(xiàn)“差異具有顯著性”和“具有顯著差異”兩個(gè)詞混用,其實(shí)二者意義不同。
前者是指其p<=0.05,即可以相信兩個(gè)事物完全相同的概率還不到5%,因此可以認(rèn)為兩個(gè)事物確實(shí)存在差異,這個(gè)結(jié)論如果是錯(cuò)的,錯(cuò)誤的概率≤5%。
后者是指兩個(gè)事物的差別確實(shí)是比較大的,如蘋(píng)果和西紅柿差別很大,因此可以認(rèn)為“有顯著差異”,但小蘋(píng)果和大蘋(píng)果差別不是特別大,但如果AB實(shí)驗(yàn)統(tǒng)計(jì)學(xué)上的p值≤0.05,可以認(rèn)為兩者“差別有顯著性”,但不能認(rèn)為是“有顯著差異”。
好了,這里解釋了p值以及在判斷p值過(guò)程中的兩類錯(cuò)誤。綜上,所以判斷實(shí)驗(yàn)結(jié)果是否可信的可以通過(guò)判斷P值來(lái)判斷。
2)再來(lái)解決第二類錯(cuò)誤
什么是power值,那么來(lái)解釋下:接上面的硬幣實(shí)驗(yàn),也就是硬幣的數(shù)據(jù)看起來(lái)正常(也就是數(shù)據(jù)好像符合原假設(shè)),但是結(jié)果確是硬幣實(shí)際上不正常,我們犯這個(gè)錯(cuò)誤的概率,稱之為二類錯(cuò)誤概率值,而power值即稱為統(tǒng)計(jì)功效,也就是不犯這個(gè)錯(cuò)誤的概率。
一般情況下,power值在80%或90%以上,認(rèn)為是可信的,可以接受的。
四、其他衡量方法
聽(tīng)完后是不是覺(jué)得AB沒(méi)有那么簡(jiǎn)單了,別擔(dān)心,上面的邏輯研發(fā)會(huì)從代碼層面搞定或Python里有現(xiàn)成的函數(shù),產(chǎn)品經(jīng)理梳理好邏輯就行。
另外還需要額外說(shuō)明下,AB實(shí)驗(yàn)的衡量方式還有“通過(guò)樣本估計(jì)整體”、“置信區(qū)間”兩種方法,不過(guò)多闡述,感興趣的可以自己百度下,效果殊途同歸。
好了,這次就先到這,由于太耗時(shí),下次在寫(xiě)一篇AB Test(下)講解下AB的衡量指標(biāo)以及AA組、AABB組的問(wèn)題。
作者:楠神,公眾號(hào)《音波楠神》
本文由 @楠神 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載
題圖來(lái)自 Unsplash,基于 CC0 協(xié)議
寫(xiě)的非常棒,點(diǎn)個(gè)贊,有個(gè)問(wèn)題想請(qǐng)教,既然有了AA試驗(yàn),還有必要做顯著性驗(yàn)證么? 如果要對(duì)A/B test的記過(guò)做顯著性驗(yàn)證,是否是通過(guò)A(A1、A2、A3、A4)& B(B1、B2、B3、B4)來(lái)求P值的方式作為判斷標(biāo)準(zhǔn),如果沒(méi)有顯著性差異,是否可以認(rèn)為是測(cè)試項(xiàng)沒(méi)有統(tǒng)計(jì)學(xué)上的差異,需要引入新的具有顯著差異測(cè)試項(xiàng)?(但對(duì)于只需要對(duì)有限方案做出最優(yōu)選擇的測(cè)試目的來(lái)說(shuō),AB等效,即隨便選一個(gè)就行,判斷其差異是否有意義)。
多謝認(rèn)可,針對(duì)你的疑問(wèn)有幾點(diǎn)解釋如下
1、AA實(shí)驗(yàn)的目的是為了驗(yàn)證AB中無(wú)法區(qū)分的是否是隨機(jī)波動(dòng)導(dǎo)致的問(wèn)題,AB實(shí)驗(yàn)中的P值指的是比較的兩者的差別是由機(jī)遇所導(dǎo)致的可能性大小,所以理論上P值也只是從概率學(xué)的角度給出的建議值,當(dāng)然如果P值很小,基本上大概率認(rèn)為是顯著性差異導(dǎo)致而不是隨機(jī)波動(dòng),但,也只是大概率而已
2、P值一般只是用來(lái)驗(yàn)證AB實(shí)驗(yàn)中的第一類錯(cuò)誤,即α錯(cuò)誤,你如果想驗(yàn)證AB到底有沒(méi)有問(wèn)題,你是不是需要繼續(xù)驗(yàn)證β錯(cuò)誤,即第二類錯(cuò)誤,一般用power值驗(yàn)證,也是概率層面的。所以可以看到,AB實(shí)驗(yàn)結(jié)果出來(lái)后,你需要數(shù)據(jù)分析來(lái)不斷驗(yàn)證和校驗(yàn)?zāi)愕慕Y(jié)果看看對(duì)不對(duì)
3、AA是純對(duì)照組,脫離概率角度,從生物學(xué)的單一變量的角度來(lái)輔助你驗(yàn)證AB實(shí)驗(yàn)的正確性
4、P值計(jì)算方法網(wǎng)上有很多,你也可以直接用Python中的現(xiàn)成的模塊計(jì)算
明白了,顯著性檢驗(yàn)檢目的是為了驗(yàn)證 此次A/B實(shí)驗(yàn)是否是因?yàn)殡S機(jī)因素影響而造成的實(shí)驗(yàn)結(jié)果,確保實(shí)驗(yàn)的有效性;AA實(shí)驗(yàn)是為了盡可能的消除這種隨機(jī)因素,確保單一變量的有效性。
是的。這里不方便直接貼微信,你可以先關(guān)注我的公眾號(hào) 后臺(tái)回我
好嘞
能否加個(gè)微信,以后能多請(qǐng)教。
很強(qiáng),增長(zhǎng)、策略產(chǎn)品運(yùn)營(yíng)必學(xué)知識(shí)點(diǎn)。
我有個(gè)疑問(wèn),應(yīng)該是備擇假設(shè)是想要證明的假設(shè)吧
對(duì)的,標(biāo)準(zhǔn)理論上是的。由于備擇假設(shè)是研究者希望通過(guò)收集證據(jù)予以支持的假設(shè),一般情況下,建立假設(shè)時(shí),先建立備擇假設(shè)在確定原假設(shè)。自己比較熟悉的情況下,自己能區(qū)分開(kāi)就行。不過(guò)還是多謝你的嚴(yán)謹(jǐn)