關(guān)于ABTest的總結(jié)與思考

AB實驗,一般經(jīng)常叫他的英文名,ABTest,是一種有效的對比測試方法。

通過對比兩個不同的方案,選擇其中較好的結(jié)果作為決策依據(jù)。

ABTest在自然科學與互聯(lián)網(wǎng)行業(yè)領域經(jīng)常被用于研究影響因素的效果優(yōu)化以及不同條件下的優(yōu)劣評估,是一種非常有效且嚴謹?shù)膶嶒灧椒ā?/p>

這一回我想與大家分享的是對于ABTest功能設計的總結(jié)以及一些問題引發(fā)出的思考。談及ABTest就不得不提及谷歌發(fā)布的《Overlapping Experiment Infrastructure:?More, Better, Faster Experimentation》這篇論文,互聯(lián)網(wǎng)行業(yè)中各類ABTest功能設計可以說是大多源自此文,因此在介紹ABTest一些功能設計基礎時本文也將引用谷歌這篇論文介紹的內(nèi)容。那么話不多說,旅途開啟。

01

ABTest

簡介前文已簡單提及ABTest的核心方法與作用。在互聯(lián)網(wǎng)行業(yè)中,常用于軟件亦或是網(wǎng)站功能的調(diào)優(yōu),通過抽樣進行實驗,來驗證方案是否有提升。

ABTest的原理其實并不難理解,保證除了需要實驗的參數(shù)因素不變,觀察實驗中的兩個方案各自的表現(xiàn)。從這里可以看出其實ABTest的本質(zhì)就是控制變量法。

在互聯(lián)網(wǎng)行業(yè)領域中,互聯(lián)網(wǎng)產(chǎn)品的載體一般為軟件或是網(wǎng)站,使用者為人。互聯(lián)網(wǎng)產(chǎn)品的ABTest即為針對人的實驗。一次ABTest的流程,如下。

關(guān)于ABTest的總結(jié)與思考

02

ABTest的功能設計

(一)實驗評估指標的確定

實驗的開始需要確認需要研究的命題,對于互聯(lián)網(wǎng)產(chǎn)品而言,一般都是功能流程、界面元素衍生的行為效果優(yōu)化以及探索性的效果分析。

在進行實驗前,需要確認對于研究的命題,該用什么指標來評估實驗的結(jié)果。

這個會影響到實驗中該制定怎樣的實驗方案。

現(xiàn)以網(wǎng)頁或者軟件中常見界面元素設計為例,在某個軟件或網(wǎng)站的推廣廣告素材中,現(xiàn)在設計了一版新的下載引導按鈕方案,如何定義結(jié)果效果呢?用數(shù)據(jù)數(shù)值來體現(xiàn)結(jié)果是非常直觀的,所以將方案的結(jié)果定義為一個代表結(jié)果的指標,此時這個指標可以是下載引導按鈕的人均點擊次數(shù)。

實驗評估指標的確定,需要嚴格地與命題相關(guān),且必須要能代表實驗流程的結(jié)果。

實驗命題是研究新的下載引導按鈕是否比現(xiàn)有的更好,則實驗流程則是需要將分別引入到兩個不同方案中,然后根據(jù)他們在不同方案中對按鈕的點擊事件進行埋點、事件上報,進而對數(shù)據(jù)進行對比分析。

(二)用戶分流

實驗方案是將用戶分別引入到兩個不同的方案中,為了保證實驗的準確性,需要確保除了下載按鈕的樣式不同,其他因素諸如界面中其他元素、用戶年齡、性別或地域等其他因素盡可能的在兩個方案中相同。此時可以隨機的將用戶分入兩個方案,即可相對的減少其他因素因偶然性集中,保證其他因素不會成為不平等的影響因素。用戶的分流是ABTest功能中非常重要的一步。

這里結(jié)合谷歌論文《Overlapping Experiment Infrastructure: More, Better, Faster Experimentation》(下稱谷歌論文)中的方法說明一下用戶分流。

首先是用戶流量的分配方式。

用戶分流,需要保證用戶進入某個實驗方案后,不會再進入另一個方案。一般來說一次AB實驗,即分為實驗組與對照組,實驗組即體驗到新方案的用戶組,對照組則為保持舊方案的用戶組,用新舊方案對比來觀察效果。

此時如果單純的對用戶進行簡單的隨機分配,則同一個用戶可能會在不同時間進入實驗組與對照組,讓本次實驗產(chǎn)生不具有參考性的行為。

另一方面則是簡單的隨機分配如果將用戶分配到兩個不同的實驗中,如果兩個實驗有一定的聯(lián)系,則同樣會對實驗產(chǎn)生影響。此時需要盡可能的保證用戶分配時,保證以下兩點。

  • 1. 用戶在一個實驗中,只進入一個用戶組
  • 2. 在多個實驗同時進行時,一個用戶只能參與一個實驗

為了保證以上兩個前提,直接對用戶隨機分配就行不通了。此時我們需要找到用戶的唯一標識來代表用戶,當發(fā)現(xiàn)用戶已經(jīng)進入某個實驗并成為了某個組的用戶后,則不再對他進行分配。

在谷歌論文中介紹了使用取模的方法,例如研究用戶群體時,可以對用戶ID進行取模1000(或者100也可以,原理都是對流量進行劃分,從中按序號取出對應序列的用戶);如果是研究使用設備時,則可以對設備ID+用戶ID組合進行取模。目前哈希取模是最為常用的方式。

(三)用戶分流的改進

用戶分配好以后,可以開始進行實驗了。比如說取模后0到19為用戶組一,20到59為用戶組二,60到99為用戶組三。

這樣一個實驗中就可以分配用戶組一為對照組,另外兩個用戶組作為實驗組。但是此時就有一個問題,如果我想同時進行多個測試,就得先根據(jù)測試的不同,先對方案分配用戶,然后對分配完的用戶再針測試中的方案對進行一次分配。

如果之后每一次進行同時多個實驗都要這么處理,顯然不夠靈活。在谷歌論文中,為了靈活處理同時多實驗的用戶分流,引入了流量域、層的概念。先了解一下谷歌論文中幾個名詞的定義。

  • :指的是流量被劃分后的各個部分。例如我們把用戶分成各50%的兩個部分,即分成了兩個域。
  • :指的是系統(tǒng)參數(shù)構(gòu)成的一個子集。例如從上例第一個50%的域中,我又將用戶分成了3類,各有一定占比,用UI、搜索結(jié)果和廣告結(jié)果區(qū)分。
  • 實驗:指的是在一個流量被劃分的部分中,對0個或者多個系統(tǒng)參數(shù)進行修改并請求處理的過程。這個可以簡單理解我開啟了一次AB實驗。

那么結(jié)合谷歌論文中的示例圖,以提升廣告點擊率為例說明一下這個分流思路。

關(guān)于ABTest的總結(jié)與思考

如圖(1)所示,根據(jù)UI、搜索結(jié)果以及廣告結(jié)果將所有分成3個層,此時就可以同時做這3個參數(shù)的實驗。

如圖(2)所示,引入了一個非重疊層的概念。圖(1)稱之為重疊層,此時一個用戶進入這個域后,可能會進入3個實驗中的其中一個。而當一個用戶進入圖(2)中左側(cè)的非重疊層,則只會進入一個實驗,例如專門留了20%的用戶進行專項的實驗,與此同時重疊層則由其他80%的用戶分成3個層,可以同時進行3個實驗。

使用如上方法對用戶分配后,如此一來就可以很靈活地進行各種測試。測試的設計人員,可以根據(jù)不同參數(shù)先劃分好域,然后再選擇對應的域進行用戶分層,進而設計實驗。有趣的是域和層是可以互相重疊的,意思就是除了可以在域中劃分層,層中還可以劃分域,例如在UI層中再分成各占50%用戶的兩個域,再進行實驗。這個方式看上去很靈活,不過是需要十分大的用戶量來支持的。假如我只有5000的日活,做一個實驗時將用戶對半分,如果再對其中一部分分層,可參與測試的用戶就非常有限了。所以說這里重要的是方法,在實際使用過程中還是簡潔點,也便于使用者理解。

除此之外,谷歌論文中還引入了一個啟動層(launch layer)的概念。

發(fā)布層與之前介紹的用于實驗的層略有不同,根據(jù)谷歌論文描述:

(1)一個啟動層處于默認域中,例如啟動層擁有這個層的全部流量

(2)啟動層是參數(shù)的一個獨立分區(qū),例如一個參數(shù)最多只能同時在一個啟動層和一個正常層中(在同一個域內(nèi))

(3)為了讓啟動層和正常層配合重疊起作用,啟動層中的實驗有不同的含義。具體而言就是啟動層為參數(shù)提供了另一種默認值。換一句話說,如果正常的實驗層中實驗的方案參數(shù)沒有實驗導致測試的參數(shù)修改覆蓋,此時啟動層中的實驗將使用指定的備用的參數(shù)值,使得啟動層的實驗就像一個普通的正常測試一樣。

如果正常的的實驗層中的方案參數(shù)進行了修改,此時啟動層也會使用該參數(shù),而不是系統(tǒng)默認值以及啟動層實驗中的值以上是谷歌論文中對于啟動層的說明。其實可以將其理解為有實驗進行時,啟動層會與其中一個保持一樣的測試方案,當實驗的測試參數(shù)修改,例如實驗不同的下載引導按鈕樣式改變了,啟動層中的樣式也會跟著改變。

我們可以將實驗結(jié)果較好且理想的實驗方案同步到啟動層,將其當作灰度測試,逐步提升參與實驗的用戶量,當確認效果全量開放以后刪除這個啟動層。啟動層可以當作區(qū)別于AB實驗這種對比測試性質(zhì)的一個驗證性實驗層,非常適用于灰度測試以及功能全量上線的流程。

(四)AA實驗

前面談了用戶的分流,那么是不是就可以馬上使用這個流程進行測試了呢?此時還不行。用戶分流時使用唯一標識進行哈希取模后,理論上說所有用戶進入不同實驗與用戶組的概率是一樣的,即如果我進行了一個實驗分成實驗組和對照組,這兩個組中的用戶性別之類的分布應該是均衡的,不會有顯著的區(qū)別。

如果用戶分流以后開始進行實驗流程了,反饋的數(shù)據(jù)結(jié)果是否沒有問題,例如埋點是否正常,上報的日志是否有誤進而導致最終計算的數(shù)據(jù)是否有誤這些問題,該如何進行驗證呢?

在AB實驗前,可以通過AA實驗來進行功能的驗證。

AA實驗與AB實驗非常類似,只不過AA實驗中并不需要將實驗方案中的參數(shù)值分成不同方案進行試驗,而是全部使用相同的參數(shù)值以及保證其他條件都一樣。在保證參與實驗的參數(shù)與條件一致的情況下,如果最后出現(xiàn)了數(shù)據(jù)的明顯異常,則證明AB實驗流程中某個環(huán)節(jié)存在問題,是用戶分流、埋點還是其他問題,此時就可以排查了。

03

實驗的數(shù)據(jù)分析當我進行了一次實驗,目標是測試一個手機應用中,不同推廣文案導致的圖片點擊率哪個更好,我得到了其中某個圖片的人均點擊數(shù)量優(yōu)于另外一個方案,是否就能將其當作結(jié)論馬上上線使用呢?

如果用戶量足夠多,越接近用戶總量,那么這個結(jié)論可靠性就越高。但如果只是抽樣進行了實驗,則結(jié)論未必可靠。這就涉及了實驗中是否存在偶然性、隨機性導致了實驗結(jié)果更好。為了確認結(jié)論是否因隨機性導致,此時需要采用假設檢驗的方案進行驗證。之所以要做這一步驗證,是因為AB實驗是對用戶抽樣以后進行測試,樣本是否能代表總體,樣本的數(shù)據(jù)結(jié)果是否有隨機性影響,都需要確認以后才可以下結(jié)論。

由于假設檢驗涉及諸多統(tǒng)計學知識,所以這一部分僅結(jié)合AB實驗進行說明,詳細的假設檢驗方法以及驗證方法朋友們可以學習概率論相關(guān)書籍的知識。

關(guān)于ABTest的總結(jié)與思考

假設檢驗的第一步,將你認為的結(jié)論作為原假設,與原假設對立的觀點作為備選假設。例如原假設為新的文案提升了廣告圖片的點擊率,備選假設則是沒有。

第二步則是選擇檢驗統(tǒng)計量。此時需要了解實驗評估指標的概率分布。

對于人均點擊次數(shù)這樣的均值指標,需要使用t檢驗,此時數(shù)據(jù)屬于t分布。t檢驗用于樣本含量小且總體標準差未知的正態(tài)分布,利用t分布推算差異產(chǎn)生的概率,進而比較兩個平均值差異是否顯著。如果差異顯著,此時方可下結(jié)論說,新的廣告文案提升了點擊效果,否則只能視為一次偶然。

而對于留存率、點擊率這類漏斗類的指標,需要使用卡方檢驗,此時數(shù)據(jù)屬于卡方分布??ǚ椒植加糜跈z查實際結(jié)果與期望結(jié)果之間何時存在顯著差別,主要有兩個用途,一個是檢驗擬擬合優(yōu)度,另一個則是檢驗兩個變量的獨立性??ǚ椒植纪ㄟ^卡方這個檢驗統(tǒng)計量來比較期望結(jié)果與實際結(jié)果之間的差別,進而得出觀察頻數(shù)極值的發(fā)生概率。

兩種檢驗方式有各自的檢驗統(tǒng)計量,需要根據(jù)實驗方案以及評估指標進行選擇。

第三步選擇確定拒絕域,拒絕域是拒絕原假設的檢驗統(tǒng)計量所有數(shù)值的集合,此時先要定義顯著性水平,顯著性水平表示希望在觀察結(jié)果的不可能達到多大時拒絕原假設,用α表示,常取5%或者1%,拒絕域的零界點用c標識,拒絕域則定義為小于顯著性水平的數(shù)值,即P(x<c)<α。

第四步為求p值,p值是某個小于或者等于拒絕域方向上的一個樣本數(shù)值的概率。p值可通過查詢概率表獲得。

第五步查看樣本結(jié)果是否位于拒絕域以內(nèi),若p值小于顯著性水平,則位于拒絕域以內(nèi)。

第六步做出決策,若樣本結(jié)果位于拒絕域以內(nèi),則有充分證據(jù)拒絕原假設,此時可以接受備選假設。

以上只是簡單的介紹假設檢驗的流程,其中設計的統(tǒng)計學知識與檢驗方法,限于本文主題與篇幅便不再多言,有興趣的朋友可以通過概率論相關(guān)的書籍學習。最重要的是,AB實驗得到數(shù)據(jù)后,并不是本次實驗的結(jié)束,如果沒有客觀的分析來佐證結(jié)論,光靠表象數(shù)據(jù)來決策的AB實驗,其實也就是一次拍腦袋決策罷了。

04

關(guān)于ABTest的一些思考通過ABTest功能設計以及假設檢驗,似乎就完成了一次實驗。不過對于實驗依然有一些實際操作中的問題值得關(guān)注。

(一)小樣本量與t檢驗

在實際進行ABTest的過程中,我們并不像谷歌一樣不愁流量,也許手上的產(chǎn)品就只有幾千甚至于幾百、幾十的用戶量,此時在用戶量較低,做完ABTest以后,是非常需要使用假設檢驗來確認結(jié)果的。

在學習假設檢驗的過程中,在很多教科書介紹t檢驗時,當樣本量小于30時,則為小樣本使用t檢驗;超過30則為大樣本,此時則使用Z檢驗。為什么是30?其實在做實驗的時候不要拘泥于30這個數(shù)字,因為這就是一個曾經(jīng)科技還不發(fā)達時難以使用大數(shù)據(jù)樣本的年代,對于t分布劃分的一個參考數(shù)據(jù)。當樣本量增加時,t分布會越來越接近正態(tài)分布,此時做假設檢驗時則可以直接使用正態(tài)分布代替t分布了。這就是30這個數(shù)字存在的意義,只不過是人為地劃定一個標準,來定義t檢驗的使用范圍。

通過t檢驗中30這個樣本數(shù)據(jù),我想分享給大家的是千萬不要陷入一個誤區(qū),大于30就是大樣本,此時因為樣本數(shù)據(jù)足夠大就不需要假設檢驗來驗證假設??陀^,是很難做到的。

(二)為什么不建議讓一個用戶進入多個實驗

在進行ABTest的過程中,也許會同時進行多個實驗,如果實驗的參數(shù)基本沒有什么影響,理論上說確實可以讓用戶同時參與多個實驗。但是這件事是功能策劃者以及實驗設計者難以保證的。

ABTest其實就是控制變量法,如果讓用戶進入了多個實驗,此時就是增加了實驗中的變量,為了嚴謹以及客觀的結(jié)論,用戶最好在同一時間只參與一個實驗,同時在實驗期間內(nèi)只進入成為一個用戶組的成員。

(三)關(guān)于數(shù)據(jù)時效性的關(guān)注

對于互聯(lián)網(wǎng)產(chǎn)品的ABTest而言,大多都會聚焦于以天為單位的核心行為與指標,因為人類就是以天為單位進行生活的。

我們常見的留存率、使用時長以及訪問次數(shù)這類行為類指標,都會因為夜間休息白天使用而產(chǎn)生影響,此時對于產(chǎn)品數(shù)據(jù)的使用會根據(jù)人的習慣而體現(xiàn)規(guī)律。此時實驗用天為單位的指標作為實驗評估指標的粒度是完全沒問題的。

但是也需要考慮更小粒度的數(shù)據(jù)來進行實驗。例如優(yōu)化廣告曝光點擊效果,此時以人均曝光次數(shù)、人均點擊次數(shù)為實驗評估指標,通過小時粒度觀察早上10點到晚上10點這12個小時的數(shù)據(jù),并不會比以天為粒度的數(shù)據(jù)缺少客觀性,因為看廣告這個行為的頻率與習慣與24小時運作的人類生活習慣并沒有非常強的關(guān)聯(lián),如果可以快速的獲取數(shù)據(jù)就可以更加快速的決策。

同理在進行廣告投放進行用戶增長時,觀察一天引入的用戶數(shù)量的同時,也可以觀察對比不同小時時間段的增長效果,可以有效的分析投放的時間影響。

甚至基于需求都還可以考慮到分鐘粒度的數(shù)據(jù)。所以在進行ABTest功能設計以及實驗時,對于數(shù)據(jù)粒度的需求和應用也需要充分考慮。

(四)最后的碎碎念

行文下來,不甚滿意。

我對于谷歌論文的理解并不是很深刻,也許還存在錯誤,希望讀者多多賜教。本想把假設檢驗也詳細說明,但是這部分豐富的數(shù)理統(tǒng)計以及概率論知識讓這部分內(nèi)容的介紹,并不是一篇文章里的章節(jié)能說清楚的,所以本文還是集中在ABTest這個主題上做分享介紹。

聽聞字節(jié)跳動與快手有非常強悍的ABTest平臺,在撰文搜集資料期間也閱讀了一些公司分享的公開文章,讓我對這后面的技術(shù)設計、產(chǎn)品功能設計更加著迷。

奈何沒有什么機會能參與實踐,是我的一大遺憾了。

總之不論文章好壞,希望能對ABtest感興趣的朋友們提供幫助。這本來是一篇寫給我自己的總結(jié),今天也分享與你。

祝你生活愉快。

文:聽雨少年 一個平凡的人,一個想變得有趣的人,一個愿意聆聽故事的人。

本文經(jīng)授權(quán)發(fā)布,不代表增長黑客立場,如若轉(zhuǎn)載,請注明出處:http://allfloridahomeinspectors.com/cgo/coo/76475.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
上一篇 2022-08-26 11:49
下一篇 2022-08-26 15:16

增長黑客Growthhk.cn薦讀更多>>

發(fā)表回復

登錄后才能評論