1.1 什麼是因果推斷

因果推斷用於衡量一個行為的價值。即判斷一個“因”能導致多少“果”。

比如說我今晚複習數學,明天數學考試能提升多少分。這是一個很難回答的問題,因為我無法同時知道不復習和複習後,我分別能考多少分,當前時刻我只能做一種選擇並得到一個結果,另一個選擇的結果是永遠不可知的,這在因果推斷裡叫做反事實(conterfactual)。

因果推斷往往會衍生出一個研究方向,因果發現。即判斷一個行為是否和一個事件互為因果(推斷是判斷帶來了多少果,發現是判斷是否為因果)。比如冰棒賣的多和電費高往往同時出現,但他們不是因果關係,因為這種現象主要是天氣熱帶來的。

1.2 為什麼要研究因果

1.2.1 因果性 ≠ 相關性[2]

設想一個場景:大資料發現,穿鞋睡覺的人第二天往往會頭疼。因此我們可以得出穿鞋睡覺和頭疼相關,但這顯然是反直覺的,客觀規律告訴我們穿鞋睡覺不應該導致頭疼。那但資料上為什麼會呈現出這個現象呢?

原來是穿鞋睡覺的人大多都喝酒了,所以,真正導致頭疼的其實是“隱藏”變數-是否喝酒。(這在因果推斷裡叫混淆變數,confounder)

深入思考一下,我們為什麼會得出”因為穿鞋睡覺所以頭疼“的錯誤結論,那是因為我們隱含的觀察到“不穿鞋睡覺不頭疼“,兩組資料對比下得出結論。但是這個結論錯誤的關鍵是,兩個集合裡喝酒的人分佈是不一致的,真實的因果是喝酒所以頭疼,因此這裡會有數學上的“辛普森悖論”。

因此,這個場景我們只能說穿鞋睡覺和頭疼有相關性,但不能說他們互為因果。即相關 ≠ 因果

1.2.2 因果推斷 > 相關性分析

為了對比因果推斷和其他的機器學習問題,學術界提出了三層的因果之梯[3][4]:

相關(Association,觀察):解釋p(y|x),即已知x的條件下,y會怎麼樣。這是大部分場景下機器學習所面對的問題,如上一節所述,相關 ≠ 因果,故常規的機器學習方法無法處理因果問題。以上面的case為例,假設x = 穿鞋睡覺,y=頭疼,則該層級會看到兩者相關性很高的“假象”。

干預(Intervention,行動):解釋p(y|do(x),z),即做某個行為x後,y是怎麼樣的。比如上面的例子,干預穿鞋睡覺的行為x,單獨分析穿鞋睡覺(即do(x) = 1)和不穿鞋睡覺(do(x) = 0),在不同喝酒狀態下的頭疼(y)分佈。這個層面可以分析出穿鞋睡覺對頭疼可能無影響。但無法判斷每個人穿鞋睡覺會不會導致頭疼,因為觀察不到。

反事實(counterfactual,想象):解釋行為x對結果y的影響,即我做了x和不做x,對結果y的影響程度。這是因果推斷要解決的問題,比如上面的例子,我不僅看到每個人不穿鞋睡覺頭不痛的現象,還能反事實的推斷出每個人穿鞋睡覺頭不疼,進而得出穿鞋睡覺對頭疼的具體影響程度。

上面的解釋說明,相關 < 干預 < 反事實(即解決反事實問題的方法可以處理干預和相關問題,反之不成立)。傳統的機器學習方法是處理相關性問題的,而因果推斷關注反事實層。因此因果推斷能解釋的事情,將比傳統的機器學習方法更“高階”,也更貼合日常的需要

2. 基礎理論

2.1 業界流派

因果推斷是根據一個結果發生的條件對因果關係得出結論的過程。存在兩種研究方法[5]

實驗性研究:透過大量隨機對照實驗