電商領(lǐng)域A/B實(shí)驗(yàn)平臺(tái)建設(shè)方法
一、A/B 實(shí)驗(yàn)應(yīng)用
A/B 實(shí)驗(yàn)應(yīng)用作為論證的黃金方法,目前已經(jīng)成為一個(gè)必然的選擇,但是實(shí)際上如何在企業(yè)內(nèi)部去建設(shè)實(shí)驗(yàn)平臺(tái),還充滿了很多選擇。目前的實(shí)驗(yàn)平臺(tái),包括在線實(shí)驗(yàn)的數(shù)量,已經(jīng)成為衡量互聯(lián)網(wǎng)公司體量、業(yè)務(wù)量以及用戶量的一個(gè)隱藏指標(biāo)。一些大廠的實(shí)驗(yàn)平臺(tái),同時(shí)在線實(shí)驗(yàn)數(shù)量超過(guò) 10000,可能每個(gè)月新建的實(shí)驗(yàn)數(shù)量都會(huì)大于 1000。
1、A/B 實(shí)驗(yàn)是論證的黃金方法
?上圖列出了一些數(shù)據(jù)分析方法,比如案例研究、觀察研究、類實(shí)驗(yàn)、隨機(jī)控制實(shí)驗(yàn),以及統(tǒng)合分析,即結(jié)合隨機(jī)實(shí)驗(yàn)和觀察研究去做一些強(qiáng)分析。
這幾層分析方法中存在一些通用的因素,首先,樣本是定向的樣本還是隨機(jī)的樣本。第二個(gè)是有沒(méi)有控制,比如最下面的案例研究是沒(méi)有控制的,它可能針對(duì)一個(gè)群體做分析,而 A/B 實(shí)驗(yàn)天然會(huì)分成對(duì)照組和實(shí)驗(yàn)組,是有控制的。最后一個(gè)就是實(shí)驗(yàn)結(jié)論是否可以復(fù)現(xiàn),是否科學(xué)。這三個(gè)因素的不同導(dǎo)致了整個(gè)分析方法可信度的差異。從下往上,可行度逐步提升。A/B 實(shí)驗(yàn)是分析成本最低的一個(gè)方法,可以通過(guò)工程化的方法來(lái)提效,通過(guò) A/B 產(chǎn)品化的方式來(lái)降低使用門檻。?
?A/B 實(shí)驗(yàn)有三個(gè)主要的特點(diǎn):
(1)第一個(gè)是先驗(yàn)性,用事實(shí)說(shuō)話,可以通過(guò)小流量低成本來(lái)得到一些結(jié)論。
(2)第二個(gè)是科學(xué)性,實(shí)驗(yàn)分析時(shí)會(huì)用到假設(shè)檢驗(yàn)的方法,相對(duì)來(lái)說(shuō)是比較科學(xué)的。
(3)第三個(gè)是推斷性,通過(guò)隨機(jī)流量控制可以排除混雜因素的干擾,聚焦到我們的控制變量和實(shí)驗(yàn)?策略上。
2、實(shí)驗(yàn)平臺(tái)選擇
整個(gè) A/B 平臺(tái)的建設(shè),主要有兩個(gè)思路,第一個(gè)就是直接采購(gòu)第三方平臺(tái);另外一個(gè)就是自建平臺(tái)。
國(guó)內(nèi)目前比較好的第三方產(chǎn)品,比如火山引擎,無(wú)論是產(chǎn)品 feature 還是整個(gè)應(yīng)用情況都比較好,因?yàn)樗腔谧约簝?nèi)部的最佳實(shí)踐。另外騰訊也開(kāi)放了第三方平臺(tái)。熱云、神策數(shù)據(jù)也提供了 SaaS 的實(shí)驗(yàn)平臺(tái)。國(guó)外的廠商也比較多,像 VWO 實(shí)驗(yàn)測(cè)試平臺(tái)、谷歌的 Optimize、以及 Optimizely 等等,都是一些比較有競(jìng)爭(zhēng)力的產(chǎn)品。
第三方平臺(tái)通常適用于用戶體量比較小,數(shù)據(jù)跟分析的基建還相對(duì)比較薄弱的公司。通過(guò)第三方平臺(tái)的使用,提升公司內(nèi)部數(shù)據(jù)以及分析的認(rèn)知。
用戶行為分析和 A/B 實(shí)驗(yàn)是緊密聯(lián)系的,因?yàn)樗鼈兌际腔谟脩舻男袨?,讓用戶?lái)告訴我們答案,包括底層的一些分析引擎、存儲(chǔ)引擎的等基建也都是可以復(fù)用的,這也是火山引擎的 A/B 測(cè)試和分析能力,和用戶行為分析能力都是緊密耦合在一起的原因。
對(duì)于公司自建平臺(tái),國(guó)內(nèi)主流的一些互聯(lián)網(wǎng)廠商也都有很好的實(shí)驗(yàn)平臺(tái),比如滴滴、美團(tuán)、阿里、網(wǎng)易、新浪微博等,甚至有一些公司內(nèi)部有多個(gè)實(shí)驗(yàn)平臺(tái)。國(guó)外的微軟、谷歌也都有非常有特色的實(shí)驗(yàn)平臺(tái)。這些公司也都是用戶體量比較大,實(shí)驗(yàn)場(chǎng)景多,數(shù)據(jù)分析基礎(chǔ)比較強(qiáng)的公司。在自建實(shí)驗(yàn)平臺(tái)的時(shí)候,如果公司業(yè)務(wù)體量大的話,不同的業(yè)務(wù)可能結(jié)合自身的需求都建過(guò)一些實(shí)驗(yàn)平臺(tái)了,這時(shí)候還要推動(dòng)平臺(tái)從 N 到 1 的建設(shè)。在新建平臺(tái)時(shí),就要考慮業(yè)界的最佳實(shí)踐,同時(shí)還要考慮業(yè)務(wù)方的獨(dú)特訴求。這樣在公司內(nèi)部推行實(shí)驗(yàn)平臺(tái)的時(shí)候才能順暢,并且最終可能變成全公司通用的實(shí)驗(yàn)平臺(tái)。
二、更多業(yè)務(wù)應(yīng)用
接下來(lái)介紹更多業(yè)務(wù)應(yīng)用。通常我們可以從實(shí)驗(yàn)類型切入,比如產(chǎn)品類的實(shí)驗(yàn)、服務(wù)端的實(shí)驗(yàn),算法模型或者策略的實(shí)驗(yàn)、運(yùn)營(yíng)類的實(shí)驗(yàn)或者營(yíng)銷類的實(shí)驗(yàn)等等,這些都需要在實(shí)驗(yàn)平臺(tái)中有比較好的支持。
1、流量
在實(shí)驗(yàn)中有三個(gè)要素,第一個(gè)就是流量,沒(méi)有流量也就不需要做實(shí)驗(yàn)了,流量代表場(chǎng)景參與的用戶??赡懿煌臉I(yè)務(wù),不同的實(shí)驗(yàn)類型,對(duì)整個(gè)流量的抽象是不同的。第二個(gè)是干預(yù),也就是控制。第三個(gè)是分析,所使用的業(yè)務(wù)指標(biāo)能夠體現(xiàn)出做實(shí)驗(yàn)的目的。
上圖是谷歌重疊實(shí)驗(yàn)框架的一個(gè)簡(jiǎn)單示意圖,分成了 ABCD 4 種不同復(fù)雜度的框架,可以結(jié)合自己的業(yè)務(wù)實(shí)際情況來(lái)選擇,如果公司業(yè)務(wù)比較多,比如有電商、內(nèi)容、游戲和支付等,就需要 C 或者 D 這種形態(tài)才能夠比較好的滿足業(yè)務(wù)需求。
2、聯(lián)合實(shí)驗(yàn)
?接下來(lái)講一下聯(lián)合實(shí)驗(yàn)的幾種場(chǎng)景。
其中一種是貫通實(shí)驗(yàn),在同一個(gè)業(yè)務(wù)的上下游之間做實(shí)驗(yàn),比如業(yè)務(wù)的客戶端、前端、服務(wù)端、算法測(cè),整體要做一個(gè)順序的實(shí)驗(yàn)。通常的做法是,在前端做實(shí)驗(yàn),通過(guò)傳參的方式來(lái)拉動(dòng)后端去做響應(yīng),這是一種比較簡(jiǎn)單的實(shí)驗(yàn)方法。
第二種是聯(lián)合實(shí)驗(yàn),比如搜廣推場(chǎng)景,通常會(huì)分為召回、粗排、精排等環(huán)節(jié)。在做實(shí)驗(yàn)的時(shí)候都會(huì)按實(shí)驗(yàn)層來(lái)做實(shí)驗(yàn)的控制。如果想做層與層之間的組合實(shí)驗(yàn),通常就叫聯(lián)合實(shí)驗(yàn),比如一個(gè)召回加排序的實(shí)驗(yàn),可能有些排序算法針對(duì)某些召回隊(duì)列是有效的,就可以做這種組合實(shí)驗(yàn)。如上圖中的例子,層 a 和層 b 都在獨(dú)立的做實(shí)驗(yàn),如果想做 a 和 b 的聯(lián)合實(shí)驗(yàn),就需要建立一個(gè)虛擬的聯(lián)合層,原有的層 a 和層 b 的流量都會(huì)縮水,這是對(duì)業(yè)務(wù)影響最小的一種實(shí)現(xiàn)方式。
第三種實(shí)驗(yàn)是跨業(yè)務(wù)的聯(lián)合實(shí)驗(yàn),比如搜廣推場(chǎng)景下如果想用 1% 的用戶做免廣告測(cè)試,就是跨業(yè)務(wù)的聯(lián)合實(shí)驗(yàn)。也可以通過(guò)類似于優(yōu)先層,或者關(guān)聯(lián)實(shí)驗(yàn)等方式來(lái)實(shí)現(xiàn)。?
所以在實(shí)際的實(shí)驗(yàn)類型設(shè)計(jì)和實(shí)驗(yàn)方案設(shè)計(jì)的過(guò)程中,要靈活考慮不同的業(yè)務(wù)訴求。
3、樣本獨(dú)立性
?接下來(lái)介紹樣本獨(dú)立性。在 O2O 業(yè)務(wù)中,比如直播、短視頻這種涉及到生產(chǎn)者和消費(fèi)者雙邊市場(chǎng)的場(chǎng)景下,往往樣本的獨(dú)立性會(huì)受到一些影響,就不能很好地實(shí)現(xiàn)隨機(jī)控制。
對(duì)于涉及到雙邊甚至多邊的場(chǎng)景,比如買家、賣家以及騎手三方,如果很難滿足樣本獨(dú)立性,我們會(huì)通過(guò)類似版本翻轉(zhuǎn)實(shí)驗(yàn)來(lái)做一些持續(xù)的觀測(cè),也就是上個(gè)時(shí)間片用策略一,下個(gè)時(shí)間片用策略二,做足夠多的翻轉(zhuǎn),然后再總體上來(lái)看策略一與策略二的優(yōu)劣。比如運(yùn)力調(diào)度策略,如果全局有多個(gè)調(diào)度策略同時(shí)生效,調(diào)度就亂了,可以通過(guò)給每個(gè)調(diào)度策略分一個(gè)時(shí)間片讓其生效的方法來(lái)論證其優(yōu)劣。
第二種是時(shí)間片輪轉(zhuǎn)實(shí)驗(yàn),在 O2O 場(chǎng)景中也比較常見(jiàn),比如快遞或者外賣的 ETA(Estimated Time of Arrival)場(chǎng)景,我們可以通過(guò)時(shí)間片翻轉(zhuǎn)的方式來(lái)消除時(shí)間這種混雜因素的影響。因?yàn)樵谶@種場(chǎng)景下,做 ETA 預(yù)估時(shí),整個(gè)運(yùn)力下所有的用戶之間是互相爭(zhēng)搶的,所以可以通過(guò)類似實(shí)驗(yàn)片輪轉(zhuǎn)的方式來(lái)消除這種影響。當(dāng)然也有雙邊控制這種實(shí)驗(yàn)。因?yàn)樵谧鰧?shí)驗(yàn)的時(shí)候會(huì)有很重的網(wǎng)絡(luò)效應(yīng),比如分享這種沒(méi)有代價(jià)的溢出效應(yīng)。還有一種情況是剛才講到的運(yùn)力在乘客之間的擠占效應(yīng),也會(huì)有一些影響。
針對(duì)不太敏感的場(chǎng)景,我們會(huì)做一些雙邊的控制,如果是一些有類似擠占效應(yīng)的強(qiáng)敏感場(chǎng)景,我們也會(huì)有類似于合成控制法等一些其他的方法來(lái)滿足樣本獨(dú)立性假設(shè),避免樣本出現(xiàn)干擾,以至影響最后的實(shí)驗(yàn)結(jié)論。上面這三種案例,本質(zhì)都是確保分流的隨機(jī)性從而控制混雜因素對(duì)實(shí)驗(yàn)結(jié)論的干擾。?
三、更快系統(tǒng)集成
這一部分將介紹如何更好地做工程集成。在做系統(tǒng)功能提升的時(shí),通常有 4 個(gè)議題:
(1)實(shí)驗(yàn)配置怎么分發(fā)?
(2)怎么做分流的執(zhí)行服務(wù)?
(3)實(shí)驗(yàn)的參數(shù)怎么與平臺(tái)和業(yè)務(wù)代碼做集成?
(4)實(shí)驗(yàn)日志怎么更好地支持分析師快速分析?
重點(diǎn)主要在后面兩部分,因?yàn)榍皟刹糠值膶?shí)驗(yàn)平臺(tái)并沒(méi)有太多獨(dú)創(chuàng)的東西。關(guān)于配置,要么平臺(tái)自建配置中心然后做分發(fā);要么依托公司的配置中心做分發(fā)。分流服務(wù)這塊其實(shí)沒(méi)有太多差異點(diǎn),既然做實(shí)驗(yàn)平臺(tái),比如 API、SDK、UDF 這些能力都是要具備的,下面重點(diǎn)講一下參數(shù)集成和實(shí)驗(yàn)日志。
1、實(shí)驗(yàn)參數(shù)
對(duì)參數(shù)集成的理解分為幾個(gè)層面。
?首先是參數(shù)如何控制。有三種控制方法,第一種是基于變體來(lái)控制,直接就是分組的名稱,這種控制法比較簡(jiǎn)單,靈活性相對(duì)略差;第二種是基于參數(shù)來(lái)控制,參數(shù)有 key-value,比較適合于多選項(xiàng)的實(shí)驗(yàn)控制,而且在后續(xù)也可以很好地做實(shí)驗(yàn)參數(shù)的推全控制;第三種是基于配置的控制,所謂的配置是一系列參數(shù)的集合,往往基于配置來(lái)控制的時(shí)候在實(shí)驗(yàn)平臺(tái)整合時(shí)會(huì)有一些優(yōu)勢(shì)。因?yàn)槟承I(yè)務(wù)方過(guò)往都已經(jīng)有自己的實(shí)驗(yàn)機(jī)制了,而且整個(gè)實(shí)驗(yàn)配置也打包變成了一個(gè)配置。
如果是一個(gè)新平臺(tái)切入,比較好的對(duì)接方式是支持基于配置的方式來(lái)控制,這樣可以把一些打包的配置放到平臺(tái)上,然后分發(fā)給他,同時(shí)也可以去開(kāi)發(fā)一些額外的特性,比如做一些沖突檢測(cè),或是更好的工程適配等等。
第二個(gè)層面是參數(shù)的優(yōu)先級(jí),比如實(shí)驗(yàn)平臺(tái)的一個(gè)默認(rèn)配置,再往上一個(gè)優(yōu)先級(jí)可能是普通實(shí)驗(yàn)中的配置。如果想再增加優(yōu)先級(jí),類似于在整個(gè)流量框架里,還可以給某些層去賦一個(gè)更高的權(quán)限,在這種層上的實(shí)驗(yàn)參數(shù)可以有更高的權(quán)限。
當(dāng)然,隨著實(shí)驗(yàn)越來(lái)越多,會(huì)發(fā)現(xiàn)好多 APP 包體會(huì)越來(lái)越大,在包體瘦身的過(guò)程中,做代碼推全也是一個(gè)很好的手段,我們也會(huì)做一些檢測(cè),讓 APP 的包體能夠有效地減小。?
2、實(shí)驗(yàn)日志
?實(shí)驗(yàn)日志對(duì)分析師來(lái)說(shuō)是非常重要的,我們提供了兩種實(shí)驗(yàn)日志。
一種是分流日志,一般適用于服務(wù)端,因?yàn)榉?wù)端一般來(lái)說(shuō)可以近似的理解為請(qǐng)求即觸發(fā),服務(wù)端也不會(huì)做太多的大規(guī)模緩存機(jī)制。
另外一種是觸發(fā)日志,比較適合于客戶端,一般來(lái)說(shuō)為了減少實(shí)驗(yàn)平臺(tái)的交互會(huì)采用緩存的機(jī)制,或者是我們很多實(shí)驗(yàn)配置,希望 APP 啟動(dòng)的時(shí)候就能夠生效,必須要做緩存。所以在客戶端會(huì)有一些緩存的機(jī)制,有緩存以后,如果我們拿到實(shí)驗(yàn)配置以后就上報(bào)的話,往往進(jìn)組的樣本量就被夸大了,所以這時(shí)候我們會(huì)做一些觸發(fā)的控制。比如在做實(shí)驗(yàn)配置的時(shí)候,配置一些埋點(diǎn)事件,埋點(diǎn)事件觸發(fā)以后,才認(rèn)為這個(gè)事件被觸發(fā)了,這樣可以更精準(zhǔn)的拿到實(shí)驗(yàn)效果。
上圖是一個(gè)簡(jiǎn)單的示意圖,涉及到不同實(shí)驗(yàn)日志類型是怎么產(chǎn)生的,怎么傳輸?shù)?,怎么匯聚的,當(dāng)然涉及到日志的匯聚,包括后續(xù)的一個(gè)指標(biāo)分析,大概我們就會(huì)有一個(gè)?數(shù)據(jù)的管道,比如實(shí)驗(yàn)日志表,包括用戶行為表,包括逐層聚合后有更多業(yè)務(wù)數(shù)據(jù)產(chǎn)生的聚合表。一般來(lái)說(shuō)聚合包括到分組粒度的聚合,到用戶粒度的聚合等等,支持后續(xù)不同情況的分析。
四、更好實(shí)驗(yàn)分析
實(shí)驗(yàn)分析的訴求是要保證實(shí)驗(yàn)分析是可信的和科學(xué)的。為了保證分析是科學(xué)可信的,除了前面講的重疊流量框架,能夠保證整個(gè)流量是均勻與置信的以外,我們也會(huì)有適合于不同指標(biāo)的各種檢驗(yàn)方法。
1、流量質(zhì)檢
首先講一下實(shí)驗(yàn)開(kāi)始之前的 Pre AA 檢驗(yàn)。不同流量平臺(tái)整個(gè)流量的感知是不一樣的,流量管理方式也不一樣。如果大家用過(guò)火山引擎,會(huì)發(fā)現(xiàn)它其實(shí)是一種弱感知的狀態(tài)?;趯?shí)驗(yàn)的需求,你可以創(chuàng)建無(wú)限的流量層,而且這個(gè)層對(duì)你是隱藏的,但一般來(lái)說(shuō)內(nèi)部自建的話,我們會(huì)把層都抽象出來(lái)。因?yàn)槌橄蟪鰜?lái)有一些好處,比如像前面講的聯(lián)合實(shí)驗(yàn)?zāi)欠N場(chǎng)景,可能我們?cè)谒褟V推的召回排序的時(shí)候,要做組合實(shí)驗(yàn),如果沒(méi)有一個(gè)很強(qiáng)的層感知就會(huì)無(wú)從組合。業(yè)界有些公司將流量層叫做 World/Flight/Cell 等等,又或者簡(jiǎn)單就叫作 layer。所以流量管理的強(qiáng)感知和弱感知,是未來(lái)大家要做實(shí)驗(yàn)平臺(tái)迭代需要考慮的點(diǎn)。
對(duì)于 Pre AA 驗(yàn)證,上圖中右側(cè)展示了我們實(shí)現(xiàn)的一個(gè)截圖。如果 Pre AA 流量是平的,按照統(tǒng)計(jì)理論,對(duì)它做重復(fù)采樣,應(yīng)該發(fā)現(xiàn) AA 之間的 diff 顯著程度,p_value 分布應(yīng)該符合均勻分布。如果不平的話,就要懷疑整個(gè)分流是否是不均勻的。分流不均勻有兩種情況,一種是整個(gè) layer 在做哈希分流時(shí),seed 是一個(gè)壞種子,這個(gè)種子不太好,這時(shí)就需要選一個(gè)新的種子來(lái)保證流量分流的均勻性;另一種是 seed 是好的,實(shí)驗(yàn)層上也有一些實(shí)驗(yàn)在跑了,在使用剩余的流量做實(shí)驗(yàn)的時(shí)候,又出現(xiàn)了 AA 不平,其實(shí)在做實(shí)驗(yàn)的時(shí)候,會(huì)存在實(shí)驗(yàn)的記憶效應(yīng),比如如果前期剛剛結(jié)束了一個(gè)實(shí)驗(yàn),這個(gè)實(shí)驗(yàn)相對(duì)來(lái)說(shuō)比較正向的組又分配到新實(shí)驗(yàn)的某些組里,它可能本身天然就是有偏的,這時(shí)候我們也可以做 Pre AA 的這種驗(yàn)證,但是這種驗(yàn)證其實(shí)已經(jīng)不是在種子層面,而是 bucket 的層面,如果 DAU 能達(dá)到千萬(wàn),分桶一般會(huì)用千分桶,這時(shí)如果實(shí)驗(yàn)桶是不均勻的,我們可以通過(guò)更隨機(jī)的 bucket 分配來(lái)有效縮減 AA diff。
這個(gè)功能往前再走一步,就變成所謂的流量自檢,我們平臺(tái)可以主動(dòng)對(duì)一些重點(diǎn)的層、重點(diǎn)的業(yè)務(wù)去做一些流量質(zhì)檢,這樣我們可以事先發(fā)現(xiàn)問(wèn)題,甚至可以干預(yù)用戶去創(chuàng)建實(shí)驗(yàn),這樣就不需要用戶手動(dòng)觸發(fā)在層、桶或者實(shí)驗(yàn)粒度上的檢驗(yàn)。
同時(shí)這樣也規(guī)避了一個(gè)弱勢(shì),如果不是基于實(shí)時(shí)引擎來(lái)做 Pre AA 計(jì)算,是有時(shí)間開(kāi)銷的,這樣用戶也不需要等,相當(dāng)于前置計(jì)算中可以做到以空間換時(shí)間,前置做一些計(jì)算,能夠讓用戶使用流量的時(shí)候更放心。
2、校驗(yàn)方法
?我們平臺(tái)目前有三種檢驗(yàn)方法,第一種是在做分組樣本量均衡時(shí)的一個(gè) SRM 檢驗(yàn),比如做了一個(gè) 50% VS 50% 的分組,如果分組之間進(jìn)組的樣本量偏移比較大,那么就認(rèn)為整個(gè)分流是不均勻的,這時(shí)有可能和 Pre AA 是類似的情況,就很難拿到一個(gè)相對(duì)比較自信的結(jié)論,所以這個(gè)地方是 SRM 檢驗(yàn)。通常來(lái)說(shuō),對(duì)于這種比率類的,我們可以通過(guò)卡方檢驗(yàn)去做論證。
另外一種,我們?cè)谧鰧?shí)驗(yàn)分析的時(shí)候,人均時(shí)長(zhǎng)、人均 gmv、人均訂單也是經(jīng)常要分析的指標(biāo),這時(shí)我們用了 Welch’s T 檢驗(yàn)方法。
還有一種,像留存、用戶轉(zhuǎn)化率等轉(zhuǎn)化率指標(biāo),我們是用 Z 檢驗(yàn)去做的。之所以用 Z 檢驗(yàn)和 Welch’s T,是在于它們對(duì)數(shù)據(jù)集的要求會(huì)有一些差異, Z 檢驗(yàn)可以用更低的成本去做,比如可以用基于主粒度的聚合表來(lái)做 Z 檢驗(yàn)的分析,而像 Welch’s T 最好是要基于樣本粒度的表來(lái)做一些檢驗(yàn)的計(jì)算。當(dāng)然其實(shí)沒(méi)有必要去追求更多的檢驗(yàn)方法,而是應(yīng)該結(jié)合業(yè)務(wù)的需求來(lái)做。
上圖中右面是 Uber 實(shí)驗(yàn)指標(biāo)分析引擎的整個(gè)流程,它?從數(shù)據(jù)輸入到數(shù)據(jù)離線處理,到數(shù)據(jù)分布的判斷,包括針對(duì)不同的指標(biāo)類型,會(huì)用到不同的檢驗(yàn)方法或者計(jì)算方法。第一步是計(jì)算方差,后面才是應(yīng)用檢驗(yàn)方法進(jìn)行顯著性分析。
3、指標(biāo)管理
?最后一部分簡(jiǎn)單分享一下關(guān)于指標(biāo)管理的一些經(jīng)驗(yàn)。
整個(gè)指標(biāo)體系會(huì)分為關(guān)鍵指標(biāo),業(yè)務(wù)的北極星指標(biāo),包括護(hù)欄指標(biāo),以及一些 OEC 指標(biāo)。比如內(nèi)容產(chǎn)業(yè),判斷用戶時(shí)長(zhǎng)更重要,還是生產(chǎn)者上傳更重要,還是廣告的收益更重要,往往這時(shí)候我們就需要引入 OEC 綜合評(píng)判指標(biāo)來(lái)下結(jié)論。
另外,在指標(biāo)設(shè)計(jì)的時(shí)候,我們需要考慮整個(gè)指標(biāo)的靈敏性和魯棒性,所謂靈敏性是當(dāng)前時(shí)間它足夠靈敏,能夠幫我們下結(jié)論。所謂的魯棒性就是做一些護(hù)欄指標(biāo)或平臺(tái)指標(biāo),也考慮一些指標(biāo)的計(jì)算成本。
指標(biāo)管理的實(shí)現(xiàn)路徑有三種,也是三個(gè)不同的階段。
第一個(gè)階段是業(yè)務(wù)驅(qū)動(dòng)。實(shí)驗(yàn)平臺(tái)前期是搭框架,后期做功能,再后期實(shí)驗(yàn)平臺(tái)就變成一個(gè)指標(biāo)的管理平臺(tái)了。實(shí)驗(yàn)平臺(tái)指標(biāo)上十萬(wàn)是非常正常的。在第一階段可能并沒(méi)有很多資源,更多的是做規(guī)范,有了規(guī)范以后,不同業(yè)務(wù)方依照規(guī)范把指標(biāo)導(dǎo)入進(jìn)來(lái),就可以用我們提供的實(shí)驗(yàn)日志和檢驗(yàn)方法,并且我們實(shí)驗(yàn)報(bào)告能夠幫他做決策分析。
第二階段是任務(wù)驅(qū)動(dòng)。隨著一些長(zhǎng)尾的業(yè)務(wù)接入,可能業(yè)務(wù)方?jīng)]有數(shù)據(jù)開(kāi)發(fā)資源,這時(shí)我們可以去基于一些標(biāo)準(zhǔn)的模板來(lái)支持他們更快的接入。這個(gè)模板可能包括離線的模板和實(shí)時(shí)的模板,使用模板指定自己的事件、指標(biāo)口徑等等,能夠快速的實(shí)現(xiàn)指標(biāo)接入,包括實(shí)驗(yàn)報(bào)告。
最后一個(gè)階段是基于事件驅(qū)動(dòng)。這也是很?多 SAAS 產(chǎn)品做的。主要有幾個(gè)好處,首先平臺(tái)抽象算子,算子用來(lái)規(guī)范指標(biāo)的技術(shù)。另外業(yè)務(wù)方在定義指標(biāo)的時(shí)候只需要選擇事件、算子,剩下的都是平臺(tái)托管的,火山引擎目前就已經(jīng)達(dá)到了這一階段。
五、問(wèn)答環(huán)節(jié)
Q1:前面提到的實(shí)驗(yàn)科學(xué)相關(guān)的書籍叫什么呢?
A1:《關(guān)鍵迭代-可信賴的線上對(duì)照實(shí)驗(yàn)》,封面是一個(gè)河馬所以又稱河馬書,意指反數(shù)據(jù)驅(qū)動(dòng)、實(shí)驗(yàn)決策的 HIPPO 論。
Q2:客戶端首頁(yè)實(shí)驗(yàn),請(qǐng)求的時(shí)機(jī)可能是比較強(qiáng)的,等到分流的結(jié)果返回再渲染之后,可能會(huì)走一個(gè)兜底。這種情況下怎么能保證分流的均勻?
A2:其實(shí)前面講到了客戶端實(shí)驗(yàn)怎么生效,可能是通過(guò)緩存方式來(lái)落后一個(gè)冷啟或熱啟的周期來(lái)生效,但是我沒(méi)有講到怎么保證分流的均勻。因?yàn)槠鋵?shí)這一天中用戶的整個(gè)客戶端啟動(dòng),進(jìn)組的節(jié)奏一定是有變化的,所以怎么來(lái)保證實(shí)際進(jìn)組的均勻性,這時(shí)候要引入一個(gè)版本的概念了,在實(shí)驗(yàn)配置的時(shí)候會(huì)有一個(gè)版本概念,通過(guò)版本來(lái)做一個(gè)強(qiáng)一致的控制。因?yàn)椴煌挠脩羰褂?APP 的頻次是不一樣的,重度用戶可能一天打開(kāi)幾十次,一些相對(duì)非重度用戶可能兩三天才打開(kāi),和它整個(gè)進(jìn)組的節(jié)奏是沒(méi)有辦法完全保障的,因?yàn)檫@時(shí)候單單用日期來(lái)做控制已經(jīng)不太科學(xué)了。比如一個(gè)相對(duì)低頻的用戶,他可能今天啟動(dòng)了,但是他的實(shí)驗(yàn)版本可能是一周之前的,這時(shí)候如果單純按日期來(lái)分析是不對(duì)的。
Q3:在流量管理的部分,強(qiáng)感知和弱感知的區(qū)別是什么?
A3:強(qiáng)感知,一個(gè)比較形象的說(shuō)法是你在實(shí)驗(yàn)平臺(tái)中實(shí)實(shí)在在能看到一個(gè)個(gè)的層,這個(gè)層上跑了多少個(gè)實(shí)驗(yàn)都是能看得到的。弱感知就是整個(gè)平臺(tái)只有實(shí)驗(yàn)沒(méi)有層,你看到的是一個(gè)個(gè)的實(shí)驗(yàn),但是實(shí)際上這個(gè)實(shí)驗(yàn)是在哪個(gè)流量層上,沒(méi)有刻意的去展示給你,當(dāng)然在底層的工程框架一定是有一些設(shè)計(jì)的。
Q4:針對(duì)于總值類的指標(biāo),比如總播放的時(shí)長(zhǎng)可能不服從正態(tài)分布,應(yīng)該用什么檢驗(yàn)?
A4:首先總時(shí)長(zhǎng)不滿足我剛才講的人均指標(biāo)以及轉(zhuǎn)化率指標(biāo)框架,所以對(duì)應(yīng)的檢驗(yàn)方法就沒(méi)有辦法去做。但對(duì)于總播放時(shí)長(zhǎng)以及 DAU 等,有一些公司的平臺(tái)使用 Bootstrap 等方法計(jì)算方差,然后緊接著也可以套 t 檢驗(yàn)的公式來(lái)做這種置信度的分析。
Q5:在實(shí)驗(yàn)指標(biāo)波動(dòng)的方向有沒(méi)有什么建議?
A5:涉及到實(shí)驗(yàn)指標(biāo)波動(dòng),如果是判斷波動(dòng)的顯著性,業(yè)界通用做法是先看是否統(tǒng)計(jì)顯著,然后再看是否業(yè)務(wù)顯著。在計(jì)算指標(biāo)波動(dòng)的時(shí)候還需要注意分析單元和分流單元的一致性, 通常我們實(shí)驗(yàn)分流一般都會(huì)基于用戶來(lái)去做分流,因?yàn)轶w驗(yàn)的一致性會(huì)得到保證。也會(huì)存在按照會(huì)話分流或者請(qǐng)求分流等等的情況,這時(shí)候做波動(dòng)分析的時(shí)候可能也會(huì)有一些挑戰(zhàn),你會(huì)發(fā)現(xiàn)其實(shí)整個(gè)方差的波動(dòng)都會(huì)比較大需要進(jìn)行一些消減,比如 DeltaMethod。
Q6:當(dāng)指標(biāo)的數(shù)目眾多,比如成百上千的時(shí)候,會(huì)涉及到多種比較的問(wèn)題,看實(shí)驗(yàn)結(jié)果怎么好?
A6:對(duì)于想看的指標(biāo)比較多的情況,有不同的解決辦法。首先從實(shí)驗(yàn)?zāi)康纳鲜欠裼凶銐蚴諗康闹笜?biāo),當(dāng)然實(shí)際一般來(lái)說(shuō)都是妥協(xié),可能我們這個(gè)實(shí)驗(yàn)就是要觀察很多指標(biāo),這時(shí)候怎么辦?剛才我講到的,比如說(shuō)把指標(biāo)收斂變成一個(gè)統(tǒng)一的綜合分指標(biāo)來(lái)去做評(píng)判,也是一個(gè)手段。當(dāng)然,如果很多指標(biāo)也會(huì)涉及多重檢驗(yàn),要不要去做收斂,比如說(shuō)是不是要求更強(qiáng)的置信度 p_value 等等。其實(shí)在目前我們的實(shí)驗(yàn)平臺(tái),我們提供一些選項(xiàng),比如我們默認(rèn) p_value 是 0.05 幫用戶去做置信分析,但是用戶也可以去選擇 0.01 來(lái)做分析。我們來(lái)幫他做顯著性的判斷。所以我理解其實(shí)更多的還是結(jié)合業(yè)務(wù)的需求。