產(chǎn)品設(shè)計(jì)必不可少的A/B測(cè)試,真相在這里
A/B測(cè)試在產(chǎn)品優(yōu)化中的應(yīng)用方法是:在產(chǎn)品正式迭代發(fā)版之前,為同一個(gè)目標(biāo)制定兩個(gè)(或以上)方案,將用戶流量對(duì)應(yīng)分成幾組,在保證每組用戶特征相同的前提下,讓用戶分別看到不同的方案設(shè)計(jì),根據(jù)幾組用戶的真實(shí)數(shù)據(jù)反饋,科學(xué)的幫助產(chǎn)品進(jìn)行決策。
是什么
生物學(xué)以及其他學(xué)科中,總是會(huì)出現(xiàn)「控制變量法」來(lái)驗(yàn)證某種假設(shè)。通常有一組對(duì)照組、一組試驗(yàn)組,比如:
證明:酶在加熱到一定溫度后會(huì)失活。
第一次向反應(yīng)體系中加入加熱后的酶;第二次加入沒(méi)加熱的,看反應(yīng)現(xiàn)象。其中,第一次為實(shí)驗(yàn)組,第二次為對(duì)照組。
證明:吸煙會(huì)增大得肺癌的幾率。
我們可以選兩群位于同一地區(qū)、職業(yè)類似人,一群人吸煙,一群人不吸煙,進(jìn)行跟蹤調(diào)查,樣本容量要足夠大。其中吸煙的那組為實(shí)驗(yàn)組,不吸煙的為對(duì)照組。
以上算是A/B實(shí)驗(yàn)的引子和簡(jiǎn)單案例。到了真正的科研領(lǐng)域中,會(huì)有更嚴(yán)謹(jǐn)?shù)膽?yīng)用方法。而A/B測(cè)試被應(yīng)用到產(chǎn)品設(shè)計(jì)上,最早可查的是在2000年開始,Google的工程師才開始使用A/B測(cè)試進(jìn)行產(chǎn)品設(shè)計(jì)。
在產(chǎn)品設(shè)計(jì)中如何應(yīng)用,直接引用一段:
A/B測(cè)試在產(chǎn)品優(yōu)化中的應(yīng)用方法是:在產(chǎn)品正式迭代發(fā)版之前,為同一個(gè)目標(biāo)制定兩個(gè)(或以上)方案,將用戶流量對(duì)應(yīng)分成幾組,在保證每組用戶特征相同的前提下,讓用戶分別看到不同的方案設(shè)計(jì),根據(jù)幾組用戶的真實(shí)數(shù)據(jù)反饋,科學(xué)的幫助產(chǎn)品進(jìn)行決策。
「將用戶隨機(jī)均質(zhì)分組后,應(yīng)用不同的方案,觀察各組的數(shù)據(jù)反饋,以指標(biāo)的高低衡量方案的好壞?!?/p>
聽(tīng)起來(lái)沒(méi)什么問(wèn)題,對(duì)嗎?
說(shuō)實(shí)話,對(duì)于A/B測(cè)試是什么,大部分人對(duì)它的理解就停留在這個(gè)層面上,誤以為這就是A/B測(cè)試的全部了。這就跟梅超風(fēng)僅偷了《九陰真經(jīng)》的下冊(cè)一樣,真本是真本,就是不知道怎么打基礎(chǔ)結(jié)果路子全歪了。
我們可以用Excel來(lái)模擬試試,用隨機(jī)生成1000個(gè)樣本,再隨機(jī)分成對(duì)照組和試驗(yàn)組2組,然后去比較這2組的平均值——你會(huì)發(fā)現(xiàn)2組之間一定會(huì)有差異,不信你可以親自試試。
但這能說(shuō)明其中一組比另一組要好嗎?當(dāng)然不能。如果你把用戶分成兩組,用不同的方案監(jiān)測(cè)轉(zhuǎn)化率差別,并且試驗(yàn)組正巧比對(duì)照組效果好一點(diǎn),那你如何能證明,試驗(yàn)組更好不是因?yàn)檫@種隨機(jī)波動(dòng)產(chǎn)生的呢?
我曾經(jīng)不只一次聽(tīng)到過(guò)類似「指標(biāo)一會(huì)兒高一會(huì)兒低,測(cè)不出來(lái)效果」或者「跑了很久匯總比較,指標(biāo)變高了效果不錯(cuò)」這樣的說(shuō)法,甚至還是出自專業(yè)人士之口,實(shí)在讓人目瞪口呆,感嘆原來(lái)A/B居然還能這么做。
法 → 為什么
我們什么都沒(méi)干、什么方案都沒(méi)有實(shí)施,只是隨機(jī)分了一下組,試驗(yàn)組就比對(duì)照組更好或者更壞了。所以很顯然我們不能直接以結(jié)果指標(biāo)的高低衡量方案的好壞。因?yàn)闊o(wú)論怎么隨機(jī)分組,都會(huì)因?yàn)榉纸M產(chǎn)生一定的選擇偏差,導(dǎo)致數(shù)據(jù)出現(xiàn)波動(dòng),那我們應(yīng)該如何驗(yàn)證不同方案的好壞呢?
這時(shí)候,就輪到統(tǒng)計(jì)學(xué)的「假設(shè)檢驗(yàn)」出場(chǎng)了,這才是《九陰真經(jīng)》的上冊(cè),是練就絕世武功的基礎(chǔ)。
我們從最簡(jiǎn)單的拋硬幣的實(shí)驗(yàn)說(shuō)起。不過(guò)這次不是一個(gè)硬幣,是有兩枚硬幣。
有人宣稱他有特殊的拋硬幣技巧,應(yīng)用了他的技巧,可以讓硬幣更容易出現(xiàn)正面。那我們要如何才能證明他說(shuō)的是真的呢?人家又沒(méi)有說(shuō)次次都是正面,就算10次拋出來(lái)都是反面也可以說(shuō)是狀態(tài)不好發(fā)揮失常。
怎么辦?我們可以用逆向思維反過(guò)來(lái)想,如果他說(shuō)的是真的,那么用他的技巧拋硬幣就不太可能經(jīng)常拋出反面,更不可能拋100次都是反面。也就是說(shuō),不可能發(fā)生的事件發(fā)生了,那他就在說(shuō)假話。
用統(tǒng)計(jì)學(xué)語(yǔ)言來(lái)描述,就是:對(duì)于一個(gè)假設(shè),在這個(gè)假設(shè)成立時(shí),一個(gè)極小概率的事件發(fā)生了,就可以推翻這個(gè)這假設(shè),并選擇這個(gè)假設(shè)的反面。一般把待證偽的假設(shè)稱為「零假設(shè)H?」 ,把想要證明的假設(shè)叫做「對(duì)立假設(shè)H?」。
這就是「反證法」,一條假設(shè)永遠(yuǎn)不可能被證明,只可能被證偽。
我們想證明「他的技巧拋硬幣更容易出現(xiàn)正面(對(duì)立假設(shè))」,可以先假設(shè)「他的技巧不能讓拋硬幣更容易出現(xiàn)正面(零假設(shè))」,然后尋找在零假設(shè)成立時(shí)的極小概率事件(比如用他的技巧拋100次硬幣比正常拋硬幣,正面出現(xiàn)的頻次高30%),當(dāng)這個(gè)極小概率事件被我們觀測(cè)到的時(shí)候,就推翻了零假設(shè),從而證明對(duì)立假設(shè)。
這里對(duì)于多小的概率是「極小概率」,完全是人為規(guī)定的,一般常用的是5%和1%。這個(gè)值就是所謂的「顯著性水平」ɑ。假定我們拋10次,我們這一批10次觀測(cè)到的結(jié)果發(fā)生的概率就是p值,比如
拋10次結(jié)果都是正面,這種情況發(fā)生的概率是:
當(dāng)我們觀測(cè)到這樣一個(gè) p ≤ ɑ 時(shí),就可以推翻零假設(shè),從而證明「他的技巧拋硬幣更容易出現(xiàn)正面(對(duì)立假設(shè))」。
現(xiàn)在,重點(diǎn)來(lái)了:我們可以把「新的產(chǎn)品設(shè)計(jì)方案」當(dāng)作「他的特殊技巧」,把「每有一個(gè)用戶」當(dāng)作「每一次拋硬幣」,把「用戶被轉(zhuǎn)化」當(dāng)作「硬幣為正面」,把「用戶未被轉(zhuǎn)化」當(dāng)作「硬幣為反面」,瞬間就會(huì)理解如何在產(chǎn)品設(shè)計(jì)中進(jìn)行科學(xué)的A/B測(cè)試。
不同的是,我們已經(jīng)根據(jù)日常經(jīng)驗(yàn)建立了對(duì)拋硬幣「轉(zhuǎn)化率」和「波動(dòng)水平」的大致預(yù)期。簡(jiǎn)單來(lái)講,就是如果特殊技巧拋硬幣的「轉(zhuǎn)化率」只是51%、52%的水平,我們顯然會(huì)懷疑特殊技巧的有效性,而如果能到60%,我們幾乎可以認(rèn)定特殊技巧確實(shí)有效。
而對(duì)于產(chǎn)品「轉(zhuǎn)化率」和「波動(dòng)水平」很難建立同樣的預(yù)期?!皋D(zhuǎn)化率」從10%到12%,究竟是日常波動(dòng),還是巨大提升,在不進(jìn)行統(tǒng)計(jì)分析時(shí)是根本無(wú)法判斷的。
術(shù) → 怎么做
統(tǒng)計(jì)理論展開講就太復(fù)雜了,所以我只介紹如何應(yīng)用現(xiàn)成的理論和公式。
我們?cè)诋a(chǎn)品設(shè)計(jì)時(shí)設(shè)計(jì)的A/B測(cè)試屬于「雙獨(dú)立樣本t假設(shè)檢驗(yàn)」,「獨(dú)立」的意思是A方案下樣本和B方案下的樣本表現(xiàn)是各自獨(dú)立互不影響的。比如拋硬幣案例里普通人拋硬幣和他用特殊技巧拋硬幣,結(jié)果互不影響。t沒(méi)有什么特殊含義,如果是周樹人用筆名發(fā)表了這套檢驗(yàn)理論,那t檢驗(yàn)就會(huì)被叫做魯迅檢驗(yàn)了。
按照「雙獨(dú)立樣本t假設(shè)檢驗(yàn)」的方法,需要計(jì)算以下幾個(gè)統(tǒng)計(jì)量:
(1)每組樣本均值x
(2)每組樣本方差S
(3)計(jì)算自由度(基于雙樣本異方差假設(shè))
(4)查表取得ɑ/2(雙尾檢驗(yàn))下的t-value,我們當(dāng)然不會(huì)真去查表,直接使用Excel函數(shù)=T.INV.2T(ɑ/2,df)
然后就可以套公式計(jì)算置信區(qū)間了:
之所以用雙尾檢驗(yàn)的t-value,是因?yàn)榱?xí)慣做的零假設(shè)是「A和B之間沒(méi)有變化」,對(duì)立假設(shè)是「A和B之間有變化」,通過(guò)實(shí)驗(yàn)判斷是否能推翻零假設(shè),再根據(jù)結(jié)果的正負(fù)判斷是變高還是變低。
看完上面的公式是不是感覺(jué)好復(fù)雜?沒(méi)關(guān)系,有簡(jiǎn)單的方法。
如果只想知道p-value以驗(yàn)證實(shí)驗(yàn)結(jié)果是否統(tǒng)計(jì)顯著,而不需要計(jì)算置信區(qū)間,可以用Excel函數(shù)
=T.TEXT(array1, array2, 2, 3)
如果一定要計(jì)算置信區(qū)間,可以用RStudio:
t.test(array1, array2, conf.level = 0.95)
一步出結(jié)果,夠方便了吧。
應(yīng)用的前提條件:
應(yīng)用上述公式,是有前提條件的。簡(jiǎn)單來(lái)講就是樣本獨(dú)立,且要服從正態(tài)分布,并且兩總體方差不等(異方差)。如果樣本不獨(dú)立,比如同一批病人用藥前和用藥后的效果檢驗(yàn),就要使用配對(duì)t檢驗(yàn)。如果樣本獨(dú)立但總體方差相等,就要用另外的一套公式。
那豈不是應(yīng)用之前還要做很多分析判斷該用哪個(gè)公式?
其實(shí)不然。根據(jù)統(tǒng)計(jì)學(xué)的中心極限定理,在大樣本下,樣本均值的抽樣分布呈正態(tài)分布。而我們做的A/B測(cè)試,幾乎都是獨(dú)立的十幾萬(wàn)、幾十萬(wàn)的樣本,并且可以假定A/B總體異方差。
一點(diǎn)提示:
關(guān)于假設(shè)檢驗(yàn)的計(jì)算,能很容易地找到很多資料。不過(guò)質(zhì)量參差不齊,可以用一個(gè)粗暴的辦法識(shí)別質(zhì)量過(guò)得去的:
- 統(tǒng)計(jì)學(xué)中的一般表示方法,樣本均值是x-bar,總體均值是μ,樣本標(biāo)準(zhǔn)差是S,總體標(biāo)準(zhǔn)差是σ,樣本個(gè)數(shù)是n,總體個(gè)數(shù)是N,用反了雖然不能算錯(cuò)但就不專業(yè)了;
- 求樣本方差時(shí)分母是自由度n-1而不是樣本個(gè)數(shù)n,一般我們做的A/B試驗(yàn)都是大樣本,用哪個(gè)當(dāng)分母沒(méi)什么區(qū)別,但如果真碰到小樣本(不足30個(gè))的實(shí)驗(yàn),區(qū)別就很大了;
能保證以上兩點(diǎn)都很嚴(yán)謹(jǐn)?shù)馁Y料,基本都是有統(tǒng)計(jì)學(xué)背景、可以確定質(zhì)量過(guò)得去了。道 → 憑什么
為什么要進(jìn)行A/B試驗(yàn)?如果最后都要A/B試驗(yàn)來(lái)做決策,那還要產(chǎn)品經(jīng)理做什么?
一定會(huì)有老板喜歡這樣發(fā)問(wèn)。對(duì)于這樣的老板,我們可以把俞軍大神請(qǐng)出來(lái)猛烈地拍回去。
受俞軍產(chǎn)品方法論的啟發(fā),我的理解是:
每一款產(chǎn)品,都有獨(dú)特的、與其他產(chǎn)品不完全相同的用戶群體,每一次A/B測(cè)試,都是對(duì)于當(dāng)下用戶更進(jìn)一步的理解,是對(duì)「用戶模型」的又一次完善。
一次與預(yù)期結(jié)果相悖的A/B實(shí)驗(yàn),也是成功的實(shí)驗(yàn),因?yàn)樗屛覀兡芨恿私饽繕?biāo)用戶的偏好,了解他們喜歡什么、不喜歡什么。說(shuō)白了,A/B測(cè)試是讓我們深刻理解用戶的科學(xué)工具,而不單單只是衡量產(chǎn)品方案好壞的天平。
而這一點(diǎn),是用戶訪談所回答不了的,也不是產(chǎn)品經(jīng)理和設(shè)計(jì)師們靠個(gè)體的經(jīng)驗(yàn)和認(rèn)知能回答的。因?yàn)椤赣脩舨皇亲匀蝗?,是需求的集合」。只有在統(tǒng)計(jì)結(jié)果下,我們才能認(rèn)清「用戶群體」的真面目。對(duì)于C端用戶,應(yīng)該用統(tǒng)計(jì)的思維去理解。不要「你覺(jué)得」,也不要「我覺(jué)得」。
參考資料:
- 概率論與數(shù)理統(tǒng)計(jì),陳希孺
- 面向數(shù)據(jù)科學(xué)家的實(shí)用統(tǒng)計(jì)學(xué),[美] 彼得·布魯斯 / 安德魯·布魯斯
- 俞軍產(chǎn)品方法論,俞軍
- 數(shù)據(jù)驅(qū)動(dòng)設(shè)計(jì):A/B測(cè)試提升用戶體驗(yàn), [美]羅謝爾·肯
- https://zh.wikipedia.org/wiki/%E5%AD%B8%E7%94%9Ft%E6%AA%A2%E9%A9%97,學(xué)生t檢驗(yàn)
本文由 @Guibin 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來(lái)自Unsplash,基于CC0協(xié)議
需要頻繁對(duì)不停在迭代的算法模型搭載在產(chǎn)品后對(duì)產(chǎn)品的影響進(jìn)行評(píng)估,但是總是不是太得法,看到這篇文章后有很多啟發(fā),想進(jìn)一步再探討探討。