对于未知图结构的因果推理,可以利用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?)
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
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
CPDAG
将 Skeleton 扩展为等价的CPDAG:
Python 实现
https://github.com/dreamhomes/RCADev-AIOps/blob/main/casual_graph/src/pc_casual_graph.py
参考
-
Spirtes, Peter, and Clark Glymour. “An algorithm for fast recovery of sparse causal graphs.” Social science computer review 9.1 (1991): 62-72. ??
-
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. ??