对于未知图结构的因果推理,可以利用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_1, P_1> <G1,P1> 和 < G 2 , P 2 > <G_2, P_2> <G2,P2>马尔科夫等价, 当且仅当 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)=21log(1−ρ^i,j∣k1+ρ^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
参考
-
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. ↩︎