A/B測試并不是理解因果關(guān)系的唯一工具:如果使用得當(dāng),準(zhǔn)實(shí)驗(yàn)和反事實(shí)分析(Counterfactual)是進(jìn)行因果推理的有力工具。
描述性統(tǒng)計(jì)和相關(guān)性是每個(gè)數(shù)據(jù)科學(xué)家的“面包和黃油”,但實(shí)用它們時(shí)卻需要格外小心,因?yàn)樗鼈冎荒茏C明相關(guān)性不是因果關(guān)系。
在Shopify,我們相信理解因果關(guān)系是釋放最大商業(yè)價(jià)值的關(guān)鍵。我們的目標(biāo)是找到可以實(shí)際解釋在數(shù)據(jù)中看到的現(xiàn)象的原因和見解,因?yàn)橐蚬钥梢则?yàn)證整個(gè)業(yè)務(wù)戰(zhàn)略是否有效。
今天這篇文章,來自Shopify的數(shù)據(jù)科學(xué)團(tuán)隊(duì),本文探討了不同的因果推理方法,以及如何使用這些方法來構(gòu)建好的產(chǎn)品。
因果推理的四個(gè)等級
數(shù)據(jù)科學(xué)家可以使用各種不同的方法來估計(jì)一個(gè)因素的因果效應(yīng)。下面這幅圖介紹了因果推論的四個(gè)等級,越往上代表這個(gè)方法的因果證據(jù)越強(qiáng),越往下就代表這個(gè)方法的因果性越低。這幅圖被我們稱為是“因果證據(jù)階梯”(Evidence Ladder for Causal Inference)。
▲ 證據(jù)階梯的層次:
第一級(最清晰的證據(jù)):A/B測試(也就是統(tǒng)計(jì)實(shí)驗(yàn));
第二層次(合理的證據(jù)水平):準(zhǔn)實(shí)驗(yàn)(包括差值法、匹配法、控制回歸法);
第三層次(最弱的證據(jù)水平):完全估計(jì)反事實(shí);
圖表底部:描述性統(tǒng)計(jì)——沒有提供因果關(guān)系的直接證據(jù)。
階梯并不是方法的排名,而是每個(gè)方法給你的證明程度的一個(gè)松散的指示。在階梯上越高的方法,越容易計(jì)算出構(gòu)成強(qiáng)因果關(guān)系證據(jù)的估計(jì)。處于階梯頂端的方法通常需要更加關(guān)注實(shí)驗(yàn)設(shè)置。在另一端,階梯底部的方法使用更多的觀察數(shù)據(jù),但需要更多關(guān)注穩(wěn)健性檢查。
階梯很好地解釋了一點(diǎn):因果推理中沒有免費(fèi)的午餐。也就是說,要想得到一個(gè)強(qiáng)大的因果分析,你要么需要一個(gè)好的實(shí)驗(yàn)設(shè)置,要么需要一個(gè)好的統(tǒng)計(jì)學(xué)家和大量的工作。
這個(gè)階梯還有一個(gè)用處就是,數(shù)據(jù)科學(xué)家可以和他們的利益相關(guān)者(stakeholder)去分享這個(gè)模型。用它來說明你的工作過程,這是獲得合作者和利益相關(guān)者認(rèn)同的好方法!
因果推理方法
A/B測試
A/B測試,或隨機(jī)對照實(shí)驗(yàn),是因果推理的黃金標(biāo)準(zhǔn)方法——它們是證據(jù)階梯的第一級!對于A/B測試,A組和B組是隨機(jī)分配的。兩組所處的環(huán)境是完全相同的,除了一個(gè)參數(shù):他們看到的版本。隨機(jī)性保證了兩組都是 "平均 "的。這使你能夠從A/B測試中推斷出因果估計(jì),因?yàn)樗鼈兾ㄒ徊煌氖强吹降陌姹?,這樣就可以判斷到底是不是版本不同導(dǎo)致業(yè)務(wù)的變化。當(dāng)然在實(shí)踐中,有很多注意事項(xiàng)。
為產(chǎn)品設(shè)置A/B測試是一件很麻煩的事情。如果你是從頭開始設(shè)置A/B測試,你將需要:
當(dāng)用戶使用你的產(chǎn)品時(shí),隨機(jī)分配他們到正確的小組的方法;
一種跟蹤機(jī)制,用于收集所有相關(guān)指標(biāo)的數(shù)據(jù);
分析這些指標(biāo)及其相關(guān)的統(tǒng)計(jì)數(shù)據(jù),以計(jì)算效果大小,并驗(yàn)證你懷疑的因果效應(yīng)是否真實(shí)存在。
而且這些還只是最基本的內(nèi)容!有時(shí)你需要更多的東西才能檢測出正確的信號。在Shopify,我們有一個(gè)實(shí)驗(yàn)平臺(tái),可以完成所有繁重的工作,并允許數(shù)據(jù)科學(xué)家只需點(diǎn)擊幾下就可以開始實(shí)驗(yàn)。
準(zhǔn)實(shí)驗(yàn)
在真實(shí)的商業(yè)世界中,很多時(shí)候是不可能設(shè)置一個(gè)嚴(yán)格控制的實(shí)驗(yàn)的。以下是A/B測試無法在每種情況下都發(fā)揮作用的幾個(gè)原因:
缺乏工具。例如,如果你的代碼不能在產(chǎn)品的某些部分進(jìn)行修改。
缺乏實(shí)施實(shí)驗(yàn)的時(shí)間。
商業(yè)道德方面的考慮,例如在Shopify,隨意將一些商家排除在一個(gè)可以幫助他們業(yè)務(wù)的新功能之外,有時(shí)是不可能的。
幸運(yùn)的是,如果你發(fā)現(xiàn)自己處于上述情況之一,還是有一些方法存在,可以讓你獲得因果估計(jì)。準(zhǔn)實(shí)驗(yàn)就是其中之一。
準(zhǔn)實(shí)驗(yàn)(圖中的第二級)是指你的實(shí)驗(yàn)組和對照組被一個(gè)自然過程劃分,這個(gè)過程不是真正的隨機(jī)的,但被認(rèn)為是足夠接近計(jì)算估計(jì)的實(shí)驗(yàn)。準(zhǔn)實(shí)驗(yàn)經(jīng)常發(fā)生在產(chǎn)品公司中,例如,當(dāng)一個(gè)功能推出發(fā)生在不同國家的不同日期時(shí),或者如果一個(gè)新功能的資格取決于其他功能的行為(比如在廢棄某一功能的情況下)。當(dāng)控制組使用非隨機(jī)標(biāo)準(zhǔn)劃分時(shí),為了計(jì)算因果估計(jì),你會(huì)使用不同的方法,這些方法對應(yīng)著不同的假設(shè),即你與隨機(jī)情況的 "接近程度"。
我想強(qiáng)調(diào)一下我們在Shopify使用的兩種方法。第一種是帶有固定效應(yīng)的線性回歸。在這種方法中,假設(shè)我們已經(jīng)收集了所有在實(shí)驗(yàn)組和控制組之間劃分個(gè)體的因素的數(shù)據(jù)。如果這是真的,那么在控制這些因素的情況下,對感興趣的指標(biāo)進(jìn)行簡單的線性回歸,就能很好地估計(jì)出處于實(shí)驗(yàn)組的因果效應(yīng)。
第二種也是因果推理中很常見的方法:雙重差分(difference-in-differences)。當(dāng)你要使用這種方法時(shí),要先找到一個(gè)對照組,和實(shí)驗(yàn)組里你感興趣的指標(biāo)有平行的趨勢,然后再應(yīng)用任何實(shí)驗(yàn)。然后,實(shí)驗(yàn)開始,這種并行趨勢的差別就只可能是實(shí)驗(yàn)本身造成的。
下圖可以幫助你理解:
▲ 雙重差分的平行趨勢假設(shè)。在沒有實(shí)驗(yàn)的情況下,“實(shí)驗(yàn)”組和“對照組”之間的差異是恒定的。像這樣以時(shí)間為橫坐標(biāo)的圖中繪制出這兩條線可以幫助檢查假設(shè)的有效性。
最后,有時(shí)候你可能想從僅包含實(shí)驗(yàn)觀察結(jié)果的數(shù)據(jù)中檢測出因果關(guān)系。一個(gè)經(jīng)典的技術(shù)性方法是執(zhí)行一次向所有用戶發(fā)起的新功能的效果的評估:沒有進(jìn)行A/B測試,而且沒有人可以作為對照組。在這種情況下,你就可以嘗試反事實(shí)條件估計(jì)(第三階級)。
反事實(shí)條件的底層邏輯是創(chuàng)建一個(gè)模型,可以計(jì)算反事實(shí)條件對照組。也就是說,你可以估計(jì)出如果不存在這個(gè)功能將會(huì)發(fā)生什么。計(jì)算估算值不容易。但是,如果你對自己的用戶模型充滿信心,那你就有足夠的資料來進(jìn)行反事實(shí)因果分析!
▲ 時(shí)間序列反事實(shí)條件與觀測數(shù)據(jù)的例子
我們來舉個(gè)例子進(jìn)一步說明。幾個(gè)月前,我們需要評估安全升級對用戶的影響。這個(gè)升級很重要,并且已經(jīng)向所有用戶推出了,但是它給用戶帶來了很多麻煩。我們想看看這種困擾是不是會(huì)導(dǎo)致用戶的使用量減少。當(dāng)然,我們不可能在用戶中找到對照組。
在沒有對照組的情況下,我們創(chuàng)建了一個(gè)時(shí)間序列模型去尋找可靠的升級功能對用戶使用情況的反事實(shí)估計(jì)。我們訓(xùn)練了模型,例如不受安全升級影響的其他功能的使用量以及描述Shopify總體活躍度的全球平均趨勢。所有變量都與我們正在研究的安全升級無關(guān)。當(dāng)我們將模型的預(yù)測值與實(shí)際值進(jìn)行比較時(shí),我們發(fā)現(xiàn)并沒有提升。這表明新的安全功能不會(huì)對用戶的使用量產(chǎn)生負(fù)面影響。
使用反事實(shí)條件方法時(shí),預(yù)測的質(zhì)量至關(guān)重要。如果有一個(gè)與最新版本無關(guān)的混雜的因素發(fā)生變化,那你也不想將這個(gè)改變歸因到你的功能上。比如,如果你有一個(gè)可以預(yù)測某項(xiàng)功能的日常使用情況的模型,而競爭對手在你之后立即發(fā)布了一項(xiàng)類似的功能,那么你的模型將無法解釋這一新因素。領(lǐng)域?qū)I(yè)知識和嚴(yán)格的測試是進(jìn)行反事實(shí)條件因果推理的最佳工具。讓我們再進(jìn)一步了解。
當(dāng)無法進(jìn)行完全隨機(jī)化時(shí),準(zhǔn)實(shí)驗(yàn)研究和反事實(shí)條件就是不錯(cuò)的方法,但這些方法還是要付出一定代價(jià)的!要計(jì)算出合理的置信區(qū)間要困難得多,而且通常來說會(huì)處理更多的不確定性 - 假陽性(誤報(bào)率)很高。避免陷入這類陷阱的關(guān)鍵是穩(wěn)定性檢查。
穩(wěn)定性實(shí)際上并沒有那么復(fù)雜。也就是說要清楚地陳述你的方法和數(shù)據(jù)所依賴的假設(shè),并逐步放寬每個(gè)假設(shè),來查看結(jié)果是否還成立。如果你發(fā)現(xiàn)由于單個(gè)變量而可能發(fā)生顯著變化,尤其是該變量受噪聲,誤差測量等影響時(shí),它可以作為一種有效的一致性檢查。
有向無環(huán)圖(DAGs)是檢查穩(wěn)定性的好方法。它們可以幫助你在因果推斷的背景下清楚地闡明假設(shè)和假說。DAGs受著名的計(jì)算機(jī)科學(xué)家Judea Pearl的推廣,最近在技術(shù)和學(xué)術(shù)界獲得了很多關(guān)注。
在Shopify,我們真的很喜歡DAGs。我們經(jīng)常使用一個(gè)很好用的基于瀏覽器的工具Dagitty。簡而言之,當(dāng)您在Dagitty中繪制假設(shè)的因果事件鏈時(shí),它會(huì)為你的數(shù)據(jù)提供魯棒性檢查,例如某些條件有相關(guān)性,它就應(yīng)該被刪除。