发布时间:2024-08-17 10:01
近期导师给我定了因果推理这个方向,看了一些资料和视频之后有了一点点思路转而开始阅读一些经典前沿的论文,此文是基于论文《A Survey on Causal Inference》,阅读此文需要有一定的因果推理基本知识,同时我将会基于此论文并略带个人的理解阐述,如有问题请各位大牛指出,获取论文点此。
因果推理是一个跨多个领域的重要研究课题,数年来研究涉及到了统计学、计算机科学、教育学、公共政策以及经济学等领域。简单来说因果推理其字面意思就是推理两个研究对象之间的因果关系,但是在大部分情况下 因果 ≠ 相关 \textbf{因果}\not=\textbf{相关} 因果=相关 ,举一个简单的例子来说:
一项研究表明经常吃早餐的女孩要比不那么经常吃早餐的女孩轻,于是得出结论吃早餐可以减肥。但实际上两件事是由相关性引起的而并非因果性,这是因为经常吃早餐的女生可能有一个更好的生活方式,她们会经常锻炼、睡眠规律且有一个健康的饮食习惯所以这些经常吃早餐的女孩才会更轻,在这个例子里生活方式是共同影响吃早餐和变轻这两个对象的共同因素,我们也称其为confounder(混杂因素)。所以在很多例子里表面上是一种行为引起了另外一种事件的发生,但由于很多混杂因素的影响导致你无法确定它们之间真正的因果关系,所以因果推理研究的正是在这些背景之下如何确定研究对象之间的因果关系。
由于此论文是基于潜在结果模型来阐述的,所以这里对于结构因果模型不做过多的介绍,后续等我精读完了相关论文再做补充。
因果推理与机器学习领域有着密切的关系。近年来,机器学习领域的发展促进了因果推理领域的发展。强大的机器学习采用决策树、集成方法、深度神经网络等方法对潜在风险进行估计结果更准确。除了对结果估计模型进行改进外,机器学习方法也为处理混杂因素提供了一个新的方面。受益于最近的深度表征学习方法,如生成对抗性神经网络,通过学习所有协变量的平衡表征,以便在学习表征的基础上治疗分配独立于混杂变量。在机器学习中,数据越多越好。
然而,在因果推理中,仅仅有更多的数据还不够。拥有更多数据只会有助于获得更多信息精确的估计,但它无法确保这些估计是正确和无偏的。机器学习方法在促进因果推理发展的同时,因果推理也有助于机器学习方法的发展。对预测精度的简单追求不足以满足现代机器学习研究的需要,也不足以保证正确性可解释性也是机器学习方法的目标。因果推理开始有助于改进机器学习,如推荐系统或强化学习。
一般来说,因果推理的任务是估计如果应用了另一种干预,其结果的变化。在潜在结果模型的基础之上,定义了一些概念用于计算研究对象之间的因果效应。
对于因果推理而言我们的目标就是从观测数据中评估以上的干预效果
为了估计干预效果,因果推理文献中通常使用以下假设:
正如前文所提到的,由于混杂因素的存在导致我们计算干预效果的时候会存在一些问题,混杂因素是一些特殊的pre-treatment变量,例如医学示例中的年龄。当直接使用观察到的干预/对照结果的平均值时,计算出的ATE不仅包括干预对结果的影响,还包括混杂因素对结果的影响,这会导致虚假效应。
从表中,我们可以观察到另一个有趣的现象,即辛普森悖论,与之前提到的例子相似。我们从整体数据上来看药物A比药物B的治疗效果要好,但是但从年轻人和老人的子组数据来看药物B比药物A的治疗效果要好,那么到底是药物A的治疗效果要好还是药物B的治疗效果要好呢?
其实这个悖论形成的原因是,年龄作为混杂因素它影响着药物的选择又影响着药物的治疗效果,老人比较倾向于选择B药,但是老人本身的身体状况就不好所以导致B药的整体治疗效果要偏低。
除了虚假关联以外,混杂因素还会导致选择偏差:被观察群体的分布并不代表我们总体的群体。
为了解决虚假效应问题,我们应该考虑混杂变量对结果的影响。沿着这个方向的一般方法首先估计对混杂因素变量的干预效果,然后根据其分布对混杂因素进行加权平均。
对于选择偏差问题,有两种通用的解决方法。第一种通用方法处理通过创建一个接近样本组的伪组来产生选择偏差。可能的方法包括样本重加权、匹配、基于树的方法、混淆平衡、平衡表示学习方法,基于多任务的方法。创建的伪组减轻了选择偏差和更好的反事实结果估计可以得到。另一种通用方法首先仅根据观察数据训练基本潜在结果估计模型,然后纠正估计由选择偏差引起的偏差。基于元学习的方法属于这一类。
具体内容太多,大家可以下载论文了解算法的具体实现,本文章只做一个入门供大家参考。
因果推理可以有效地挖掘研究对象之间的因果关系,去除混杂因素对统计数据的影响极其重要。在机器学习领域有一个强假设即认为训练集和测试集是独立同分布的,然后实际情况下数据之间(特征之间)可能会出现虚假关联、选择偏差等由混杂因素引起的问题。如果将因果推理引入到机器学习之中势必会大大地提高模型的性能以及其泛化能力同时也提供了一定的可解释性,在这一块清华大学崔教授团队提出了Stable Learning的概念,并在Nature子刊发文,可供大家学习参考:
Stable learning establishes some common ground between causal inference and machine learning
[1] 因果推理中的潜在结果模型,起源、逻辑与意蕴
[2] 因果推理综述—《A Survey on Causal Inference》一文的总结和梳理
three.js 交互_如何使用Three.js创建交互式3D角色
《Linux命令行与shell脚本编程大全》学习笔记——理解Linux文件权限
Google Earth Engine(GEE)——Sentinel-2 Level-2A数据进行水域面积提取(宁夏为例)
WSL2中使用Docker基于Centos7.9+宝塔7.9配置的开发环境
用python-opencv实现简单的人脸检测(代码+理论知识)
Angular InjectionToken APP_INITIALIZER multi 标志位不同值的情况讨论
解决No module named ‘torch_sparse‘问题
PyTorch 图像处理:Tensor、Numpy、PIL格式转换以及图像显示