因果推理:PC算法

对于未知图结构的因果推理,可以利用PC算法构造DAG图。

基本定义

Skeleton:初始化图

G

G

G 为无向完全图。

PDAG:设

G

=

(

V

,

E

)

G = (V, E)

G=(V,E) 是一个图,若边集

E

E

E 中包含有向边和无向边,则称?? 是一个部分有向图。若部分有向图 ?? 中不存在有向圈,则称 ?? 是一个部分有向无环图 (PDAG)。

马尔科夫等价:贝叶斯网络

< G 1 , P 1 >

< G 2 , P 2 >

马尔科夫等价, 当且仅当

G

1

G_1

G1? 和

G

2

G_2

G2? 具有相同的框架和V结构。

有向无环图

G

=

(

V

,

E

)

G = (V, E)

G=(V,E) ,任意有向边

V

i

V

j

E

V_i \rightarrow V_j ∈ E

Vi?→Vj?∈E,若存在图

G

=

(

V

,

E

)

G' = (V, E')

G′=(V,E′) 与

G

G

G 等价,且

V

j

V

i

E

V_j \rightarrow V_i ∈ E'

Vj?→Vi?∈E′,则称有向边

V

i

V

j

V_i \rightarrow V_j

Vi?→Vj? 在

G

G

G 中是可逆的,否则是不可逆的。

同理, 对任意无向边

V

i

V

j

E

V_i \rightarrow V_j ∈ E

Vi?→Vj?∈E,若存在

G

1

=

(

V

,

E

1

)

G_1 = (V, E_1)

G1?=(V,E1?)、

G

2

=

(

V

,

E

2

)

G_2 = (V, E_2)

G2?=(V,E2?) 均与

G

G

G 等价,且

V

i

V

j

E

1

V_i \rightarrow V_j ∈ E_1

Vi?→Vj?∈E1?、

V

j

V

i

E

2

V_j \rightarrow V_i ∈ E_2

Vj?→Vi?∈E2?, 则 称 无 向边

V

i

V

j

V_i \rightarrow V_j

Vi?→Vj? 在

G

G

G 中是可逆的,否则是不可逆的。

CPDAG:设

G

=

(

V

,

E

)

G = (V, E)

G=(V,E) 是一个部分有向无环图,若

E

E

E 中的有向边都是不可逆的,并且

E

E

E 中的无向边都是可逆的,则称

G

G

G 是一个完全部分有向无环图(CPDAG)。

传统方法

算法过程参考文献 1,是经典的PC算法过程。

在文献2中对其skeleton估计进行重写,如下所示:

条件独立性优化

偏相关系数

指校正其它变量后某一变量与另一变量的相关关系,校正的意思可以理解为假定其它变量都取值为均数

服从高斯分布的随机变量,条件独立性与偏相关系数为0等价:

假设随机变量

X

X

X 服从多元高斯分布,对于

i

=?

j

(

1

,

.

.

.

,

p

)

k

?

(

1

,

.

.

.

,

p

)

/

(

i

j

)

i \not =j∈(1, ..., p),k?(1, ..., p) /\ (i,j)

i?=j∈(1,...,p),k?(1,...,p)/ (i,j),用

ρ

i

j

k

ρ_{i,j|k}

ρi,j∣k? 表示

X

(

i

)

X(i)

X(i) 和

X

(

j

)

X(j)

X(j) 与

X

(

r

)

(

r

k

)

X^{(r)} (r∈k)

X(r)(r∈k) 之间的偏相关系数 。 当且仅当

X

(

i

)

X(i)

X(i) 和

X

(

j

)

X( j )

X(j) 条件独立与

X

(

r

)

(

r

k

)

X^{(r)} (r∈k)

X(r)(r∈k) 时,

ρ

i

j

k

=

0

ρ_{i,j|k}=0

ρi,j∣k?=0。

∴ 条件独立性可由偏相关估计出来,条件独立性检验转偏相关系数检验。

任意两个变量

i

,

j

i, j

i,j的

h

h

h(排除其他

h

h

h个变量的影响后,

h

< = k ? 2 h<=k-2 h<=k?2)阶样本偏相关系数:

ρ

i

,

j

k

=

ρ

i

,

j

k

\

h

?

ρ

i

,

h

k

\

h

ρ

j

,

h

k

\

h

(

1

?

ρ

i

,

h

k

\

h

2

)

(

1

?

ρ

j

,

h

k

\

h

2

)

\rho_{i, j \mid \mathbf{k}}=\frac{\rho_{i, j \mid \mathbf{k} \backslash h} - \rho_{i, h \mid \mathbf{k} \backslash h}\rho_{j,h \mid \mathbf{k} \backslash h}}{\sqrt{\left(1-\rho_{i, h \mid \mathbf{k} \backslash h}^{2}\right)\left(1-\rho_{j, h \mid \mathbf{k} \backslash h}^{2}\right)}}

ρi,j∣k?=(1?ρi,h∣k\h2?)(1?ρj,h∣k\h2?)
?ρi,j∣k\h??ρi,h∣k\h?ρj,h∣k\h??

Fisher Z Test(

ρ

=?

0

ρ\not=0

ρ?=0时的显著性检验)

ρ

=?

0

ρ\not=0

ρ?=0时不是正态分布,不能进行

t

t

t 检验。将

ρ

\rho

ρ 进行 Fisher Z 转换,转换后可以认为是正态分布。

Fisher’s z-transform:

Z

(

i

,

j

k

)

=

1

2

log

?

(

1

+

ρ

^

i

,

j

k

1

?

ρ

^

i

,

j

k

)

Z(i, j \mid \mathbf{k})=\frac{1}{2} \log \left(\frac{1+\hat{\rho}_{i, j \mid \mathbf{k}}}{1-\hat{\rho}_{i, j \mid \mathbf{k}}}\right)

Z(i,j∣k)=21?log(1?ρ^?i,j∣k?1+ρ^?i,j∣k??)
零假设:

H

0

(

i

,

j

k

)

:

ρ

i

j

k

=?

0

H_0(i,j|k): ρ_{i,j|k} \not= 0

H0?(i,j∣k):ρi,j∣k??=0

对立假设:

H

1

(

i

,

j

k

)

:

ρ

i

j

k

=

0

H_1(i,j|k): ρ_{i,j|k} = 0

H1?(i,j∣k):ρi,j∣k?=0

n

?

k

?

3

Z

(

i

,

j

k

)

>

Φ

?

1

(

1

?

α

/

2

)

\sqrt{n-|k|-3}|Z(i,j|k)>Φ^{-1}(1-α/2)

n?∣k∣?3
?∣Z(i,j∣k)>Φ?1(1?α/2),

H

0

H_0

H0?成立。

∴ 用

n

?

k

?

3

Z

(

i

,

j

k

)

< = Φ ? 1 ( 1 ? α / 2 ) \sqrt{n-|k|-3}|Z(i,j|k)<=Φ^{-1}(1-α/2) n?∣k∣?3 ?∣Z(i,j∣k)<=Φ?1(1?α/2)替换 PC-Algorithm 中的“如果 i , j i,j i,j 被 k k k d ? s e p a r a t i o n d-separation d?separation”

CPDAG

将 Skeleton 扩展为等价的CPDAG:

Python 实现

https://github.com/dreamhomes/RCADev-AIOps/blob/main/casual_graph/src/pc_casual_graph.py

参考


  1. Spirtes, Peter, and Clark Glymour. “An algorithm for fast recovery of sparse causal graphs.” Social science computer review 9.1 (1991): 62-72. ??

  2. Kalisch, Markus, and Peter Bühlmann. “Estimating high-dimensional directed acyclic graphs with the PC-algorithm.” Journal of Machine Learning Research 8.Mar (2007): 613-636. ??