ID algorithm: 一种快速给出计算任意干预分布p(Y|do(X))的算法
Posted Jie Qiao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ID algorithm: 一种快速给出计算任意干预分布p(Y|do(X))的算法相关的知识,希望对你有一定的参考价值。
介绍
在这里我会介绍一种快速地计算干预后分布的通用识别算法。举个例子,相信大家都知道back-door准则,设有因果关系 X ← Z → Y \\displaystyle X\\leftarrow Z\\rightarrow Y X←Z→Y且 X → Y \\displaystyle X\\rightarrow Y X→Y,于是
p ( d o ( x ) , y , z ) = p ( z ) p ( d o ( x ) ∣ z ) ⏟ = 1 p ( y ∣ z , d o ( x ) ) ⟹ ∑ z p ( d o ( x ) , y , z ) = ∑ z p ( z ) p ( y ∣ z , d o ( x ) ) ⟹ p ( y ∣ d o ( x ) ) p ( d o ( x ) ) ⏟ = 1 = ∑ z p ( z ) p ( y ∣ z , d o ( x ) ) ⟹ p ( y ∣ d o ( x ) ) = ∑ z p ( z ) p ( y ∣ z , x ) \\beginarray c c l & p(do(x),y,z) & =p(z)\\underbracep(do(x)|z)_=1 p(y|z,do(x))\\\\ \\Longrightarrow & \\sum _z p(do(x),y,z) & =\\sum _z p(z)p(y|z,do(x))\\\\ \\Longrightarrow & p(y|do(x))\\underbracep(do(x))_=1 & =\\sum _z p(z)p(y|z,do(x))\\\\ \\Longrightarrow & p(y|do(x)) & =\\sum _z p(z)p(y|z,x) \\endarray ⟹⟹⟹p(do(x),y,z)∑zp(do(x),y,z)p(y∣do(x))=1 p(do(x))p(y∣do(x))=p(z)=1 p(do(x)∣z)p(y∣z,do(x))=∑zp(z)p(y∣z,do(x))=∑zp(z)p(y∣z,do(x))=∑zp(z)p(y∣z,x)
于是我们发现干预后分布 p ( y ∣ d o ( x ) ) \\displaystyle p(y|do(x)) p(y∣do(x))可以用观测数据 ∑ z p ( z ) p ( y ∣ z , x ) \\displaystyle \\sum _z p(z)p(y|z,x) z∑p(z)p(y∣z,x)来计算。这就是back-door公式了,它允许我们从纯粹的观察数据中得到干预后的分布。然而这个计算是依赖于给定的因果结构图的,而不同的结构会有不同的结果,甚至若是存在隐变量,比如图中的Z不可观测的话,那么分布 P ( y ∣ d o ( x ) ) \\displaystyle P( y|do( x)) P(y∣do(x))就是不可识别的。
那么有没有一种通用的,快速的识别以及计算方法呢?本文介绍一种快速识别的算法。
ID algorithm在2003年被提出用来解决这个问题的,但这个算法不太好懂,本文的思路基于2017年的文章,并基于fixing操作来求解这一问题。接下来我们都是假设因果图是已知的。
fixing and Marginalization操作
这里先介绍一种fixing操作,首先有这样的图
所谓fixing就是把该变量的入度边干掉,其实就是一种干预操作,比如下图就是将 A 1 , A 0 \\displaystyle A_1 ,A_0 A1,A0 fix掉:
这样fix的操作其实本质上就是做了一个分布的变换:
p
(
d
o
(
A
0
)
,
L
1
,
d
o
(
A
1
)
,
Y
)
=
p
(
A
0
,
L
1
,
A
1
,
Y
)
p
(
A
0
)
p
(
A
1
∣
L
1
,
A
0
)
p( do( A_0) ,L_1 ,do( A_1) ,Y) =\\fracp( A_0 ,L_1 ,A_1 ,Y)p( A_0) p( A_1 |L_1 ,A_0)
p(do(A0),L1,do(A1),Y)=p(A0)p(A1∣L1,A0)p(A0,L1,A1,Y)
这是因为
p
(
d
o
(
A
0
)
)
=
1
,
p
(
d
o
(
A
1
)
∣
L
1
,
A
0
)
=
1
\\displaystyle p( do( A_0)) =1,p( do( A_1) |L_1 ,A_0) =1
p(do(A0))=1,p(do(A1)∣L1,A0)=1,除以这两个分布就相当于令他们等于1了,做了一个转换。
Districts and Fixing
更一般的情况是,给定一个因果网络,以及变量 v = v 1 , . . . , v n \\displaystyle v=\\v_1 ,...,v_n \\ v=v1,...,vn,假设没有隐变量,对于分布 p ( v ) \\displaystyle p(v) p(v),可以进行概率分解:
P ( v ) = ∏ i P ( v i ∣ p a i ) P(v)=\\prod _i P(v_i |pa_i ) P(v)=i∏P(vi∣pai)
那如果我们对其中某个
v
j
\\displaystyle v_j
vj进行干预,则意味着
p
(
d
o
(
v
j
)
∣
P
a
j
)
=
1
\\displaystyle p( do( v_j) |Pa_j) =1
p(do(vj)∣Paj)=1,于是,干预后的分布为
P
∗
(
v
)
=
∏
i
∈
1
,
.
.
,
j
−
1
,
j
+
1
,
.
.
.
,
n
P
(
v
i
∣
p
a
i
)
=
P
(
v
)
P
(
v
j
∣
p
a
j
)
(1)
P^* (v)=\\prod _i\\in \\1,..,j-1,j+1,...,n\\ P(v_i |pa_i )=\\fracP(v)P(v_j |pa_j ) \\tag1
P∗(v)=ID algorithm: 一种快速给出计算任意干预分布p(Y|do(X))的算法