選自GitHub
作者:David Salazar
編輯:陳萍、魔王
機器學習方法是預測的有力工具,但是很多領域的工作或研究重視對因果關係的討論。相關性並不意味著因果關係,那麼如何識別因果關係呢?
David Salazar 發布了一系列博客介紹因果關係。在之前的文章中,他將因果關係定義為幹預分布(interventional distribution),並介紹了兩種識別因果關係的策略:後門準則和前門準則。然而,這些準則並不適用於所有因果關係。
那麼一般而言,給定因果模型和不完整的度量集,如何確定因果關係可識別呢?
本文提供了一種答案:利用 c-component (confounded component) 概念開發的圖標準(graphical criterion),並通過多個實例進行演示。
馬爾可夫模型
當我們可以得到因果模型中所有變量的度量值時,則該因果模型為馬爾可夫模型。在這種情況下,調整公式(adjustment formula)就是識別策略:如果 X, Pa(X) 的父代存在度量值,則任意因果關係 X→Y 都是可識別的。
那麼,如果你沒有觀察到 x 的父代呢?
半馬爾可夫模型
如果一個未觀察到的變量在圖中有兩個子代,則不符合馬爾可夫屬性。在這種情況下我們未必能夠使用調整公式。例如,如果 X 的某個父代未被觀察到,則我們無法將它作為識別策略。不過,我們或許仍可以使用後門或前門準則。
我們來看一個相關示例。在如下例子中,雙向虛線表示變量之間的隱藏共同原因(hidden common cause)。U 表示所有未度量變量,V 表示所有觀察到的變量。
為了確定 X 對所有其他觀測變量 v 的因果關係,我們必須根據觀察到的幹預前概率來估計幹預後的概率 P(v|do(X))。
請記住這裡的因果模型同時也是概率模型。特別是,它們導致了聯合概率分布的分解。然而,當模型包含未觀察到的混雜因素(confounder)時,我們必須將它們邊緣化,以獲得觀測變量的聯合概率分布:
在這種情況下,觀測值的分解如下:
假設 P(v|do(X=x)) 表示幹預,則它可以通過截斷上述表達式進行表示,這樣我們就不用計算 X 的概率了:
我們能使用觀測變量表示 P(v|do(X)) 嗎?首先,我們必須了解 confounded component。
confounded component
請注意,在這兩個表達式中,未觀察到的混雜因素將觀察到的變量分成不相交的組:若且唯若兩個變量通過雙向路徑連接時,它們才會被分配到同一組。在每一組中,S_k 被稱為 confounded component (c-component)。在這種情況下存在兩個 c-component,它們會引起兩次因式分解 (c-factor):
注意,在對所有其他變量進行幹預的情況下,每個 (c-factor) Q_k 都可以解釋為 S_k 中變量的幹預後分布。我們可以將聯合觀測分布表示為 c-factor 的乘積:
反過來,如果將 Q_1 中的 P(x|u_1) 邊緣化,則我們可以用 Q_1、Q_2 來定義 P(v|do(X)):
因此,P(v|do(X)) 是可識別的,前提是:a)我們可以根據幹預前的概率計算幹預後的概率 Q_1、Q_2;b)我們可以將 x 從估計的 Q_1 中邊緣化,從而計算 Q_1^x。
事實上,Tian 和 Pearl 的研究《A General Identification Condition for Causal Effects》表明每個 c-factor 都是可識別的。因此,計算 P(v|do(X)) 的唯一條件是「若且唯若 Q_1^x 可識別」。在這種情況下:
因此,我們可以通過對 X 的值求和將 x 從 Q_1 中邊緣化。
最後,對 P(v|do(X)) 的估計如下:
識別因果關係的通用標準
首先,請注意,對於任何具有雙向路徑的圖,我們都可以通過劃分 c-component 及其各自 c-factor 的方法,來分解聯合概率分布:
還需要注意的是,通過幹預 x 生成的截斷分布可以用 c-factor 來表示:
上式中,一旦從因式分解中刪除了 x,則 Q_x^x 是 x 位置的 c-factor。因此,如果 Q_x^x 是可識別的,則 P(v|do(X=x) 也是可識別的。
實際上,Tian 和 Pearl 的研究表明,若且唯若不存在將 X 連接至其子代的雙向路徑(僅具有雙向邊的路徑)時,Q_x^x 可識別。因此,我們可以得到以下測試,用於確定 P(v|do(X=x) 是否可識別:
若且唯若沒有雙向路徑將 X 連接至它的任何子代時,P(v|do(X=x) 是可識別的。
注意,如果 P(v|do(X=x) 可識別,則 P(Y|do(X=x)) 也是可識別的。因此,這一標準足以確定 P(v|do(X=x) 是否不可識別。假設我們只對單個變量 Y 的因果關係感興趣,那麼我們可以只考慮 Y 的祖代變量的子圖,來簡化問題。
直觀理解
如何直觀地理解可識別性測試呢?可識別性的關鍵不在於阻止 X 和 Y 之間的後門路徑,而是阻止 X 與其任何子代(即 Y 的祖代)之間的後門路徑。因此,通過阻斷這些路徑,我們可以確定觀察到的關聯的哪一部分是虛假的,哪些是真正的因果關係。
接下來,我們來看應用示例。
示例 1
先看上文中的示例。為什麼它是可識別的?該示例中所有其他變量都是 Y 的祖代,在這種情況下我們無法簡化問題。因此,我們必須查看 X 和它的子代之間是否存在雙向路徑:
tidy_dagitty(example, layout = "nicely", seed = 2) %>% node_descendants("x") %>% mutate(linetype = if_else(direction == "->", "solid", "dashed")) %>% ggplot(aes(x = x, y = y, xend = xend, yend = yend, color = descendant)) + geom_dag_edges(aes(end_cap = ggraph::circle(10, "mm"), edge_linetype = linetype)) + geom_dag_point() + geom_dag_text(col = "white") + labs(title = "The causal effect of X is identifiable", subtitle = "There's no bi-directed path between X and its descendats")
假設 X 和它的子代之間沒有雙向路徑,則 X 的因果關係是可識別的。
示例 2
non_identifiable_example <- dagify(x ~ z, x ~~~ z, x ~~ y, w ~ x, w ~~ z, y ~ w, y ~~ z)
在本例中,為了確定因果關係是否可識別,我們需要尋找 X 及其子代之間的雙向路徑。如果沒有,則因果關係可識別。
tidy_dagitty(non_identifiable_example, layout = "nicely", seed = 2) %>% node_descendants("x") %>% mutate(linetype = if_else(direction == "->", "solid", "dashed")) %>% ggplot(aes(x = x, y = y, xend = xend, yend = yend, color = descendant)) + geom_dag_edges(aes(end_cap = ggraph::circle(10, "mm"), edge_linetype = linetype)) + geom_dag_point() + geom_dag_text(col = "white")
注意,在 X 和 W(X 的子代之一)之間存在一條經過 Z 的雙向路徑,根據上文介紹的圖標準,其因果關係不可識別。
示例 3
third_example <- dagify(z1 ~ x + z2, x ~ z2, x ~~ z2, x ~~ y, z2 ~~ y, z3 ~ z2, x ~~ z3, y ~ z1 + z3)
與前面的示例一樣,本例中我們仍需在 X 及其子代之間尋找雙向路徑。
tidy_dagitty(third_example, layout = "nicely", seed = 2) %>% node_descendants("x") %>% mutate(linetype = if_else(direction == "->", "solid", "dashed")) %>% ggplot(aes(x = x, y = y, xend = xend, yend = yend, color = descendant)) + geom_dag_edges(aes(end_cap = ggraph::circle(10, "mm"), edge_linetype = linetype)) + geom_dag_point() + geom_dag_text(col = "white")
注意,X 與其 Y 以外的唯一子代(z1)沒有雙向路徑。因此,其因果關係可識別。
可識別性的必要條件是什麼?
對於可識別性,本文提到的測試是充分條件但並非必要條件。那麼,是否存在充要條件呢?答案是肯定的,Pearl 和 Shipster(2006)提到了一種算法。它擴展了本文中的想法,根據幹預前的概率返回因果關係的估計值。它是完備的且等效於 Pearl 的 do-calculus。
在 R 語言中,使用 causaleffect 軟體包能夠實現該算法。將其用於第一個示例,得到:
first_example_igraph <- graph.formula(x -+ z_2, z_2 -+ x, x -+ z_1, z_2 -+ z_1, z_1 -+ y, y -+ z_1, x -+ y, z_1 -+ y, z_2 -+ y, simplify = FALSE) %>% set.edge.attribute("description", index = c(1, 2, 5, 6), "U")ce <- causal.effect(y = "y", x = "x", z = NULL, G = first_example_igraph, expr = TRUE) plot(TeX(ce), cex = 3)
總結
在半馬爾可夫模型中,變量之間存在隱藏共同原因,這些原因可能會破壞識別策略。本文介紹了一種對可識別性的充分測試方法,它基於隱藏共同原因的本質(用雙向邊來表示)。如果 X 和它的子代(也是 Y 的祖代)之間存在雙向路徑,則因果關係不可識別。
本文還提供了一個充分必要條件,並展示了如何在 R 語言中使用它。該條件是完備的,當因果關係可識別時,它返回一個估計量,可用於基於觀測數據估計因果關係。
Amazon SageMaker 是一項完全託管的服務,可以幫助開發人員和數據科學家快速構建、訓練和部署機器學習 模型。SageMaker完全消除了機器學習過程中每個步驟的繁重工作,讓開發高質量模型變得更加輕鬆。
現在,企業開發者可以免費領取1000元服務抵扣券,輕鬆上手Amazon SageMaker,快速體驗5個人工智慧應用實例。
© THE END
轉載請聯繫本公眾號獲得授權
投稿或尋求報導:content@jiqizhixin.com
原標題:《相關性 ≠ 因果性,用圖的方式打開因果關係》
閱讀原文