因果推理是科学探究的一个组成部分,从古希腊哲学开始就有着悠久的历史。从生物医学到社会科学等领域都依赖因果推理来评估理论,并回答关于我们居住的物理和社会世界的实质性问题。And here we quote Gary King’s words
“More has been learned about causal inference in the last few decades than the sum total of everything that had been learned about it in all prior recorded history”.
“在过去的几十年里,人们对因果推理的了解超过了以往所有有记录的历史中关于因果推理的所有知识的总和”。
紧接着有人可能会疑惑为什么因果推理是如此的
crucial
,为什么他没有成为类似概率论或者贝叶斯理论一样的常见的数学表达形式。这就让人们想起来了那句话
百因必有果,你的报应就是我
,事实上这些因果论的论调总是模糊的,许多哲学家至今也未达成共识。(至于为什么你可以类比想想自己小时候为什么没考好,然后总是有各种各样的理由搪塞)
面对你为什么小时候没考好这种难度极大的哲学问题,现代因果推理的进步不是通过直接回答这些问题,而是通过创造灵活的方法来推理因果之间的关系,而不考虑人们选择的抽象概念。本文中的
Causal Reasoning
避开哲学上的模糊,采用一种更简单实用的方法进行因果推理,即所谓的
干涉主义
来定义因果关系。
随着越来越多可部署的传感器,计算机计算能力的发展,数据量的激增。人们希望机器学习参与到决策层面,甚至寄希望于机器学习能够取得不小的成功。因果推断必将不可或缺。虽然越来越多的数据和机器学习算法有助于做出高度准确的预测,但是
会出错
。这是因为从预测到决策并不简单,基于纯粹的数据预测模型的决策的因果效应可能是非常糟糕的。
for example
:机器学习可以应用于农场的数据来做出灌溉决策。特别是,让我们假设知道灌溉的效果是什么。在预测模型我们根据手机过去关于土壤湿度和其他变量的数据,然后根据过去的数据预测未来的土壤湿度水平。将预测转化为决策就是:土壤湿度低,灌溉!土壤湿度高,不灌溉!假设我们拥有过去的土壤湿度数据和历史天气数据,并据此训练出一个机器学习模型,这个模型可以指导我们在农场的灌溉决策么?
答案是否定的,我们不能根据我们所学的土壤湿度模型来做出灌溉决策。想象一下,有一天天气预报说会很热。我们的土壤湿度模型很可能预测土壤会非常潮湿,基于这种预测,我们很可能决定不灌溉。但是为什么我们的土壤湿度模型预测在非常热的日子里不需要灌溉呢?我们的模型是根据过去的土壤湿度数据训练的,但在过去,土壤是在一些预定的政策下灌溉的(例如,基于规则的决策还是农民的直觉)。如果这个政策总是在非常热的日子灌溉田地,那么我们的预测模型将了解到在非常热的日子里,土壤湿度很高。预测模型将非常准确,因为在过去这种相关性总是成立的。然而,如果我们根据我们的模型预测决定在非常热的日子里不给田地浇水,我们将会做出完全错误的决定!
因为模型只是捕捉到了炎热天气和农民过去灌溉决策之间的相关性。预测模型不关心底层机制,它只是认识到热天气意味着土壤潮湿的模式。但是一旦我们开始使用这种预测模型来驱使我们的灌溉决策,我们就打破了模型已经学会的模式。
Model and assumptions
因果推理的第一个重要步骤是建立一个清晰的因果假设模型。这包括写下已知的数据生成过程和机制。总的来说,有许多机制可以潜在地解释一组数据,这些自洽的机制中的每一个都会给我们提供我们所关心的因果效应的不同解决方案。所以,如果我们想得到因果问题的正确答案,我们必须清楚我们已经知道的东西…给定这个模型,我们将能够正式地指定效果A→→A;B我们要计算的。
Identify
使用模型来决定是否可以回答因果问题,并提供计算所需要的表达式。
Estimate
一旦我们有了识别因果效应的一般策略,我们就可以从几种不同的统计估计方法中选择来回答我们的因果问题。评估是一个分析数据的过程。
Refute
一旦我们有了答案,我们想尽一切可能来测试我们的潜在假设。我们的模型与数据一致吗?对所做假设的回答有多敏感?如果模型有一点错误,那会改变我们的答案一点还是很多?
Modeling and assumptions
为了估计因果效应,需要一种准确的表达形式来表达我们对治疗变量也好干预变量也好喝反事实推理。可以用图表或函数方程的形式来表示。至关重要的是,这个模型没有规定连接变量的确切函数形式,而是传达了因果关系的结构——谁影响谁。这种结构模型体现了我们对世界做出的所有领域知识或因果假设,因此也被称为结构因果模型——结构图因果模型(structural causal model)。考虑一个简单的例子,冰激凌销量的增加是否会导致游泳人数增加。图1显示了游泳人数和冰激凌销量的相关性。
结构因果图模型的力量来自于能够精确定义干预和反事实。然而,很难用传统的概率来表达这些概念。正如我们在上面看到的,区分干预和观察是很重要的,但不幸的是,概率演算缺乏一种语言来区分观察人们使用某个功能和将他们分配给该功能(两者都表示为
C
a
u
s
a
l
E
f
f
e
c
t
=
E
(
Y
∣
d
o
(
T
=
1
)
)
−
E
(
Y
∣
d
o
(
T
=
0
)
)
Identification
这一步骤表示模型是否可以从数据中估计因果效应,需要确定因果效应等式是否可以写成仅与观测数据相关的函数。正如我们将看到的,给定因果结构图,可以检查因果效应是否可以从数据中估计,如果可以,则提供估计公式。例如,回到我们的冰淇淋图表,因果关系是通过调节温度来确定的,然后分别估计每个温度范围内冰淇淋和游泳之间的关联。当我们这样做时,我们看到治疗和结果不再相关,因此表明观察到的相关性是由于温度,而不是由于吃冰淇淋的任何因果关系。温度变量被称为混杂因素,即使没有因果关系,也会导致治疗和结果之间的相关性。
Estimation
一旦确定了因果关系,我们就可以用统计方法来估计它。
Refute
以上三个步骤将给出我们因果问题的答案,但是我们应该在多大程度上相信这个估计呢?如上所述,因果解释来自识别,而识别又从建模假设中获得其有效性。因此,最后也可能是最重要的是检查导致认同的假设。此外,估计步骤还对数据的统计特性进行假设,以得出估计值,这也需要验证。虽然结构模型无法通过数据进行验证,但我们将讨论在某些情况下,观察到的数据如何帮助我们消除与数据不一致的因果模型,并检查我们的估计对因果假设的稳健性。
【干货书】《
因果
推理导论-
机器学习
角度》,132页pdf
有几个主要的主题贯穿全书。这些主题主要是对两个不同类别的比较。当你阅读的时候,很重要的一点是你要明白书的不同部分适合什么类别,不适合什么类别。
统计与
因果
。即使有无限多的数据,我们有时也无法计算一些
因果
量。相比之下,很多统计是关于在有限样本中解决不确定性的。当给定无限数据时,没有不确定性。然而,关联,一个统计概念,不是
因果
关系。在
因果
推理方面还有更多的工作要做,即使在开始使用无限数据之后也是如此。这是激发
因果
推理的主要区别。我们在这一章已经做了这样的区分,并将在整本书中继续做这样的区分。
识别与评估。
因果
效应的识别是
因果
推论所独有的。这是一个有待解决的问题,即使我们有无限的数据。然而,
因果
推理也与传统统计和
机器学习
共享估计。我们将主要从识别
因果
效应(在第2章中,4和6)之前估计
因果
效应(第7章)。例外是2.5节和节4.6.2,我们进行完整的例子估计给你的整个过程是什么样子。
介入与观察。如果我们能进行干预/实验,
因果
效应的识别就相对容易了。这很简单,因为我们可以采取我们想要衡量
因果
效应的行动,并简单地衡量我们采取行动后的效果。观测数据变得更加复杂,因为数据中几乎总是引入混杂。
假设。将会有一个很大的焦点是我们用什么假设来得到我们得到的结果。每个假设都有自己的框来帮助人们注意到它。清晰的假设应该使我们很容易看到对给定的
因果
分析或
因果
模型的批评。他们希望,清晰地提出假设将导致对
因果
关系的更清晰的讨论。
2. 为什么研究
因果
关系
参考:
因果
关系的必要性
机器学习
基本上可以算是统计
机器学习
问题,也就是通过大量的数据学习到一些隐藏的patt
er
ns,从而得到数据与数据之前的相关关系,进而进行目标检测、追踪、知识问答等处理。很自然的一个问题就是,既然
机器学习
当前主流是以统计规律得到的相关关系为主,那么我们为什么要研究
因果
关系呢?
Yule-Simpson’s Paradox (辛普森悖论):
变量X和Y在边缘上存在正相关,但是给定另
Python中基于
机器学习
的
因果
推理/提升
内容: •••
ca
use
infe
r是一个Python软件包,用于使用
机器学习
来估计平均和条件平均处理效果。 它的目标是编译标准和高级的
因果
推理模型,并展示其用法和功效-所有这些都具有帮助人们在商业,医学和社会经济领域学习CI技术的总体雄心。 请参阅以获取该软件包的完整概述,包括模型和数据集。
ca
use
infe
r可以通过pip从PyPI下载或直接从此存储库中获取:
pip install
ca
use
infe
r
git clone https://github.com/andrewtavis/
ca
use
infe
r.git
cd
ca
use
infe
r
python setup.py install
import
ca
use
infe
r
因果
推理算法
两种模型方法
对治疗和对照组的单独模型进行了训练和组合,以得出平均治疗效果(Hanso
DoWhy | An end-to-end library for
ca
usal
infe
re
nce
Getting started with DoWhy: A simple example
使用
因果
推理的四个步骤来动手估计
因果
效应:建模model、识别identify、估计 estimate 和反驳 refute。
因果
关系定义
假设我们想要找到采取行动A对结果y的
因果
影响,要定义
因果
影响,考虑两个世界:
世界1(真实世界): 行动A被采取,观察到Y
世界2(反事实世界): 没有采取行动A,但其他一
目录引言稳定性可解释性公平性虚假相关性是风险的关键来源预测建模中
因果
关系的挑战和机遇稳定学习的定位与发展从
因果
关系的角度进行稳定学习
文章 “Stable learning establishes some common ground between
ca
usal
infe
re
nce
and ma
ch
ine learning” 深入探讨和总结了
因果
推理在
机器学习
取得的关注,并对 “稳定学习” 提出了系统性分析和展望。文章认为,
机器学习
和
因果
推理之间应该形成共识,而稳定学习正在向实现这一目标的方向迈进。
使用Python和
ca
usal
ml中的
因果
森林模型来处理性别群体间的异质性,可以这样写代码:# 从
ca
usal
ml库中导入
因果
森林模型 from
ca
usal
ml.
infe
re
nce
.meta import
Ca
usal
Forest# 读取数据 data = pd.read_csv('data.csv')# 将性别转换为数值 data['gend
er
'] = data['gend
er
'].map({'male': 0, 'female': 1})# 将数据集拆分为特征和标签 X = data.drop('label', axis=1) y = data['label']# 创建
因果
森林模型 cf =
Ca
usal
Forest(n_estimators=100, random_state=1)# 训练模型 cf.fit(X, y)# 计算性别群体间的异质性 het
er
ogeneity = cf.estimate_het
er
ogeneity(X, 'gend
er
')# 输出异质性结果 print(het
er
ogeneity)
可以使用Python和
ca
usal
ml的
因果
森林模型来处理性别群体间的异质性,代码如下:from
ca
usal
ml.
infe
re
nce
.meta import
Ca
usal
Forest from sklearn.model_selection import train_test_split # 将数据集分为训练集和测试集X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) # 实例化模型并训练cf =
Ca
usal
Forest() cf.fit(X_train, y_train) # 在测试集上进行预测y_pred = cf.predict(X_test)