参与刘晓坤 蒋思源

为机器学习插上因果推理的翅膀:这是一本系统的因果推理开源书

因果推理一直被视为深度学习中缺失的部分,除了「执果索因」的贝叶斯定理,我们很少有方法能对因果关系进行建模。在这一本开源书籍中,作者对因果推理做了一个连续且系统的介绍,这和以往我们只能找到离散的资料完全不同。除此之外,这本书用大量的案例与比喻帮助我们理解因果推理的概念与建模方法,且章节由简到难非常适合自学。

书籍开源地址:https://www.hsph.harvard.edu/miguel-hernan/causal-inference-book/

哈佛大学生物统计学和流行病学教授 Miguel Hernan 和 Jamie Robins 最近一直在写一本书,并希望为因果推理的概念和方法提供一个连贯性的介绍。他们表示目前因果推理相关的材料大部分都分散在多个学科的期刊上,或者存在各种技术文章中。他们希望这本书能帮助各种对因果推断感兴趣的读者,不论是流行病学家、统计学家、社会科学学家还是计算机科学家。这本书主要分为三部分,它们的难度依次递增:不带模型的因果推理、带模型的因果推理、复杂长跨度数据的因果推理

在书籍的主页上,作者提供了整本书的学习资源,它们目前是最新的草稿。如果有更新,作者同样会更新这些资源,因此读者需要确保下载的是最新的。如果读者发现了一些错误或建议,也可以在主页上提交你们的看法。下面是一些书籍与对应的代码资源:

  • 第一部分(1-10 章):https://cdn1.sph.harvard.edu/wp-content/uploads/sites/1268/2018/12/hernanrobins_v1.10.37.pdf

  • 第二部分(11-17 章):https://cdn1.sph.harvard.edu/wp-content/uploads/sites/1268/2019/01/hernanrobins_v2.17.19.pdf

  • 第三部分(19-21 章):https://cdn1.sph.harvard.edu/wp-content/uploads/sites/1268/2018/11/hernanrobins_v3.21.5.pdf

其中第一部分最后的更新为 2018 年 12 月 24 号,第二部分最后的更新时间为 12 月 31 号,第三部分为 11 月 25 号。

  • 第二部分的 Python 代码:https://cdn1.sph.harvard.edu/wp-content/uploads/sites/1268/2015/08/R_part2.zip

  • 第二部分的 R 代码:https://github.com/jrfiedler/causal_inference_python_code

如果你希望阅读这本书,那么你可能对因果推理非常感兴趣。但是作为一个正常人类,我们其实已经掌握了因果推断的基本概念。我们当然已经知道什么是因果效应,也清楚地明白联系和因果之间的区别,甚至我们一生都在不断地使用这些知识。

我们知道不吃午饭就会饿、不喝水就会渴,我们同样也能区分春天和发芽的因果关系、春天和季节的相关性关系,这些都是很自然的感受与理解。但是在这本书中,作者会由最基本的概念出发,逐步形式化我们对因果关系的理解,并采用科学的方法对这些关系建模。

本书使用的语言风格非常形象,每一个形式化概念的解释都以具体的医疗案例展开,适合各种学科领域的人入门。我们来看看第一章的部分内容简介。

宙斯接受了心脏移植,然后死了。赫拉也接受了心脏移植,然后活下来了。从这些数据中可以得出心脏移植 A 和存活 Y 这两个变量之间的因果关系吗?当然,是不行的。

具体而言,即使赫拉是没有接受心脏移植,然后活下来了,也不能判断是心脏移植导致了死亡。

这里首先需要考虑到宙斯和赫拉之间的差异,会不会引进新的变量。例如,有可能是因为他们性别不同导致了心脏移植的成败。

其次,在这个案例中是无法获得一个个体的全部自变量样本的,宙斯或赫拉要么接受要么不接受心脏移植,不可能两者皆有,因为因变量是死亡或者存活。这引出了一个非常重要的概念,即因果关系和相关关系之间的区别。

如下表所示,这里假设自变量 A 是可以完全采样的,分别为 a=0(不服用阿司匹林)和 a=1(服用阿司匹林),因变量 Y 是感冒,即 Y=0(不感冒),Y=1(感冒)。根据表中数据的统计,在 20 个被试中,服用阿司匹林时,感冒的人数为 10,不感冒的人数为 10;不服用阿司匹林时的情况也是一样。所以,我们并没有发现服用阿司匹林对感冒概率的降低影响,从数据得出的结论是 A 和 Y 之间无因果关系。

再看看下一个表,每个人都只试验了一个条件,要么服用阿司匹林,要么不服用。这里包含的数据属于上表的一部分。其中 7 个人没有服用阿司匹林,13 个人服用了。然后,没有服用阿司匹林的人之中,有 3 个人感冒了,概率为 3/7;服用了阿司匹林的人之中,有 7 个人感冒了,概率为 7/13。7/13 大于 3/7,所以服用阿司匹林会导致感冒?当然不是,这只能表明两者之间存在相关关系,而不是因果关系。

最后,两个案例肯定是不够的。无论对于因果关系还是相关关系,足够的样本数都是最基本的。简言之,在少样本的情况下,任意截取部分数据都能得出很不同的统计分布。

于是,我们可以总结出,可信的因果关系的推断需要满足如下三点:

  • 自变量的随机化,避免引进新的隐藏变量;

  • 试验全部自变量采样;

  • 具备足够样本数。

所以,通常而言,识别个体样本的因果关系是不可行的。以上这些内容是根据书中的第一章的部分总结,原书阐述具体得多,感觉就是统计学专业毕业然后当了多年医生的大学教授写出来的。

此外,因果关系还有一个很重要的性质是方向性,也就是分清楚什么是因什么是果。两个相关的变量 A 和 B 可能存在四种因果关系:A 导致 B、B 导致 A、C 导致 A 和 B、无关(纯属偶然的相关性)。在深度学习监督学习范式中,输入和输出属于这四种关系的哪一种呢?仅靠深度学习本身是无法确定的,这也是因果推理作为深度学习补充的必要之处。关于这方面的更多讨论,感兴趣的读者可以参见:因果推理监督学习的统一概念框架:两者并不是对立的

最后,全书的目录如下所示:

入门数学
91
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

因果推理技术

基于因果关系的一类推理方法,是一种常见推理模式,涉及观察到的共同效应的原因的概率依赖性。

监督学习技术

监督式学习(Supervised learning),是机器学习中的一个方法,可以由标记好的训练集中学到或建立一个模式(函数 / learning model),并依此模式推测新的实例。训练集是由一系列的训练范例组成,每个训练范例则由输入对象(通常是向量)和预期输出所组成。函数的输出可以是一个连续的值(称为回归分析),或是预测一个分类标签(称作分类)。