causality:Causality is a generic relationship between an effect and the cause that gives rise to it.
直译理解就好
参考:因果关系的必要性
机器学习基本上可以算是统计机器学习问题,也就是通过大量的数据学习到一些隐藏的patterns,从而得到数据与数据之前的相关关系,进而进行目标检测、追踪、知识问答等处理。很自然的一个问题就是,既然机器学习当前主流是以统计规律得到的相关关系为主,那么我们为什么要研究因果关系呢?
Yule-Simpson’s Paradox (辛普森悖论):
事实表明,统计规律有时并不那么靠谱,我们需要建立起数据之间的因果联系,这也是因果推理在机器学习中存在的价值。
另外在机器学习中,目前有太多深度学习项目都单纯关注缺少因果关系的粗糙关联性,这常常导致深度学习系统在真实条件下(明显不同于训练场景的条件下)进行测试时,往往拿不出良好的实际表现。
举个例子:如果我们发现,夏天的时候,一个冰淇淋店的电费上涨的同时冰淇淋卖的也很好,我们可以说他们互相之间有因果的关系吗?不见得,他们之间可能只是统计上的相关性,而真正给他们带来的因果性的因子叫做气温,是因为气温的上升,导致电费的增加,也是因为气温的上升,导致了冰淇淋销量的上升。这个例子很好的向我们阐述了因果性和统计相关性的区别。
Structural Causal Models(SCM) (结构因果机制):我们需要先得到一张因果图,然后对于因果图,我们去使用Structural Equations来描述它。
比如对于这一张因果图,箭头由因指向果,X和E都是变量。然后右边的一系列方程就是Structural Equations来描述这个图,每一个方程f都表示着由因到果的一个映射或者说一个表达式,这个方程可以是linear也可以是nonlinear的,取决于他们的因果关系是否线性。
Potential Outcome Framework–: 简单来说,计算因果效应最直接的手段就是控制住所有的变量不变,只变化cause,比如把温度从20变到30度,然后直接看outcome变化,也就是直接用30度时的电费减去20度时的电费,既可以得到causal effect。HOWEVER,easier said than done!!!如果这个世界有两个平行时空,那么我们可以做这个实验,但是如果没有呢?我们知道温度不可能在同一个地方,同一个时间,即20度又30度,那么必然20度的时候,30度时的电费就叫potential outcome。而这个framework,就是相方设法从能观察到的数据中得到这个potential的结果,然后二者相减,就是我们想要的答案啦!
知乎参考
人类在探索整个宇宙和动物行为的过程,其思维的变迁经历了漫长的过程,且因果观念的逻辑分析自科学诞生之日,就没中断过。
因果科学是研究因果关系或回答因果问题的学科。现代因果定义为在保证其他因素不变,改变X引起Y的改变,则X为Y的一个原因。
简单从历史上看,因果研究一般分为3类
从现实数据中提取出某些变量间的因果关系
Judea Pearl的因果信息革命提出的因果关系之梯,根据因果问题的可答性,对比了目前的机器学习(深度学习)和因果推断区别。
把任务分为递进的3类:
传统机器学习(关联层)是在问你what is?,即给定属性,问你是什么的概率;
第二层(干预层)是在问what if?即,如果我对你做了什么,你会怎么样?
终极(反事实层)的当然是回答哲学反事实问题,如果我当时那样做了,会怎么样?(唱:"想回到过去,试着让故事继续“)
关联和干预区别就是seeing和doing的区别,pearl发明了do算子,既p(y|x) != p(y|do(x));反事实层是回答“若非“的问题,要求将现实世界与未发生某行为的反事实世界进行比较(假如当时我没那么做,导致这样的结果概率是什么?)。这里层层递进,高层可以回答低层的问题,反之则不行,因为不具备充足的信息。
统计估计的主要困难是数据缺失,如何去除数据产生的偏差(Debias)是核心主题。Pearl提出解决混杂偏差、选择偏差和迁移学习方法(数据本身特点导致)
反事实基本定律 Y x ( u ) = Y M x ( u ) Y_x(u) = Y_{M_x}(u) Yx(u)=YMx(u)将SCM和RCM联系起来,左边是反事实,M_x是干预后的模型。SCM中使用函数关系描述因果关系,避免了条件概率表示因果关系时认知论上的困难。
贝叶斯网络是一个DAG(directed acyclic graph,有向无环图),然后我们可以把它当作一个概率图,也就是可以概率表达它。
这一类算法通过找到上面三种结构来构建因果图,寻找方式就是通过条件独立的检验,一般的方式都是从一个无向的全链接图出发开始寻找,通过一系列规则最终生成一个图。
两类重要假设:
缺点在于:
这一类算法是通过最优化一个给每个图打分的score function来找到最优的图。要想成为打分函数,其要有两个基本部分。
比如学过统计的朋友们都知道BIC就是一个打分函数:
他由两部分组成,Maximize likelihood(第一项)的同时regularize graph size(第二项),正好对应了上面的两个基本部分。
这类方法的优点是由于使用goodness of fit(适合度)替代了conditional independent,于是relax了上面的第一类假设,
但是缺点是仍然无法区分马尔可夫等价类。
另一个大的缺点是这类算法因为要找到最优的分数,就要搜索全部的图,这是一个NP-hard和NP-complete的问题,复杂度极高且容易陷入局部最优。
相关论文:
GES algorithm: 一个经典的scored-based algorithm, 使用下面BDeu这个打分函数来给每个图打分。但是这个方法只要求找到一个局部最优解即可。方法使用2阶段的贪婪搜索,第一阶段只insert edges,每轮insert operator只操作可以让这个打分函数最高分的三元组,直到达到local optimum。然后第二阶段只delete edges,同理delete operator只操作可以让这个打分函数最高分的三元组,直到达到local optimum。
文章地址
fGES algorithm: fast GES, 是快速版,复杂度低版的GES,有两处改变:parallelize and reorganize caching in the GES.
文章地址
functional causal model
不严谨的来说就是上面我提到的Structural Causal Models的图里右边那一堆function,假设我们能先得到这些function,我们就可以还原左边的图。大概就是这个思路。举个例子,对于s,d,y三个变量,如果我们通过某个算法得到了如下的等式关系,也就是一个下三角阵:
那我们可以通过它得到一个causal order,也就是一个序,比如对于s,d,y来说就是1,2,3。通过这个序,我们知道s一定在d和y前面,d一定在y前面,于是我们有下图的因果DAG
这类方法最大的优点就在于能够从马尔可夫等价类中区分出不同的DAG,从而保证有序的因果关系。
论文分享:
LiNGAM: 一个最经典的FCM-based algorithm, 用于连续数据。方法最常用的是用ICA(independent component analysis)作为求解的武器,核心逻辑就是估计一个类似上图的那种strictly lower triangle matrix (下三角阵),然后这个下三角阵就得到了一个unique的causal order。但是有严格的假设,分别是如下三个假设
(a) 数据生成过程是线性的,
(b) 没有观察不到的混杂因素
( c) 扰动变量具有非零方差的非高斯分布。
这个方法还有几个优化的变体,DirectLiNGAM,LvLiNGAM,SLIM,LiNGAM-GC-UK等
文章地址
这类方法有别于上述方法,更多使用深度学习或者强化学习等思路来挖掘因果图,里面的方法其实基本是也是上面的三类,只不过他们的实现路径不太好直接去归类到其中某一类,故我们就单列一类
CGNN: AWESOME! 一个极其强大的算法。可以在如下情况下使用,can be used for multi-variable, can be used in asymmetric distribution, can be used in unobserved confounder, non-linear cases.
回忆我们刚刚提到的FCM方程,里面有一个个f,这些f我们刚刚说可以是linear也可以是nonlinear的,这里是使用神经网络作为FCM 里的f,然后用他来生成拟合的一个FCM作为拟合出来的joint distribution来approximate the real joint distribution of data,用拟合的distribution
和真正的distribution
之间的差距作为损失函数,网络的目标即为最小化这个损失函数。损失函数表达如下:
其中 ∣ G ^ ∣ |{\hat{G}}| ∣G^∣ 是 G ^ {\hat{G}} G^ 的edge的个数, 另外:
这里k就是某种核函数,衡量距离用的,MMD就是用来衡量两个分布的接近程度的,当两个分布完全一样时,MMD=0。所以大家其实可以看出来,这是一个score-based method
,因为他的score function
由两部分组成,一部分评估SCM的效果,一部分是对图的构造做了限制。不过这个方法理论上我理解是可以区分马尔可夫等价类的,所以也不算一般的score-based method
具体怎么实现呢?首先我们需要输入一个skeleton
,就是一个先验的无向的因果图,这个图一般由专家知识得到。如果是score-based method
,就会有一个搜索的策略,CGNN
也是如此,他一共有3步搜索策略。
pairwise
(成对) CGNN,然后两个方向分别去训练一波,得到最优的损失,选比较小的损失作为选定的方向。于是我们就得到了两两的方向,即这样就得到了最后的图,所以NN其实是在每次需要计算score的时候都训练一遍,且参数并不保留,都是重新训练。还有就是,这个方法可以处理hidden confounder,方法就是把noise作为variables也放进图里。
论文详细
SAM: recovering full causal models from continuous observational data along a multivariate non-parametric setting。也是可以处理有hidden confounder的情况。这篇文章比较骚的地方在于他提到自己不是上述任意一类的方法,他说他是一个集大成者,即用到了conditional independence如constraint-based,又做了regularization如score-based,同时又可以和CGNN,CAM等方法一样解决distributional asymmetries的问题。可见现在学术圈有多卷!
详细可以看原论文
CAUSAL DISCOVERY WITH REINFORCEMENT LEARNING: 这篇文章来自华为的诺亚实验室,他利用Reinforcement Learning (RL)来寻找得分最高的DAG. Its encoder-decoder model takes observable data as input and generates graph adjacency matrices that are used to compute rewards. It uses RL as a search strategy and its final output would be the graph, among all graphs generated during training, that achieves the best reward, is the best DAG. 使用RL作为因果挖掘的思想非常straightforward,因为在RL里的每个action可以看作是一个treatment的改变,而reward就可以是图的分数,这个思想非常好
详细可以看原论文
参考:因果推断书籍推荐
在本书中,强调需认真地对待因果问题,并描绘数据和假设对因果推理的作用。一旦这些基础到位,因果推论必然变得不那么随意,这有助于防止混淆。这本书描述了各种数据分析方法,当收集一个群体中每个个体的数据时,这些方法可以用来估计在一组特定假设下兴趣的因果效应。这本书的一个关键信息是,因果推理不能简化为数据分析的食谱集合。在整篇文章中,穿插了详细阐述正文中提到的某些主题的要点和技术要点。精细点是为所有读者设计的,而技术点是为受过中级统计学培训的读者设计的。这本书对因果推理的概念和方法提供了一个连贯的介绍,这些概念和方法目前分散在几个学科的期刊上。我们希望对因果推理感兴趣的任何人都会对这本书感兴趣,例如流行病学家、统计学家、心理学家、经济学家、社会学家、政治学家、计算机科学家。。。
这本书是为几个不同的人写的。它首先是写给实践者的,这就是为什么它包括易于下载的数据集和程序的原因'这也是为什么我做了几项努力来审查论文并尽可能多地复制它们。我希望读者既能理解这一领域,又能感到有能力将这些方法和技术应用到他们自己的研究问题上,我心目中的另一个人是希望重新规划的有经验的社会科学家。也许这些人有更多的理论倾向或背景,也可能是他们的人力资本存在漏洞。我希望这本书能帮助他们学习现代社会科学中常见的因果关系理论,并提供一个有向非循环图形模型的微积分,帮助他们将理论知识与计量经济学识别联系起来,不管是本科生,还是刚毕业的博士。我希望这本书能给你一个跳跃式的开始,这样你就不必像我们很多人那样,曲折地走上这些方法的迷宫。
下载链接
最初是卡内基梅隆大学的36-402《高级数据分析》的笔记。
因果关系是一个引人入胜的研究课题。它的数学化相对来说才刚刚开始,许多概念问题仍在争论中——通常激烈程度相当高。虽然这本书总结了花十年时间分析因果关系的结果,但其他人研究这个问题的时间比我们长得多,并且已经存在关于因果关系的书籍,包括Pearl [2009],Spirtes et al. [2000], and Imbens and Rubin [2015]。我们希望本书能够在两个方面补充现有的工作。首先,本书代表了对因果关系子问题的偏见,这可能被认为是最基本和最不现实的。这就是因果问题,被分析的系统只包含两个可观测值。在过去的十年里,我们对这个问题进行了较为详细的研究。我们报告了这项工作的大部分内容,并试图将其嵌入到我们认为对选择性但深刻理解因果关系问题至关重要的更大背景中。虽然先研究二元情况可能有指导意义,但按照顺序的章节顺序,也可能直接开始阅读多元章节。其次,我们的处理受到机器学习和计算统计学领域的激励和影响。我们感兴趣的是其方法如何帮助因果结构的推理,更感兴趣的是因果推理是否能告知我们应该如何进行机器学习。事实上,我们认为,如果我们不以概率分布描述的随机实验为出发点,而是考虑分布背后的因果结构,机器学习的一些最深刻的开放问题就能得到最好的理解。我们试图为熟悉概率论和统计学或机器基础的读者提供对该主题的系统介绍。
其他观看参考链接–英文书籍
参考链接—中文书籍