因果推断1--基本方法介绍(个人笔记)

news2024/12/23 4:00:17

目录

一、因果推断介绍

1.1 什么是因果推断

1.2为什么研究因果推断

1.3因果推断阶梯

1.4因果推断问题分类

二、因果推断理论框架

2.1 定义(这些定义后面会经常用到)

2.2 Assumptions(三大基本假设)

三、因果效应估计

3.1 因果效应问题定义

3.2 消除偏差方法

3.2.1 倾向性得分匹配

3.2.2 双重机器学习

 3.2.3 双重稳健学习

3.3估计因果效应

四、待补充


一、因果推断介绍

1.1 什么是因果推断

因果推断是基于统计学方法刻画变量之间的因果关系。
参考:
  1. 关于因果推断你知道多少:关于因果推断你知道多少

1.2为什么研究因果推断

机器学习预测未来,因果推断改变未来。

1.3因果推断阶梯

  • 第一层级( 关联 ):从数据中观察到哪些相关规律?是对历史数据的总结。
  • 第二层级( 干预 ):如果采取某个行动,会产生什么结果?是面向未来的推测。
  • 第三层级( 反事实 ):如果当时采取了另外一个行动,结果会是怎样?是面向过去的反思。

1.4因果推断问题分类

因果推断解决的问题可以分成两类:

  • 因果关系发现 (Causal Discovery):从数据中发掘哪些变量之间存在因果关系,谁是因、谁是果。
  • 因果效应评估 (Causal Effect Estimatation):评估一个变量变化后能多大程度影响另外一个变量。

二、因果推断理论框架

        为形式化地定义和研究因果推断,多种理论框架被建立,其中最著名的是潜在结果框架(Potential Outcome Framework)和结构因果模型(Structural Causal Model,简称SCM),前者由Donald Rubin提出,所以也被称为Rubin Causal Model(简称RCM)。

2.1 定义(这些定义后面会经常用到)

  • unit:因果推断里最小的物理单元,比如一个人
  • treatment:施加给unit的动作,比如吃药。一般用W表示,比如W=1表示吃药,W=0表示不吃药
  • outcome:某个unit在某个treatment下的表现,比如吃药之后好了还是没好。一般用Y表示,Y(W=1)表示这个人在吃药后的表现,如果Y=1表示病好了,则Y(W=1)=1的含义是这个人吃药之后病好了。同理,Y(W=1)=0表示这个人吃药之后病没有好
  • observed outcome:unit在实际的treatment下的表现,这个人实际上是吃了这个药的
  • potential outcome:unit在潜在的treatment下的表现,比如这个人没有吃药,但是如果吃药了,其表现就是potential outcome
  • treatment effect:施加了treatment后的增量效果(or 增益),比如吃药之后相比于没有吃药,其治愈率提升了多少,其存在如下3个维度:
    • Average Treatment Effect ( ATE) ,整个群体的因果效应 :ATE = E[Y(W=1)] - E[T(W=0)],所有人的平均treatment effect
    • Conditional Average Treatment Effect ( CATE), 条件平均因果效应:CATE = E[Y(W = 1)|X = x] − E[Y(W = 0)|X = x],在特征X=x的子人群里面treatment effect,X为筛选个体的特征值,也被称为 协变量
    • Individual Treatment Effect ( ITE), 个体因果效应:ITEi = Yi (W = 1) − Yi (W = 0),某个unit(人维度)的treatment effect
  • 数据格式:是这样的三元组,<X,W,Y>,X是特征,W是施加的treatment,Y是outcome
参考:
  1. 2020年因果推断综述《A Survey on Causal Inference》 - 知乎

2.2 Assumptions(三大基本假设)

1、Stable Unit Treatment Value Assumption (SUTVA):The potential outcomes for any unit do not vary with the treatment assigned to other units, and, for each unit, there are no different forms or versions of each treatment level, which lead to different potential outcomes.
  • 每个人对各个treatment的outcome是固定,不会被其他人影响,人和人之间是独立的
  • 一个treatment只有一个版本,比如某个药物,在不同的剂量下,则对应不同的treatment
2、Ignorability: Given the background variable, X , treatment assignment W is independent to the potential outcomes, i.e:
  • 如果两个人的特征X相同,则他们的potential outcome(即Y(W=0)、Y(W=1))是相同的,不论在哪种的treatment下,即outcome和treatment独立
  • 具有相同特征X的人群,每个人接受到哪种treatment是完全随机的,概率都相同
  • 不存在某个在X之外的隐变量,同时影响outcome和treatment,使得treatment和outcome相关,因此这个假设又称unconfoundedness assumption
3、Positivity:For any value of X , treatment assignment is not deterministic: P(W = w |X = x) > 0, ∀ w and x .
  • 即对于某个特征X下的人群,每个人都有概率被施加任何treatment,并且人群中存在所有的treatment
上述假设只是让我们预估treatment effect能更准确一些,但是由于存在反事实的问题,导致没有ground truth,因此预估值不一定准确。如何预估潜在的treatment effect始终是因果推断的核心问题。

三、因果效应估计

3.1 因果效应问题定义

        因果推断里将采取动作称为 施加干预Treatment),而因果效应为施加干预与否对结果造成的差异。注意,如果想准确衡量差异,需保证其他因素不变而只有“施加干预与否”这个变化。最好的情形应该是:存在两个平行时空,分别施加和未施加干预得到两个结果, 两个结果的差异就是干预产生的因果效应
        事实上不存在平行时空,我们不能同时对一个群体既施加干预又不施加干预,而只能观察到其中的一种情况,对于未观察的情况我们称之为 反事实的(Counterfactual)。理论上,可以通过随机控制实验(Random Control Trial,RCT)来解决这个问题:将群体随机分成两组,一组施加干预( 实验组),另一组不施加干预( 控制组/ 对照组)。这种方法称为 实验性研究,广泛应用的AB实验方法其实就是同样的思路。
        不过,实验组和控制组之间往往很难实现完全随机,导致两组之间会存在天然差异,即 偏差(Bias)。另外,很多时候无法进行随机控制实验,这时只能基于现有观察到的数据,采取一定方法从中筛选出“实验组”和“控制组”,这称为 观察性研究或者 准实验方法,此时的“实验组”和“控制组”更容易出现偏差。
        导致偏差的原因包括:
(1)混杂偏差:同时对Treatment和结果有影响的因素叫 混杂因子(Confounder),它的存在会导致偏差。消除混杂偏差的方法是将混杂因子控制住,再去度量Treatment和结果的关系。
比如在研究“就诊频率与寿命的影响”时,身体状况会同时影响就诊频率和寿命,它就是个混杂因子,如果不消除其影响,就会产生“去医院不利于身体健康”的谬论。
        如果针对相同身体状况的人群(即控制住“身体状况”这个因子)对比不同就诊频率下寿命的差异,就能去除偏差。
(2) 选择偏差:不管是实验性研究还是观察性研究,评估通常都是在一个筛选出来的样本子集上进行,如果样本子集不能代表总体,则会导致选择偏差(或称样本偏差)。
比如在研究“就诊频率与寿命的影响”时,为了控制身体状况这个混杂因子,我们筛选特定年龄50岁、身高175CM、体重70KG、血压120/80mmHg、心率80次/分的人群对比不同就诊频率下的寿命,此时得到的结论适用于人群总体时会有选择偏差。
        因此,偏差是让从数据中的得到相关性不能推导出因果性的主要原因

3.2 消除偏差方法

        当Treatment T和Outcome Y受共同的因素X影响时,就会发生混淆偏差。为去除偏差,需要控制住X,使得实验组和控制组的特征X分布一致,此时的Treatment独立于Y,满足无混淆假设,之后就可以正确地估计因果效应。去除混淆偏差的方法包括:

3.2.1 倾向性得分匹配

Propensity Score Matching,PSM。
方法:首先通过X预测T,得到一个条件概率P(T|X),也称之为倾向性得分(Propensity Score, PS),之后基于PS得分进行匹配,对于实验组的每一个样本,在对照组找到与之匹配(即二者相似)的一个样本,组成一个样本对,最后基于所有的样本对进行因果建模。
原理:理解了倾向性得分后,PSM也就是基于PS得分进行匹配,即对于实验组的每一个样本,在对照组找到与之匹配(即二者相似)的一个样本,组成一个样本对,最后基于所有的样本对进行因果建模,以达到控制混淆的目的。根据匹配方式的不同,PSM有两种方法:距离和权重。
优点:原理简单,容易理解。倾向性得分可以使用任意ML模型。
缺点: 需要对PS得分过小或者PS得分过大的样本进行处理。
应用场景:适用于二值或者离散Treatment场景
疑问: X预测T,在实验组训练还是在实验组和对照组一起训练?

3.2.2 双重机器学习

Double Machine Learning, DML。

方法:首先通过X预测T,与真实的T作差,得到一个T的残差,然后通过X预测Y,与真实的Y作差,得到一个Y的残差,预测模型可以是任何ML模型,最后基于T的残差和Y的残差进行因果建模。
原理:DML采用了一种残差回归的思想。
优点:原理简单,容易理解。预测阶段可以使用任意ML模型。
缺点: 需要因果效应为线性的假设。
应用场景:适用于连续Treatment且因果效应为线性场景

 3.2.3 双重稳健学习

Doubly Robust Learning, DRL。

方法:首先通过X预测T,得到一个倾向性得分P(X),然后通过(X,T)预测Y,预测模型可以是任何ML模型,最后基于X和预测的Y进行因果建模。
原理:DML采用了一种残差回归的思想。
优点:只需倾向性得分预测模型和目标值预测模型的其中一个预测准确即可,预测阶段可以使用任意ML模型。
缺点: 当两个模型都表现不佳时,误差会变大。
应用场景:适用于离散Treatment场景。

3.3估计因果效应

 

四、待补充

  1. 因果效应估计方法介绍 
  2. 因果效应评估方式
  3. 因果效应估计方法代码实现
  4. 因果森林分裂方式
  5. 具体应用/运筹优化
  6. 相关论文学习
 

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

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

相关文章

JavaEE【Spring】:SpringBoot 配置文件

文章目录一、配置文件的作用二、配置文件的格式1、注意2、说明三、properties 配置文件说明1、基本语法2、读取配置文件① 注意3、优缺点四、yml 配置文件说明1、基本语法2、yml 使用进阶① yml 配置不同数据类型及 nullⅠ. yml 配置读取Ⅱ. 练习a. 值为 null 的配置b. 根本不存…

利用云服务器发布项目

前言 平时开发我会写一些小demo&#xff0c;我自己觉得有用的会集中起来形成一个项目&#xff0c;本来想利用gitee的gitee page直接部署出来&#xff0c;但后面了解了下&#xff0c;它只支持官网之类的静态页面&#xff0c;无法与后台数据交互&#xff0c;想要完整的服务还是得…

数据分析业务场景 | 用户画像

一.概况 定义 是根据用户的一系列行为和意识过程建立起来的多维度标签&#xff1b;是根据用户人口学特征&#xff0c;网络浏览内容&#xff0c;网络社交活动和消费行为等信息而抽象出的一个标签化的用户模型&#xff1b;首要任务&#xff1a;根据业务需求整理和数据情况分析建…

Springboot redirect重定向使用RedirecAtrributes传递数据

参考资料 【转载】关于重定向RedirectAttributes的用法RedirectAttributes 的使用 目录前期准备一. RedirecAtrributes重定向传参三. 重定向目标页面接收参数前期准备 ⏹配置文件 server:servlet:context-path: /jmw⏹访问url http://localhost:8080/jmw/test16/init?name…

NX二次开发(C#)-UI Styler-选择对象TaggedObject转换为Body、Face等对象

文章目录 1、前言2、选择对象的过滤器2、选择对象类型为TaggedObject3、TaggedObject转换为Face类型1、前言 前面的博客中已经写过了UI Styler中选择对象(selection)的一些内容,但是依然有读者不知道运用,本文将在前文的基础上更加深入的介绍选择对象的应用(建议与https:/…

DevExpress Universal添加对.NET 7的支持

DevExpress Universal添加对.NET 7的支持 DevExpress已经发布了整个产品系列的主要更新。 CodeRush Ultimate 22.2-为许多重构添加了核心性能优化和增强。 DevExpress.NET MAUI 22.2-添加了对Material Design 3指南的支持&#xff0c;以及对数据网格的自定义过滤、排序和分组。…

PCB封装

目录 1.PCB元器件库分类及命名 1.2PCB封装图形要求 2.封装制作 手工制作封装的操作步骤 1.PCB元器件库分类及命名 元器件采用大写字母表示&#xff0c;PCB元器件库分类及命名如表。 2.PCB封装图形要求 &#xff08;1&#xff09;外形&#xff1a;指元器件的最大外形尺寸。封…

【微电网优化】基于粒子群实现微网经济调度,环境友好调度附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

Java 中的不同参数类型

是不是还傻傻分不清参数配置到底怎么写&#xff0c;写在哪个位置&#xff0c;那么这篇文章就让你学会。 目录 1、Program arguments 2、VM options 3、Environment variables 最佳实践 打开 IDEA 的 Run Configuration&#xff0c;可以看到以下参数配置 VM optionsProgram…

springboot+vue美食网站idea maven

目 录 摘 要 I 1 绪论 1 1.1研究背景 1 1. 2研究现状 1 1. 3研究内容 2 2 系统关键技术 3 2.1 springboot框架 3 2.2 JAVA技术 3 2.3 MYSQL数据库 4 2.4 B/S结构 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1. 2经济可行…

12.11哈希表

目录 一.哈希表 1.概念 2 冲突-概念 3 冲突-避免 4 冲突-避免-哈希函数设计 直接定制法--(常用) 2. 除留余数法--(常用) 3. 平方取中法--(了解) 4. 折叠法--(了解) 5. 随机数法--(了解) 6. 数学分析法--(了解) 5 冲突-避免-负载因子调节&#xff08;重点掌握&#…

151-160-mysql-高级篇-设计规范及其他调优策略

151-mysql-高级篇-设计规范以及其他调优策略&#xff1a; 1、数据库的设计规范 1. 范 式 1.1 范式简介 **在关系型数据库中&#xff0c;关于数据表设计的基本原则、规则就称为范式。**可以理解为&#xff0c;一张数据表的设计结构需要满足的某种设计标准的级别。要想设计一…

iOS 组件二进制与源码查看及调试方案

好久没有写文章了这里记录一下把项目代码二进制化提高编译效率的整个过程中碰到的问题和解决方案 先提一下优化编译速度的基本方向基本就是从不同的编译阶段来出主意&#xff0c;比如&#xff1a; 预编译阶段的头文件查找&#xff1a; 一款可以让大型iOS工程编译速度提升50%的…

[附源码]Node.js计算机毕业设计大学生心理咨询系统Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

无法安装vmnet8虚拟网络适配器、vmware network editor未响应、注册失败,请检查账号数据库配置是否正确的解决

文章目录虚拟网络适配器安装 | vmware network editor未响应注册失败&#xff0c;请检查账号数据库配置是否正确的解决关于第一次安装虚拟机的全文约 423 字&#xff0c;预计阅读时长&#xff1a; 2分钟虚拟网络适配器安装 | vmware network editor未响应 原因&#xff1a;卸载…

JDK8 ThreadLocal 源码解析与最佳实践

文章目录用法Example1Example2Springboot Transcation 注解的原理Entry 的 Key 设置为弱引用有什么好处内存泄漏问题为什么 ThreadLocal 不需要 ReferenceQueueget()getEntrygetEntryAfterMissThis class provides thread-local variables. These variables differ from their …

路径规划|多目标海洋捕食者算法(MOMPA)求解最短路径问题(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清…

LabVIEW在面向对象编程中利用硬件抽象层(HAL)设计1

LabVIEW在面向对象编程中利用硬件抽象层(HAL)设计1 LabVIEW面向对象编程(OOP)采用仪器为中心的硬件抽象层(HAL)&#xff0c;使用面向对象的设计模式&#xff0c;可以部署一个仪器重用库&#xff0c;该库可以随着需求和仪器趋势的变化而增长&#xff0c;同时在不可避免的硬件过…

【Redis】主从复制

一、简介 1、什么是主从复制 主机数据更新后根据配置和策略&#xff0c;自动同步到备机的master/slave机制&#xff0c;Matser以写为主&#xff0c;Slave以读为主&#xff0c;简单来说如下图 2、主从复制的好处 读写分离&#xff1a;Matser以写为主&#xff0c;Slave以读为主…

指针的初步认识

&#x1f3d6;️作者&#xff1a;malloc不出对象 ⛺专栏&#xff1a;《初识C语言》 &#x1f466;个人简介&#xff1a;一名双非本科院校大二在读的科班编程菜鸟&#xff0c;努力编程只为赶上各位大佬的步伐&#x1f648;&#x1f648; 目录前言一、指针是什么1.1 如何理解编址…