因果诊断原理

news2024/11/13 22:32:52

因果分析在近十来年逐渐倍受关注,其提供了解释因子间因果性的定量分析工具,广泛用于数据分析领域,同时也就用决策分析、作用预估等反事实因果推理中。本文首先对比了因果性和相关性的关系,之后确定因果关系的基本方法,最后介绍了当下流行的基于模型的因果分析方法。

1. 什么是因果性和相关性

 首先相关性是很好理解的,代表两个随机变量之间可量化的相互关系,常用的反映相关系数的指标有协方差、相关系数等。相关性纯粹是指数据间的相互关系,这个关系是量的比例变动关系,其方向是对称双向的,比如A和B有相关性,即:

A\Leftrightarrow B

假设A=α*B,α是B对A的线性相关因子,代表了B增加1个单位,同时A会增加α单位,反过来说是正确的,A增加α单位,B会增加1个单位。

然而因果性是有方向,比如A是引起B的因,即:

A \rightarrow B

因果性是单向的,只存在A对于B的因果影响,其代表了作用A会对B的影响,称之为Treatment Effect,这时读者可能会疑问,这里A对B的因果影响同上面算相关性时,描述的A增加α单位,会导致B增加1个单位有什么区别?除了描述问题名称不一样,这里的因果影响就不是相关性么?

确实是如此,如果是我们先前例子中,A和B完全是由单向箭头完全描述的情况,A对B的因果影响量完全可以用A对B的相关性来描述,但是在真实世界,这样的一对随机变量完全是不存在的,更为通用的形式是这样的:

 图中描述的是T对Y的因果影响图

  • T表示treatment
  • Y表示结果
  • X表示对于T及Y都有影响的外在因子
  • W表示仅对Y有影响的其他因子
  • ε表示影响的误差因子

从上面更为通用因果描述中,T和Y的直接相关性没有办法来衡量T对Y的因果影响,因此存在X及W的混杂因子,所谓混杂因子会偏移T和Y数据上相关性计算,比如如下的例子。

另一方面,混杂因子的引入也会导致完全无因果性的变量出现强相关性。

所以因果方向性的引入完全是必要的,但这个方向是很难是数据中得出,而是从物理世界中获取先验知识来刻画的。然而部分统计学者认为因果性完全由人为设定,而不是从数据中获取,失去了数据统计的客观性,但图灵奖得主Judea Pearl反对这种观点,其认为通过先验知识来刻画因子间的因果图或者因果路径,就如同贝叶斯里的先验一样,这种引入是完全有必要的,而纯粹通过数据间的相关性是完全不能反映因果性的。

Judea Pearl给出了计算因果影响的一般性方法:

  • 首先是建立问题的假设(比如吸烟是否会导致肺癌)、围绕问题的相关变量以及变量间关系的知识经验。
  • 刻画所有变量的因果模型(因果图、结构方程等),由因果路径来表示变量间的因果或者导赂关系。
  • 确定干预因子(称为treatment或者do(T))以及影响的结果因子Y,即E(Y|do(T))
  • 利用因果模型来计算E(Y|do(T)),包含了识别去除混杂因子影响

这里包含了几个概念:

  • 干预do(X)是指作用X,这里用do是表示并不是结果而是干预的动作,包含了反事实的逻辑
  • 反事实:对一直吸烟的人,我们想知道其不吸烟情况下身体会怎样,这种在现实中完全不可能实现的假设,就是一类反事实推理,其中假设不吸烟可以用do(不吸烟)表示,对于吸烟的人永远不可能存在不吸烟的情况,所以do(不吸烟)表示的是假设的干预动作,而不是结果的数据。
  • 平均干预影响Average Treatment Effect:或者可以视为因果性的描述,比如是否吸烟对患癌概率的影响可以表示为如下,即吸烟时患癌期望减去不吸烟患癌的期望。

ATE=E[Y|do(T=1)] - E[Y|do(T=0)]

  • CATE:针对于某一个个体类X的平干预影响,即:

ATE=E[Y|do(T=1),X] - E[Y|do(T=0),X]

上面的几个概念中,因果模型计算的重点在于计算 E(Y|do(T)),即去除do算子。下一节将介绍Judea Pearl的几个基本消除do算子的方法。

2. 确定因果性的基本方法

 在上一节中,我们提到如果T对Y的影响完全可以由单向箭头描述的情况下,T对Y的因果性可以由数据相关性描述,即

ATE=E[Y|do(T=1)] - E[Y|do(T=0)]=E[Y|T=1] - E[Y|T=0]

这种情况下,do算子被简单消除了。另一方面是通过分层统计的方式消除do算子,对于同一层中除了干预因子外,其他混杂因子都是一致的,或者通过随机测试实验也可以实现do算子。但前者需要大量的统计数据,后者不一定可实验(比如不能强迫吸烟)。

因为信息在因果图中流动,由于信息传递是双向的(相关性),有些是因果方向传递,有些在非因果方向传递。而求因果效应必须要去除所有的非因果路径,这个实际上就是去混杂因子的过程,也是do算子需要做的事。

常见阻断信息流的方法:

  • A→B→C,控制B可以避免信息流动,即B一旦观察到,A的信息就无法作用到C
  • A←B→C,控制B可以避免信息流动
  • A→B←C,不控制B可以避免信息流动,
  • 控制一个变量的后代节点就如同”部分地”控制变量本身:
    • 控制A→B→C中的中介物B的某个后代节点如同”部分地”关闭了信息管道
    • 控制A→B←C中的对撞物B的某个后代节点如同”部分地”打开了信息管道

此外Judea Pearl还给出了另外几个去除do算子的范式:

后门路径backdoor

P(Y|do(T=t))=\sum_{x}P(Y|T=t,X=x)P(X=x)

  • 寻找后门路径:指向T且存在T同Y之前的信息流通,即图中的X->T
  • 当完全阻断全部的后门路径后,P(Y|do(T))=P(Y|T),上式中的X表示要控制全部后门变量。后门路径公式实际表示,通过估计每个去混因子在不同水平的效应,并据此测算出干预的平均因果效应,计算各层的因果效应的加权平均值P(z),即对每个层因果效应P(Y|T=t,X=x)都按其在总体中的分布频率P(X)进行加权,后门路径的原理类似于分层统计。

前门路径frontdoor

 P(Y|do(T=t))=\sum_{m}P(M=m,T=t)\sum_{t'}P(Y|T=t',M=m)P(T=t')

  • 寻找前门路径:指T指向Y的因果路径中存在中介因子M,即T→M→Y
  • 前门公式从直观上分成两个部分:
    • 前一部分平均T->M的因果效应,此时只有唯一的信息流通路径,即:
    • P(M|do(T=t))=P(M=m|T=t)
    • 后一项表示M->Y的因果效应,可通过后门效应控制去除do(M)算子,即:
    • P(Y|do(M=m))=\sum_{t} P(Y|T=t,M=m)P(T=t)

更为通用的do算子:

  • 规则1:如果变量W同Y无关(可能在控制Z时)则P(Y|do(X),Z,W)=P(Y|do(x),Z)
  • 规则2:如果Z阻断X到Y的全部后门路径,则P(Y|do(X),Z)=P(Y|X,Z)
  • 规则3:如果X到Y之间没有任何的因果路径(即不存在只包含前向箭头的从X到Y的路径),则P(Y|do(X))=P(Y)
  • 前门公式的推导:
  • P(Y|do(T=t))=\sum_{m} P(Y|do(T),M)P(M|do(T)) \Leftarrow \dagger\ Bayes\ rule\\ =\sum_{m} P(Y|do(T),do(M))P(M|do(T)) \Leftarrow \dagger\ Rule\ 2\\ =\sum_{m} P(Y|do(T),do(M))P(M|T) \Leftarrow \dagger\ Rule\ 2\\ =\sum_{m} P(Y|do(M))P(M|T) \\ =\sum_{m} \sum_{t'} P(Y|do(M),T=t')P(T=t'|do(M))P(M|T) \Leftarrow \dagger\ Bayes\ rule\\ =\sum_{m} \sum_{t'}P(Y|M,T=t')P(T=t'|do(M))P(M|T) \Leftarrow \dagger\ Rule\ 2\\ =\sum_{m} \sum_{t'}P(Y|M,T=t')P(T=t')P(M|T) \\ =\sum_{m}P(M=m,T=t)\sum_{t'}P(Y|T=t',M=m)P(T=t')

通过上述范式可以根据因果图来消除TE(treatment effect)计算式子中的do算子,Microsoft提供了开源python库dowhy实现上述前门、后门、do算子的逻辑,但是上述我们讨论计算TE本质上是基于概率图推理的,对于高维的特征以及针对于个体特定因果影响(即CTE)在计算上非常困难。在下一节,我们将讨论基于机器学习的因果推理即CML(causal machine learning)。

3. 基于机器学习的因果推理CML

 基于机器学习的因果推理模型最为主要的范式是DML,即Double Machine Learning,其基本思想是通过残差计算来消除do算子。

 如上图通过残差形式将原因果图拆分为三个部分,具体方式如下:

  • 建立模型T'=M(X)
  • 建立模型Y'=M(X,W)
  • 建立残差模型T-T'=M(Y-Y')

训练一般采用Cross-fitting的方式,即把样本分成两部分,先用样本1分别预估T'和Y'两个模型,再用样本2估计残差模型,最后再交换估计,然后取两轮预估参数平均得到最终的模型。

通过机器学习模型的方式,我们摆脱了上一节的概率图模型,可以用更为复杂的机器学习模型来估计因果影响面。具体我们可以参考Microsoft的开源工具econml,其提供了DML的实现框架。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/177114.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

博客搭建教程1-Archlinux环境配置

文章目录1 前言2 archlinux镜像下载3 archlinux安装1 前言 这个教程主要讲解linux环境下博客的搭建,这里的linux系统选择archlinux,博客的框架基于hexo框架。 参考博客: 1、ArchLinux安装教程 2、Archlinux2022年7月镜像 手把手安装教程 UE…

MySQL进阶——存储过程

MySQL 存储过程 1、简介 大多数 SQL 语句都是针对一个或多个表的单条语句。并非所有的操作都那么简单。经常会有一个完整的操作需要多条语句才能完成。 存储过程简单来说,就是为以后的使用而保存的一条或多条 MySQL 语句的集合。可将其视为批处理文件。虽然他们的…

【Spring(八)】带你打通Spring的注解开发

文章目录注解开发注解开发定义bean纯注解开发注解开发bean作用范围与生命周期管理注解开发依赖注入注解开发管理第三方bean注解开发实现为第三方bean注入资源总结注解开发 Spring的配置我们已经告一段落了,那接下来我们就要发挥Spring的强项了:简化开发&…

MySQL —— 数据库基础

目录 一、数据库的基本概念 1. 什么是数据库 2. 主流的数据库 二、基本使用 1. 连接服务器 2. 服务器管理 3. 服务器、数据库、表关系 4. 使用案例 5. 数据库的存储逻辑 三、MySQL架构 四、SQL分类 五、存储引擎 1. 存储引擎 2. 查看存储引擎 3. 存储引擎对比 …

Elasticsearch 这篇还不够吗

系列文章目录 文章目录系列文章目录一、概述1. ES 的基本概念2. ES 和关系型数据库的对比二、环境准备1. linux 下单机安装三、入门操作1. 创建索引2. 写入文档3. 根据id搜索文档4. 根据一般字段搜索文档5. 根据文本字段搜索文档四、ES 客户端实战1. Spring Data Elasticsearch…

学习shell与shell编程 vi与vim

Linux配置文件都是以ASCII的纯文本形式存在。 为什么学习vi 1)UnixLike系统都会内置vi文本编辑器,其他的文本编辑器则不一定存在 2)许多软件的编辑接口都会主动调用vi 3)vi具有程序编辑的能力,可以主动以字体颜色辨别语法的正确性 4)程序简单&#…

webgl纹理贴图机制

文章目录前言纹理图片大小规范纹理坐标系统贴图流程JavaScript部分齐次坐标—uv坐标数据准备加载外部纹理图像纹理配置加载着色器部分顶点着色器片元着色器完整示例使用多张纹理着色器接受两个纹理单元封装纹理配置赋值函数完整示例总结前言 在计算机图形学中,为了…

HTML+CSS+JS制作炫酷【烟花特效】

文章目录制作炫酷烟花特效一、普通烟花(分散形)HTML代码CSS代码JS代码二、圆形烟花HTML代码CSS代码JS代码三、爱心形烟花HTML代码CSS代码JS代码四、源码获取在线下载制作炫酷烟花特效 💡本篇内容使用htmlcssjs制作鼠标点击出现烟花效果,分别介绍了分散型…

python-测试代码

1. 测试函数get_name.pydef combination(first, last):将姓名组合在一起name first lastreturn name.title()hello_world.pyfrom get_name import combinationprint("Enter q to quit!") while True:first input(Please input your first name: )if first q:b…

理光Aficio MP C2500扫描到文件夹设置方法

首先在需要接收扫描文件的电脑上设置共享文件夹。 注: (1)文件夹的名字最好简单一点,比如:scan、123等等; (2)文件夹的共享权限最好能设置为最大(WindowsXP、Windows200…

Future、CompletableFuture概述

1.同步和异步 (1)同步:需要等待结果返回,才能继续运行 (2)异步:不需要等待结果返回,就能继续运行 (3)异步设计:多线程可以让方法执行变为异步(比…

第四章必备前端基础知识-第二节3:CSS盒模型和浮动

文章目录一:盒模型(1)border(2)padding(3)margin二:flex布局一:盒模型 盒模型:在HTML中,每个标签(或元素)相当于是一个盒…

Mybatis和Jpa

这里写目录标题1.Mybatis1.1 JDBC的缺点1.2 Mybatis的整体架构1.3 入门案例1.3.1 问题:无法连接到数据库服务器1.4 动态代理实现Mapper1.5 mybatis-config.xml配置1.5.1 properties属性读取外部资源1.5.2 settings设置1.5.3 typeAliases1.5.4 typeHandlers(类型处理…

【Substance Designer】基础操作和节点学习记录

写在前面 这个记录稍微有点杂,大概是庄懂的技术美术入门课(美术向)-直播录屏-第20课和一些基础操作的记录合集吧! 补充 学习发现,基础的节点是需要学习和记录的,但是真正用起来还是要多用多练!所以这种简单的记录节点…

YOLOv5/v7 引入 RepVGG 重参数化模块

本篇博文代码出自YOLOv5-lite ,YOLOv5-lite的作者在CSDN的账号是 pogg_ ,大家可以关注一下,这也是一位在开源项目上做了很多工作的博主。 RepVGG的原理和融合推导过程可以看我的这篇博文:RepVGG:让VGG风格的ConvNets再…

机制设计原理与应用(三)Screening

文章目录3 Screening3.1 为单个不可分割的项目定价3.1.1 对θ\thetaθ的假设3.1.2 问题描述3.1.3 特性3.2 为无限可分的项目定价3.2.1 对θ\thetaθ的假设3.2.3 特性3.2.4 收益最大化3.2.5 最优解决方案3 Screening Screening theory:机制设计理论可以被看作是其多…

Cadence PCB仿真使用Allegro PCB SI生成振铃ringing仿真报告及报告导读图文教程

🏡《Cadence 开发合集目录》   🏡《Cadence PCB 仿真宝典目录》 目录 1,概述2,生成报告3,报告导读4,总结1,概述 本文简单介绍使用Allegro PCB SI生成网络的振铃性能评估的报告的方法,及振铃ringing报告要点导读。 2,生成报告 第1步,选择需要生成报告的网络,然后…

第二章 ArcGIS数据和地理数据库

文章目录第一节 ArcGIS和4D数据基本知识1 4D数据介绍1.1 DLG1.2 DEM1.3 DOM1.4 DRG1.5 4D表现2 ArcGIS的数据和4D数据对应3 栅格数据3.1 查看帮助3.2 空间分辨率3.3 分辨率与比例尺换算3.4 栅格数据介绍——cellsize3.5 栅格数据波段3.6 栅格格式4 栅格数据改变分辨率5 转换栅格…

【 uniapp - 黑马优购 | 登录与支付(2)】如何实现三秒后跳转和微信支付

个人名片: 🐼作者简介:一名大二在校生,讨厌编程🎋 🐻‍❄️个人主页🥇:小新爱学习. 🐼个人WeChat:见文末 🕊️系列专栏:🖼…

Ubuntu20.04+MAVROS+PX4+Gazebo安装教程

Ubuntu20.04MAVROSPX4Gazebo安装PX4步骤安装MAVROS安装QGCPX4仿真安装PX4步骤 从github上clone源码 git clone https://github.com/PX4/PX4-Autopilot.git --recursive进入PX4-Autopilot文件夹,继续下载未下载完的组件 cd PX4-Autopilot/ git submodule update -…