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