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 XZY X → Y \\displaystyle X\\rightarrow Y XY,于是

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(ydo(x))=1 p(do(x))p(ydo(x))=p(z)=1 p(do(x)z)p(yz,do(x))=zp(z)p(yz,do(x))=zp(z)p(yz,do(x))=zp(z)p(yz,x)

于是我们发现干预后分布 p ( y ∣ d o ( x ) ) \\displaystyle p(y|do(x)) p(ydo(x))可以用观测数据 ∑ z p ( z ) p ( y ∣ z , x ) \\displaystyle \\sum _z p(z)p(y|z,x) zp(z)p(yz,x)来计算。这就是back-door公式了,它允许我们从纯粹的观察数据中得到干预后的分布。然而这个计算是依赖于给定的因果结构图的,而不同的结构会有不同的结果,甚至若是存在隐变量,比如图中的Z不可观测的话,那么分布 P ( y ∣ d o ( x ) ) \\displaystyle P( y|do( x)) P(ydo(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(A1L1,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)=iP(vipai)

那如果我们对其中某个 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))的算法

ipad 人脸识别干啥用的

Java算法 “桶排序”

l1-012

C ++快速排序算法崩溃[关闭]

BZOJ 2242 [SDOI2011]计算器(快速幂+Exgcd+BSGS)