導讀 因果推斷能夠幫助我們解決 A/B 測試無法處理的問題,或者觀察到預測模型無法解釋的細節。本文將透過簡潔生動的例子,介紹因果推斷的基礎知識和常見應用,希望能夠幫助大家快速上手因果模型。
文章主要包括兩部分:
1. 因果推斷初探
2. 內容平臺實踐
分享嘉賓|李烜 資深資料科學家
編輯整理|DataFun志願者
出品社群|DataFun
在 YouTube 上面有一個很有意思的影片,用漫畫的形式介紹“因果”這個概念,我們可以從這個例子來開始理解什麼是因果。因果本身最早是一個哲學上的概念,大部分的西方哲學家都認為因果關係是一條毋庸置疑的定律,但也有哲學家,比如休謨提出了很難被駁倒的懷疑論,直到近代統計學理論的發展,為因果關係提供了新的思考和推理框架。如上圖所示的幾種情況,我們先依次來解釋一下這幾個例子。當知道某個物體在當前時間點的質量和速度,根據物理學的知識,能夠計算出來它在將來任何一段時間的狀態,甚至可以反推出它在過去一段時間的狀態。現在的狀態對過去和將來的狀態預估,我們把這個叫做模式(pattern)。假設在過去的某個地方發生了核彈的爆炸,核彈爆炸與大氣反應生成的 C14 影響到樹木進而影響鉛筆中 C14 的含量,因而根據 C14 的含量能夠判斷過去是否有核彈爆炸,這種推理關係我們稱之為記錄(record)。一隻暴怒的小狗對房子實施了點火行為,引發了區域性的火災。在這個例子裡面可以看到兩個非常關鍵的要素。第一個要素是點火行為,這個點火行為我們稱之為改變或者干預。第二個要素是時間,狗過去的點火行為導致將來房子著火的現象。這種關係我們稱之為因果(cause and effect)。綜合上面的三個例子,可以簡單給歸納出因果的定義:透過一些改變導致了從過去到將來時間線上的結果,我們把這種關係叫做因果關係。在因果關係中有兩大要素:干預和正向的時間線。在日常工作與生活當中會經常遇到的一個問題是,相關性和因果性的關係。對於這兩者也有一個很經典的說法:“相關性不等於因果性”。但其實對於這個說法還有一個很重要的補充,相關性確實不等於因果性,但因果性往往隱藏在相關性當中。而相關性的發現和論證會更加容易,往往也是我們透過分析來發現潛在影響因子的一個開始。這裡我們首先簡單介紹兩個相關性不等於因果性的例子。上圖中左上角的例子是日系乘用車在美國的銷售量和以車禍自殺的趨勢表現。透過兩條曲線的走勢,如果我們認為這個相關關係具備因果性,那麼可能會得到這樣一個結論:自殺會導致日系乘用車賣得更好,或者是日系乘用車賣得越好車禍自殺就會越多。這個結論顯然不太合理。上圖中右下角是一個更有意思的例子,這個例子中顯示在游泳池中溺水的人和尼古拉斯 • 凱奇在電影中出現的次數成正比。這個看起來就更離譜了,如果認為其具備因果性的話,要麼尼古拉斯 • 凱奇越努力淹死的人就更多,要麼是淹死的人越多尼古拉斯就更努力。從上面的兩個例子可以看出,相關性並不等於因果性。在日常的資料分析中,當我們看到某些指標具備相關性的時候,並不能說他們存在因果關係。比如留存率,當我們看到一些使用者行為和留存率相關的時候,到底是他們之間互為因果,還是他們之間受到一個共同因素的影響,我們透過相關性是無法觀察到的。除了相關性無法推出因果性之外,因果性也不一定能觀測到相關性。如上圖,假如在一片大海當中,有一個帆船選手在努力的調整船舵,使船沿著一條確定的路線直線前行,我們看到選手的努力並沒有影響帆船的行進方向。這時選手的行為和船的行進方向不具備可見的相關性,但是具備實際的因果性。因為這時風浪很大,船手透過調整才能保持帆船直線前行。我們平時看到的轉舵表示轉向,但是在風浪裡面反而代表直線行駛。這裡的因是帆船手所作出轉舵的干預,結果是抵消了環境帶來的影響,所以這個例子當中有因果關係,但是觀察不到相關關係。另外一個經常出現的情形叫做辛普森悖論,它來自一位名為辛普森的統計學家的發現,用來描述兩組資料的關鍵指標在整體上和區域性拆分下的對比關係結果不一致的現象。如下圖例子中,假如我們有兩種針對腎結石的治療方案分別是方案 A 和方案 B,在治療過程中可以分別對小的結石和大的結石都施加這兩種不同的治療方案,然後觀察不同方案的成功率。從圖中可以看出針對小的結石和大的結石,都是方案 A 的成功率較高。但是如果統計方案 A 和方案 B 的整體資料,會發現方案 B 的總體效果比方案 A 要好。這個例子就是辛普森悖論的一個體現。辛普森悖論是有解的,造成區域性資料和整體資料得出的結論不一致,主要是因為二者在拆分維度下的分佈是不一致的,而當維度本身也會對干預或者結果有影響時,這個分佈不一致就會評估產生影響。從我們這個治療方案的例子來講,石頭的大小本身會影響手術的成功率,如小石頭本身即更容易治癒,B 方案效果更好是因為有更高比例的小石子樣本。換句話說,在這個例子中,我們的干預治療方案和變數石頭的大小二者之間是不獨立的。在實際的業務場景中,也存在類似的情況。比如在一些廣告策略當中,我們發現在男性使用者和女性使用者中可能都是表現出 A 方案更好,但是整體資料可能 B 方案更好,可能就是因為不同性別的使用者本身的差別和比例的差異帶來的。因果推斷是指在目標結果上估計干預造成收益的一種量化的手段。透過因果推斷方法,我們希望能夠從這些量化的比較中,衡量出不同干預的價值,進而指導將來的決策和選擇。上圖是一個巴西在課堂中使用 Tablet 對高考分數影響的例子。圖中縱軸表示分數,紅色表示提供 Tablet 的分組,藍色表示不提供 Tablet 的分組。在這個例子中,我們希望衡量數字化教學是不是真的能夠提升學生的成績。如果直接去對比,會發現看起來使用了平板電腦的學生成績會更好。實際上使用平板電腦和學生分數具備因果關係嗎?下面我們嘗試使用因果推斷的方式來去度量一下這個結果。假設我們抽出來這個四個使用者,用編號 i 表示分別是 1 號、2 號、3 號、4 號。在這裡我們介紹因果推斷的一個重要概念——反事實。想象有許多平行世界,假設針對同一個事件的不同行為都可以找到一個對應的平行世界,我們具備上帝視角,能夠觀測到任何一個人在接受了這個干預和沒有接受干預的兩個狀態。在這個例子中,我們對比施加干預(使用了平板電腦)和沒有施加干預(沒有使用平板電腦)的平行世界裡學生的表現。在上帝視角下,我們能夠觀察到的結果如左表,在非上帝視角下我能夠觀察到的結果如右表。其中 y0 表示沒有施加干預的結果,y1 表示施加干預的結果,t 表示是否施加干預。y 表示非上帝視角下能夠觀察到的結果,在干預 t=0 時 y=y0,在干預 t=1 時 y=y1。上表中,我們看編號為 i=1 的同學沒有看平板電腦的情況下,分數 y0=500,施加干預後分數 y1=450。那麼這個干預的收益 te 是 -50 分。同理我們可以計算到每個樣本的收益,最後計算所有樣本的平均收益。在實際情況中,我們並不具備上帝視角,無法同時觀測個體是否被幹預的兩種狀態,也就無法直接得到 te。這時我們就面臨了一個因果推斷的問題,它的核心是我們無法同時觀察每個個體被施加干預與否的兩種狀態。所以,我們需要透過一系列因果推斷的模型,去尋找一種近似方法來估計在干預狀態和未乾預兩種狀態的值。ATE:Average Treatment Effect(干預的平均因果效應);ATT:Average Treatment effect on the Treated(干預組的平均因果效應)。ATE 表示干預在所有人當中的平均因果效應;ATT 表示干預在干預組當中的平均因果效應。因果推斷實際上要解決的是量化地計算 ATE 和 ATT。在真實的業務場景中,我們希望透過一些方法能度量 ATE 和 ATT,因果推斷是解決這個問題的方法之一,在介紹詳細因果推斷方法之前,我們會先簡單介紹一下隨機 A/B 實驗,隨機 A/B 實驗是最常用的消除偏差或者估計反事實的方式之一。隨機 A/B 實驗會先做分流,再進行干預,在隨機 A/B 實驗的情況下對使用者施加干預本身是隨機的,Treatment 是唯一能夠在干預組和對照組產生差異的變數。所以我們可以透過這種方式來近似地去預估干預後事實和反事實之間的增益。隨機 A/B 實驗的核心假設就是 T=0(沒有受干預的人) 和 T=1 (受到干預的人),在沒有受到干預的狀態是一樣的。在隨機 A/B 實驗的核心假設基礎上就能計算得到 ATE 的值,計算方式也很簡單直接用干預組減去對照組的值,這種情況下不需要去額外觀測反事實,認為對照組就代表了反事實。那麼有隨機 A/B 實驗的情況下,為什麼我們還需要因果推斷?原因是 A/B 實驗也存在一定的侷限性,主要可以分為以下幾個方面。1)隨機實驗的可行性:在許多場景當中,分流實驗並不一定都是可行的。比如在研究孕婦孕期吸菸對於嬰兒的影響,不可能強制一部分孕婦抽菸,另一部分孕婦不抽菸。2)隨機 A/B 實驗的前提假設是否成立:隨機 A/B 實驗中需要滿足 SUTVA(Stable
Unit Treatment Value Assumption)假設,也就是我們的實驗組和使用者組之間效應不會外溢,不會相互受到影響。比如微信的使用者之間大家會互相聊天,滴滴的使用者和乘客之間,使用者和使用者之間存在聯絡。在這種情況下傳統的 A/B 簡單分流實驗評估會不準確。3)實驗的成本過高:在現實場景中實驗的成本可能很大,比如優惠券業務和大額紅包的業務,這種情況下存在一些成本問題。上面我們講到隨機 A/B 實驗不存在偏差,以及隨機 A/B 實驗存在一些侷限性。因果推斷的目標就是要在難以做隨機 A/B 實驗的場景,消除偏差以獲得因果效應。回到巴西高考的例子,上面已經提到,如果我們直接用干預組減去對照組的值,得到的不是因果效應。但是因果效應和這個值會有一些關係,參考下面的式子變換,我們可以看在它等於式子右側加上“干預組在沒有接受干預時的狀態”減“對照組在沒有接受干預的狀態”,也即因果效應等於 ATT 加上 Bias,這個 Bias 等於實驗組和對照組在沒有接受干預時的狀態的差。假設我們引入一個新的變數叫做學費,並且觀察變數和分數的結果。以上圖為例,我們可以看到圖中紅色的點會比藍色點要高。也就是說兩批使用者在分組的時候就存在偏差,可能更富裕的學校會給學生更多技術上的支援,或者學費更貴的學校家庭教育更好。那麼在分組的時候,本身就引入了偏差。上述例子中,我們想預估事實和反事實間的差距,但直接用紅點和藍點兩組結果相減的過程會引入偏差。隨機 A/B 實驗的方式透過把兩組人群打散,打散之後兩種點不會有明顯的差異,讓干預組和對照組在干預發生之前消除偏差。另外在因果推斷中,常見的方法是構造反事實的點來消除偏差,獲得最終的因果效應。如下圖,比如 X 代表混雜變數,它既會影響 T(干預) 也會影響 Y(結果)。以智力為例,一般來說智力對人的影響是多方面的,既會影響學習能力進而影響教育水平,也會影響工作能力進而影響薪資收入。如果想研究教育水平對於薪資收入的影響,就需要控制智力帶來的偏差。在上面的例子中,干預和結果的共因叫做混雜偏差。此外,偏差也會來自於中介變數,比如 SAT 的分數,同理假設智力既會影響 SAT 分數,也會影響薪資,同時智力透過 SAT 去影響受教育的水平。這種情況下透過控制 SAT 相當於控制了智力帶來的偏差。在選擇偏差中引入的是一個有偏差的果,避免選擇偏差是因為我們有時會因為擔心混雜變數影響到因果推斷效應的可行性,把儘可能多的變數放進來,導致誤引入不該控制的變數,從而出現選擇偏差。我們常提到的倖存者偏差就是一種選擇偏差,選擇偏差會使得本來獨立的 Treatment 和 outcome 不獨立。假如投資傾向是一個 Binary 的值,令投資傾向等於 1 時,研究教育水平和薪資的關係,投資傾向就成為一個選擇偏差,這意味著我們只研究願意投資的人。這裡可能有一種假設,比如沒有受到教育的人,本身不太傾向會去做投資活動,相反未受到教育卻熱愛投資的人會在其他地方有更多過人之處,他們可能會比同等條件下受到教育的人有更高的薪水。在這種情況下,就因為可能控制了不應該控制的結果,導致干預和結果之間不再獨立。這兩種偏差的主要差異是:混雜偏差既會影響干預也會影響結果,結果和干預都會影響混雜偏差。這裡我們利用 Kaggle 泰坦尼克號資料集做例子(有艙位,年齡和性別等資訊),分析購買高等艙票和能否存活之間是否具備因果效應。大家可能記得經典電影《泰坦尼克號》中有這麼幾段情節,一段是住在靠下層甲板的主角要穿過許多層樓梯才到達可以逃生的頂層甲板,另一段是在營救順序上船長要求婦女和兒童先上船。假如電影基本忠於現實,所以我們推斷高等艙的乘客是否存活,和有沒有婦女兒童這個因素影響很大。因此在判斷高等艙這個干預的因果效應時,首先要做的就是消除偏差。我們會透過這個例子介紹第一種簡單的方法:子分類估計。在上面的例子中有兩個混雜因素:第一個是女性,女性既會影響到存活率又會影響到購買的艙位,同理兒童也會同時對 Treatment 和 outcome 都做影響。所以為了得到因果效應,我們需要控制這兩個變數。在泰坦尼克號的例子上我們發現,兩個混雜因素都是二分類的變數,這樣可以很容易得到四個分組,在每一個組當中,都已經控制所有的混雜變數。這時可以得到這樣一個強假設:假設在目前控制了兩個混雜變數之後,干預和結果是獨立的。此外還有另外一個假設是,每個組內的 Pr(D=1)都是大於 0 小於 1 的。在沒有做子分類估計的情況下,針對高等艙計算出來的 Treatment 的 ATE 是 34.5%,子分類估計之後的 Treatment 的 ATE 是 18.9%,說明高等艙對於存活仍然還是有正向收益的。上述方法需要對每個組都去進行子分類估計,在子分類非常多的情況下會出現維度災難。接下來介紹另外的幾種方法:匹配和加權。在因果推斷當中我們透過消除偏差來發現因果效應,在精準匹配中,我們試圖去恢復資料的分佈,使得對照組和干預組的分佈保持一致。假設我們得到了所有的混雜變數 X,針對混雜變數計算和每一個實驗組使用者完全一樣的對照組使用者去一一匹配。如果遇到匹配到多個樣本的情況,一般會對多個值求平均,最後在一一匹配之後計算 ATE 的值。在這種方法裡面也有一個假設,假設層和類之間的兩種使用者是一致的,而且要求資料計算是支援匹配的。當兩個組之間樣本非常不均勻,或者不能找到實驗組完全匹配上的對照組時,不適用精準匹配的方法。另外當混淆因子 X 的值是低維和離散時,這種情況下匹配難度會很高。傾向性得分匹配的核心思路就是將多維的混雜變數降維到一維。建立 X 被分配在干預組和對照組的機率,我們可以利用 ML 模型,估計樣本分配到 Treatment 的機率 P(X),利用降維 X 後的傾向性得分進行加權和匹配。在匹配完之後一般會要做一些檢驗,比如匹配之後兩組樣本一般要求在混雜變數上平衡。如可以用 SMD 的方法檢測匹配前後在均值上是否平衡。如上圖左邊的因果圖所示,在使用了傾向性得分匹配後,我們假設 P(x) 就已經代表了 X 的全部資訊,只要控制了 P(X) 就控制了 X 對 T 和對 Y 的影響。匹配和加權在理論上其實是近似的方法。在進行匹配的時候如果匹配上權重為 1,不匹配權重為 0,這種情況下可以把匹配看成是一種加權的方法,加權實際上是對匹配的一種泛化。在上圖中給出了一個廣告的例子,我們計劃衡量投放了某廚師學校廣告之後,將程式設計師轉化為廚師的效果。上下兩行樣本分別代表對照組和干預組投放後的轉化情況,分別計算是否展現廣告的轉化效果,轉化率分別是 33% 和 50%。由於男性和女性本身轉化為廚師的傾向是不一樣的,所以我們需要恢復它的分佈。假設在對照組中有兩個男性,我們恢復成四個男性,兩個女性恢復成四個女性,這樣男女比例 1:1,最後得到的加權轉化率是 37.5%,同理可以得到干預組的加權轉化率仍為 50%。評估經過加權後的廣告干預,廣告展現仍然對於轉化有正向影響。除了這樣簡單的加權方式之外,我們也可以用 P(X) 進行加權,本質和上面簡單舉例是是一樣的。假設上圖中的曲線是不同 X 的情況下,針對 X 對 P(X) 做的一個建模,目標是被分在干預組和對照組的機率,對上面的圖中不同的 X 下的 Y 值進行加權,也即計算傾向性得分的加權值近似地去恢復原來的分佈。雙重差分的方法也比較常見。在很多時候業務場景有比較明顯的時間趨勢,干預發生在一個連續的時間序列的某個時間節點或時間段,需要評估節點之前和之後實驗組相對於對照組的提升。在雙重差分中的假設是,對照組和干預組在沒有受到干預的時候,還是會按照原來的趨勢去延續原來的變化,即要求實驗組和對照組是平行的。在進行因果建模的時候也需要對這個假設進行檢驗。在滿足平行假設之後,因果效應可以透過 C 和 D 的差,再減去 A 和 B 的差來衡量,也就是 β3 的值,這種方法稱之為雙重差分,具體可以參照上圖中的公式。第一個案例是評估作者側參與某活動對作者投稿的影響。我們想衡量參與活動和未參與活動的兩批作者,在活動相關的發稿量,整體的發稿量,以及細品類的細分發稿量上有沒有受到影響和變化。因為作者側的運營活動一般在時間線上有運營週期,從某一段時間開始活動,到某個時間點截止。所以我們很容易想到可以用 DID 的方法。另外一個案例是評估作者側扶持對於作者成長的影響。我們主要看,對於作者而言,扶持一段時間之後能否自己成長起來。與上一案例的不同之處在於,做 DID 之前會先做匹配。比如採用上面的匹配方法,我們會配到對照組中能夠對標實驗組的作者,有針對性地去比較不相同的作者在扶持前後在 DID 上的一些表現。這裡也會做一些平行趨勢假設,如去觀測在一段時間內匹配的作者發稿的趨勢是否一樣。最後分享一些思考,再來回顧一下為什麼需要因果關係。其次,一些預測很準的模型無法提供預測細節。一個比較常見的例子是流失預測模型,它可能能夠非常準確地找到哪些人會走,但除了知道哪些人會走之外,我們還需要知道做什麼樣的事情能夠讓他們不走。這個時候就需要一些因果的建模,知道如何讓這些使用者留存下來。第三,某些時候僅靠相關關係無法落地決策。比如,我們在平臺中發現使用者的負反饋和使用者的留存是有關係的,我們沒有辦法讓使用者反饋更多,這個時候平臺需要挖掘一些可以落地決策的細節。另外就是如何體現因果推斷的結果是可靠或者可用的,讓我們更自信自己的方法是成立的。這裡有幾個比較重要的點:第一,檢查假設是否成立。一些因果推薦的模型有很多都會有自己非常強的假設,並且都依賴於自己假設。所以首先要檢查自己的假設是成立的。如果我們的假設是成立的,那我們就對因果推斷的結果是有信心的,或者說我們認為通常情況下是成立的。第二,檢測結果是否敏感。有很多敏感性的分析方法。比如,針對樣本去做一些擾動,把 Treatment 替換掉,從一個實際資料 Treatment 替換成隨機數;也可以把混雜變數 X 進行替換,增加或者減少一些列,或者增加一些隨機數列;也可以在資料上去做操作,比如加入隨機資料看結果是否穩定,或者把原來的資料集做一些抽樣,看是否與原來的資料結果一致。第三,不同的方法是否會有同樣的結果。如果我們對目前的方法不夠信任,覺得現在的假設不成立,可以用一些其他的方法去看是不是會有相同的結果,用其他同樣滿足假設的方法做 double check。在分享的最後,隆重推薦兩個部落格,一個是 Causal Inference for The Brave and True,另一個是 Causal Inference The Mixtape。這兩個都是非常好的技術部落格,這次分享的很多內容也有相當部分來自於這兩個部落格,大家如果有興趣非常建議去了解一下。問答環節
Q:同一個案例資料同時做 A/B 實驗和雙重差分兩種方法顯示的相對差異是否具有可比性?把實驗和因果推斷的結果做對比,這也是一個比較常見的問題。
A:是有可比性的,可以針對發現的相對差異做進一步的分析。一方面,會有一些導致差異的原因,如在 DID 方法中,需要要求一個干預時間點或者是干預時間段,而實驗的結果僅是在針對整體的組間差距而言的,相對 DID 少了評價時間點前後的目標。另一方面實驗得到的樣本是相對比較可靠的樣本,我們也可以結合兩種方法去做分析,利用實驗分流出的資料做 DID。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024924/viewspace-2936851/,如需轉載,請註明出處,否則將追究法律責任。