在上一篇文章(灵魂三问:因果推断)中,我们介绍了什么是因果推断,为什么要以及如何进行因果推断。本文将围绕如下内容介绍如何进行因果关系发现研究:
-
因果发现的三个层级
-
因果发现的重要工具
-
因果发现的具体方法
(本文共4137字,预计阅读时长10分钟)
先从一组数据说起:为了研究某个治疗方案是否对某疾病有疗效,研究人员安排了治疗组和控制组进行实验,每组40人。治疗组将严格按照方案进行治疗,而控制组的人只能得到一些安慰剂。在实验进行一段时间后,得到两组病人的生存率,如图所示。
-
人群总体:50%(治疗组生存率) >40% (控制组生存率)
-
男性:60%(治疗组生存率) <70% (控制组生存率)
-
女性:20%(治疗组生存率) <30% (控制组生存率)
上面的数据给出一个令人迷惑的结论:从人群总体的角度,我们发现治疗组的生存率要高于控制组。但当区分性别来看,会完全颠覆之前的结论,即无论男性还是女性,治疗组的生存率均低于控制组。
你是不是也有一点糊涂?别担心,这就是困扰了统计学家60多年的著名的辛普森悖论,是因为仅通过学习某个条件概率,就去回答因果性问题而产生的。
一、认知因果的三个层次
图灵奖得主Judea Pearl提出,认知因果包含三个层级 1 。通过观察发现事物之间的关联只是第一个层级;在这之上,还需要对过程进行有目的的干预,才能去回答“如果进行了治疗,生存率是否会提高的问题”。认知因果的第三个层级是反事实推理,回答“假如没有…,那么…“这样的问题。
传统的机器学习最擅长做的是根据数据中呈现出来的相关性学习函数 f ( Y ∣ X 1 , … , X m ) f\left({Y|X}_1,\ldots,X_m\right) f(Y∣X1,…,Xm)去拟合条件概率 P ( Y ∣ X 1 , … , X m ) P\left(Y|X_1,\ldots,X_m\right) P(Y∣X1,…,Xm)。这种机器学习模型只学习到了认知因果的第一个层次即关联。
干预,是对所有可能影响因果关系的因子进行控制。如果不使用严格的控制实验,仅通过数据进行干预,需要引入由do算子定义的干预分布,直观地描述对 X i X_i Xi进行有意图干预时,其他变量概率分布的变化情况 2 。例如: P ( Y ∣ d o ( X ) = a ) P(Y|do\left(X\right)=a) P(Y∣do(X)=a)描述了当 X X X取值为 a a a时, Y Y Y所对应的分布。写成如下形式:
P ( X 1 , … , X i − 1 , X i + 1 … , X n | d o ( X i ) = a ) = P ( X 1 , … , X n ) P ( X i | p a i ) I ( X i = a ) P\left(X_1,\ldots{,X}_{i-1,}X_{i+1}\ldots,X_n\middle| d o\left(X_i\right)=a\right)=\frac{P\left(X_1,\ldots,X_n\right)}{P\left(X_i\middle|{pa}_i\right)}I(X_i=a) P(X1,…,Xi−1,Xi+1…,Xn∣∣do(Xi)=a)=P(Xi∣pai)P(X1,…,Xn)I(Xi=a)
其中, p a i {pa}_i pai表示所有产生 X i X_i Xi的原因; I ( X i = a ) I(X_i=a) I(