因果推断 | 潜在结果框架的基础知识

文章目录

  • 1 引言
  • 2 框架描述
    • 2.1 问题定义
    • 2.2 数学表达式
  • 3 实现方案
    • 3.1 随机实验数据
    • 3.2 一般数据
  • 4 方案评估
  • 5 总结
  • 6 相关阅读

1 引言

在上一篇文章(运筹从业者也需要的因果推断入门:基础概念解析和体系化方法理解)中,已经对因果推断有了一个大致的认知,接下来该逐个深入学习了。

我打算从非试验场景中的潜在因果框架开始。

选择这个作为深入学习的起点,一方面是因为,我目前的工作中亟需这方面的内容来做一些因果效应的量化评估;另一方面是,我已经比较熟悉试验场景里的随机对照实验和双重差分法,所以现在学习潜在因果框架的话,应该不会有什么问题。

不过我发现自己有点飘了,写啥都想写的全面一些。这不,原想把潜在因果框架的基础理论、算法实现、模型评估和业务应用等内容都聚集到一篇文章里来,结果在各种地方卡壳,导致一个月了还是零产出。

所以说,学习还是要一步一个脚印呐。今天这篇文章,就先把潜在因果框架的基础知识搞明白,具体的算法实现等内容后续再逐一学习和总结。

2 框架描述

2.1 问题定义

潜在因果框架(Potential Outcome Framework,POF)是由Donald Bruce Rubin提出的一种针对观测数据进行因果推断的框架,也被称为Rubin因果模型。

举个简单的例子:有10名患者服用了药物,最终8名患者康复,2名患者未康复;另有10名患者没有服用药物,最终5名患者康复,5名患者未康复。我们的目标是:如何从已有的这些数据中探查出,药物是否能有效治疗患者。

有些人可能会说,这很简单呀,服用药物的康复率是80%,未服用药物的康复率是50%,药物提升了30%的康复率,所以是有效的。乍一看没啥问题,实际上这个结论经不起推敲:假如服用药物的10名患者的患病程度比较浅,而未服用药物的患者的患病程度比较深,那么这30%的康复率的提升就不一定是药物带来的,而有可能是患病程度的差异导致的。

潜在因果框架要做的事情就是:用一种科学和令人信服的方式,从已有的观测数据中得到量化的因果效应值。

为了能更一般化地描述问题,首先做出如下设定:

样本数据集为: D = { d 1 , d 2 , . . . , d n } D=\{d_1,d_2,...,d_n\} D={d1,d2,...,dn} n n n为样本数量;策略变量为 t ∈ { 0 , 1 } t\in \{0, 1\} t{0,1} t = 0 t=0 t=0表示不施加策略, t = 1 t=1 t=1表示施加策略;协变量 X X X,一般指与策略无关的变量;结果变量 Y Y Y Y 0 i Y_{0i} Y0i表示无策略时第 i i i个样本的结果变量, Y 1 i Y_{1i} Y1i表示有策略时第 i i i个样本的结果变量。

那么在潜在因果框架下,问题可以简述为:基于数据集 D = { t i , X i , Y i } i n D=\{t_i,X_i,Y_i\}_i^n D={ti,Xi,Yi}in,估计 t t t Y Y Y之间的因果效应。

2.2 数学表达式

为了给出因果效应的数学表达式,还需要引入一些定义:

个体因果效应(Individual Treatment Effect,ITE)
I T E i = Y 1 i − Y 0 i ITE_i=Y_{1i}-Y_{0i} ITEi=Y1iY0i
平均因果效应(Average Treatment Effect,ATE)
A T E = E ( Y 1 − Y 0 ) ATE=E(Y_1-Y_0) ATE=E(Y1Y0)
策略组平均因果效应(Average Treatment effect on the Treated group,ATT)
A T T = E ( Y 1 ∣ t = 1 ) − E ( Y 0 ∣ t = 1 ) ATT=E(Y_1|t=1)-E(Y_0|t=1) ATT=E(Y1t=1)E(Y0t=1)
对照组平均因果效应(Average Treatment effect on the Untreated group,ATU)
A T U = E ( Y 1 ∣ t = 0 ) − E ( Y 0 ∣ t = 0 ) ATU=E(Y_1|t=0)-E(Y_0|t=0) ATU=E(Y1t=0)E(Y0t=0)
条件平均因果效应(Conditional Average Treatment Effect,CATE)
C A T E = E ( Y 1 ∣ X = x ) − E ( Y 0 ∣ X = x ) CATE=E(Y_1|X=x)-E(Y_0|X=x) CATE=E(Y1X=x)E(Y0X=x)
为了更清楚地理解这些概念,我们举个例子说明一下。

如上表所示,对于表中的实例,个体因果效应为表的最后一列,平均因果效应为
A T E = 1 20 ∑ i = 1 20 [ Y 1 , i − Y 0 , i ] ATE=\frac{1}{20}\sum_{i=1}^{20}[Y_{1,i}-Y_{0,i}] ATE=201i=120[Y1,iY0,i]
策略组平均因果效应为
A T T = 1 10 ∑ i = 1 10 [ Y 1 , i − Y 0 , i ] ATT=\frac{1}{10}\sum_{i=1}^{10}[Y_{1,i}-Y_{0,i}] ATT=101i=110[Y1,iY0,i]
对照组平均因果效应为
A T U = 1 10 ∑ i = 11 20 [ Y 1 , i − Y 0 , i ] ATU=\frac{1}{10}\sum_{i=11}^{20}[Y_{1,i}-Y_{0,i}] ATU=101i=1120[Y1,iY0,i]
样本编号为偶数的平均因果效应为
C A T E = 1 10 ∑ i = 1 10 [ Y 1 , 2 i − Y 0 , 2 i ] CATE=\frac{1}{10}\sum_{i=1}^{10}[Y_{1,2i}-Y_{0,2i}] CATE=101i=110[Y1,2iY0,2i]

严格定义下,我们要确定的是ATE的值;但在大多数情况下,我们计算的是ATT,并以此来代替ATE。

看起来,只要上表中的数据是完整的,因果效应的评估问题就完美解决了。但遗憾的是,针对任何样本,总有部分数据是无法观测到的:如果 t = 1 t=1 t=1,即样本施加了策略变量,那么就只能观测到 Y 1 Y_1 Y1,此时上表的第4列是缺失的;如果 t = 0 t=0 t=0,则样本未施加策略变量,那么就只能观测到 Y 0 Y_0 Y0,此时上表的第3列是缺失的。因此,无论是ATE、ATT、ATU、CATE还是ITE,都无法直接计算得到。

事实上,正因为有部分数据无法被观测,才需要“潜在结果”这次词。潜在因果框架认为,任何一个样本和一个策略变量,都存在一个潜在结果;进一步说,可以被观测到的结果为事实结果,无法被观测到的为反事实结果。

3 实现方案

3.1 随机实验数据

既然注定了会存在反事实结果,那么如果简单粗暴地使用 t = 0 t=0 t=0时的 Y 0 Y_0 Y0来替代 t = 1 t=1 t=1时的 Y 0 Y_0 Y0,以此计算ATT,会出现什么情况呢?

为了解答这个问题,我们进行如下的公式推导:
A T T = E ( Y 1 ∣ t = 1 ) − E ( Y 0 ∣ t = 0 ) = [ E ( Y 1 ∣ t = 1 ) − E ( Y 0 ∣ t = 1 ) ] + [ E ( Y 0 ∣ t = 1 ) − E ( Y 0 ∣ t = 0 ) ] ATT=E(Y_1|t=1) - E(Y_0|t=0) = [E(Y_1|t=1) - E(Y_0|t=1)] + [E(Y_0|t=1) - E(Y_0|t=0)] ATT=E(Y1t=1)E(Y0t=0)=[E(Y1t=1)E(Y0t=1)]+[E(Y0t=1)E(Y0t=0)]

前一项显然就是ATT的真值,而后一项可以理解为策略组和对照组间的选择偏差。即,如果在构造策略组和对照组时,两者之间已经有偏差,那么替代计算的结果确实是不合理的;但如果他们之间无偏差,那么替代计算的结果就是没问题的。

而随机实验,其实就是后者。

在随机实验中,一般会随机的将样本个体分成两组:一组为策略组,施加策略变量;另一组为对照组,不施加策略变量。

也就是说,样本是否被施加策略变量,不受任何因素影响,自然独立于 Y 0 Y_0 Y0,因此以下公式成立
E ( Y 0 ∣ t = 1 ) = E ( Y 0 ∣ t = 0 ) = E ( Y 0 ) E(Y_{0}|t=1)=E(Y_{0}|t=0)=E(Y_{0}) E(Y0t=1)=E(Y0t=0)=E(Y0)
即,选择偏差为0。

因此如果已有数据是随机实验的数据,那么真实的因果效应就是: E ( Y 1 ∣ t = 1 ) − E ( Y 0 ∣ t = 0 ) E(Y_1|t=1) - E(Y_0|t=0) E(Y1t=1)E(Y0t=0)

3.2 一般数据

如果已有数据不是随机实验的数据,那么直接替代计算就会多出一项选择偏差。为了减少或去掉选择偏差,还需要研究其他的解决方案。

目前大部分的解决方案中, 都暗含了三个假设:

假设1:稳定性假设。任意个体的潜在结果不受其他个体接受的策略所影响,同时策略对个体的潜在结果是稳定的。

假设2:可忽略假设。除协变量 X X X的影响外,策略的分配与其潜在结果是无关的,即 t ⊥ ⁣ Y ∣ X t\perp\!Y|X tYX

假设3:正值假设。对于任意个体,任何策略的分配概率大于0,即 p ( t ∣ X = x ) > 0 , ∀ t , x p(t|X=x)>0, \forall t,x p(tX=x)>0,t,x

在这些假设下,常用的解决方案有:重加权方法;分层方法;匹配方法;基于树的方法;基于表征的方法;多任务方法;元学习方法等。这些方案的含义、代表性算法以及它们之间的联系,目前我还处于一知半解的状态,暂且罗列在这里,后续再花时间去学习和总结。

为了能对这些解决方案有个直观的理解,这里给出匹配方法的基本原理:简单来说,就是在对照组样本中,为策略组的每个样本都挑选出一个样本,该样本和策略组样本的相似度越高,便越能有效降低策略组和对照组之间的选择偏差。下图是一个匹配方案的实例。

4 方案评估

方案实现后,还需要评估方案的效果。

在机器学习领域,测试集中的每个样本都存在真值,因此可以逐一计算样本真值和模型预测值之间的偏差,然后评估算法好坏。但在因果推断中,由于反事实结果的存在,在测试集中不可能存在因果效应的真值,也就无法直接使用机器学习领域中的相关指标,还需要构建一些新的评估指标。

目前比较常用的一个指标是AUUC(Area Under Uplift Curve),本节参考causalml工具包中(一个开源的因果推断工具包)的计算逻辑大致描述AUUC如何计算。

首先根据预估的因果效应值从大到小对数据集D排序,此时第 k k k个样本的uplift值 u ( k ) u(k) u(k)定义为
u ( k ) = R T ( D , k ) N T ( D , k ) − R C ( D , k ) N C ( D , k ) u(k)=\frac{R^T(D,k)}{N^T(D,k)}-\frac{R^C(D,k)}{N^C(D,k)} u(k)=NT(D,k)RT(D,k)NC(D,k)RC(D,k)
其中, R T R^T RT R C R^C RC分别为前 k k k个样本中策略组和对照组的结果变量之和; N T N^T NT N C N^C NC分别为前 k k k个样本中策略组和对照组的样本数量。显然, u ( k ) u(k) u(k)可以理解为:前 k k k个样本中策略组的平均结果变量值-前 k k k个样本中对照组的平均结果变量值。

有了 u ( k ) u(k) u(k)后,AUUC的计算表达式为
A U U C = ∑ k = 1 n [ u ( k ) ⋅ k ] n ⋅ n ⋅ u ( n ) AUUC=\frac{\sum_{k=1}^n[u(k)·k]}{n·n·u(n)} AUUC=nnu(n)k=1n[u(k)k]
这个公式也需要解释一下:分子不是我们常规理解上的uplift曲线下的面积,而是累积uplift值(多了一项 k k k);分母是为了做归一化, n ⋅ u ( n ) n·u(n) nu(n)表征的是全量样本的因果效应累积值,在此基础上还有另一个 n n n是因为分子是累积值。

5 总结

文章正文到此就结束了,本节总结一下三个比较重要的内容:

  1. 潜在因果框架下,因果推断问题可以简述为:基于数据集 D = { t i , X i , Y i } i n D=\{t_i,X_i,Y_i\}_i^n D={ti,Xi,Yi}in,估计 t t t Y Y Y之间的因果效应。

  2. 由于存在反事实结果,ATE无法通过观测数据直接计算得到;如果是随机实验的数据结果,可以通过数据替代计算得到;如果是一般数据,则还需要其他算法辅助得到。

  3. AUUC可以用来衡量因果模型的好坏。

6 相关阅读

因果推断(三): 潜在结果模型:https://zhuanlan.zhihu.com/p/494643196

基于潜在结果框架的因果推断入门(上):https://cloud.tencent.com/developer/article/1823149

弹性模型的评测指标AUUC:https://zhuanlan.zhihu.com/p/457689388

倾向得分匹配1/PSM/简介、鲁宾因果模型:https://www.bilibili.com/video/BV168411W77c/?spm_id_from=333.788&vd_source=f416a5e7c4817e8efccf51f2c8a2c704

赵永贺等编著.因果推断:原理解析与应用实践[M], 北京: 电子工业出版社, 2023:https://weread.qq.com/web/bookDetail/813326f0813ab873fg015d1a

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

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

相关文章

Linux下Palabos源码编译安装及使用

目录 软件介绍 基本依赖 其它可选依赖 一、源码下载 二、解压缩(通过方式1下载源码.zip格式) 三、编译安装 3.1 自带算例 ​编辑3.2 自行开发算例 四、简单使用 4.1 串行运行 4.2 并行运行 4.3 查看结果 软件介绍 Palabos是一款基于LBM&…

EXCEL怎样把筛选后含有公式的数据,复制粘贴到同一行的其它列?

自excel2003版之后,常规情况下,复制筛选后的数据,会忽略隐藏行,仅复制其筛选后的数据,粘贴则是粘贴到连续单元格区域,不管行是在显示状态还是隐藏状态。 一、初始数据: 二、题主的复制粘贴问题…

windows驱动开发-内核调度(一)

驱动层面的调度和同步一向是内核中比较困难的部分,和应用层不一样,内核位于系统进程下,所以它的调度和同步一旦出现纰漏,那会影响所有的程序,而内核并不具备对于这种情况下的纠错能力,没有异常手段能够让挂…

植物生态化学计量主要理论和假说

1 功能关联假说 描述化学计量特征与植物生长功能的关联, 主要包括: (1) 生长速率假说(Growth Rate Hypothesis) (Sterner & Elser, 2002): 随生长速率增加, 植物N:P和C:P呈降低趋势, 而P 含量呈增加趋势。该假说有助于理解植物生长速率的调控机制, 但受其他因素调控…

EPAI手绘建模APP动画编辑器、信息、工程图

④ 动画:打开关闭动画编辑器。APP中动画包含两个部分,动画编辑器和动画控制器。动画编辑器用来编辑动画。具体来说,选中一个模型后,给模型添加移动、旋转、缩放三种关键帧,不同的模型添加不同的关键帧,实现…

40.乐理基础-拍号-什么是一拍

拍: 首先 以Y分音符的时长为一拍 这一句话,然后拍是音乐中的时长单位,但这个时长单位有点特殊,它并不是完全绝对的某一个时间,而正是因为如此,所以不能用 秒 之类的,已经很确定很绝对的时间单位…

matlab例题大全

1.第1章 MATLAB系统环境 1.1 注:plot函数为画图函数。例plot(x1,y1,:,x2,y2,*); 1.2 注:root为求根函数。p为方程变量前面系数矩阵。 1.3 注: 2*x3y-1*z 2; 8*x2*y3*z 4; 45*x3*y9*z 23 求:x,y,z的…

关于位操作符的实际应用<C语言>

前言 位操作符在C语言初学阶段相对其他操作符来说,是一种难度比较大的操作符,且运用较少的一类操作符,但是位操作符并不是“一无是处”,合理运用的位操作符,在某些场景下可以优化算法,提高代码的执行效率&a…

PyQt5:Qt Designer使用重载的自定义类提升控件

1,以QPushButton举例 2,右击需要提升的控件,选择【提升为...】 3,添加自定义类,不用管 .h 的后缀,不影响使用。 4,完成 5,说明:自定义类的:__init__()方法…

基于STC12C5A60S2系列1T 8051单片机的IIC通信的0.96寸4针OLED12864显示16行点x16列点字模的功能

基于STC12C5A60S2系列1T 8051单片机的IIC通信的0.96寸4针OLED12864显示16行点x16列点字模的功能 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍液晶显示器OLED12864简…

抖音直播间小风车怎么挂?直播间小风车跳转微信怎么开通!

抖音直播已经成为了一个非常受欢迎的直播平台,而在直播间引流也是用户非常关注的一个话题。而针对这个问题,抖音也提供了一种非常好用的小工具——小风车,可以帮助用户在直播间进行引流。那么,抖音直播间小风车怎么挂?…

记录几种排序算法

十种常见排序算法可以分类两大类别:比较类排序和非比较类排序。 常见的快速排序、归并排序、堆排序以及冒泡排序等都属于比较类排序算法。比较类排序是通过比较来决定元素间的相对次序,其时间复杂度不能突破 O(nlogn)。在冒泡排序之类的排序中&…

扩展学习|本体研究进展

文献来源: 王向前,张宝隆,李慧宗.本体研究综述[J].情报杂志,2016,35(06):163-170. 一、本体的定义 本体概念被引入人工智能、知识工程等领域后被赋予了新的含义。然而不同的专家学者对本体的理解不同,所给出的定义也有所差异。 人工智能领域的学者Neches(1991)等人对…

Docker Compose 部署若依前后端分离版

准备一台服务器 本次使用虚拟机,虚拟机系统 Ubuntu20.04,内存 4G,4核。 确保虚拟机能连接互联网。 Ubuntu20.04 安装 Docker 添加 Docker 的官方 GPG key: sudo apt-get update sudo apt-get install ca-certificates curl su…

初始面相对象

初始面向对象 类和对象的关系 类:对对象向上抽取出像的部分、公共的部分以此形成类,类就相当于一个模版。 对象:在某个模版下的具体的产物可以理解为对象,对象就是一个一个具体的实例,就相当于这个模版下具体的产品&…

RabbitMQ之生产批量发送

为什么要用生产批量发送? 批量发送消息,可以提高MQ发送性能。但是 RabbitMQ 并没有提供了批量发送消息的 API 接口,使用 spring-amqp 的 BatchingRabbitTemplate 实现批量能力。 SimpleBatchingStrategy 发送策略满足以下规则会进行发送: ba…

梅大(龙)高速周边地形

最近广东高速的事故很受关注,我下载了这个高速的地形数据。查看了一下高速周围的地形情况。确实地形很险要,开车还是不要太快!尤其南方的路基不稳!这样险要的地形很危险! 高速周围的地形情况 梅大(龙&…

eNSP-动态路由(ospf协议)

一、拓扑结构搭建 二、主机配置 pc1 pc2 三、路由器配置 1.AR2配置 <Huawei>sys #进入系统视图 [Huawei]int g0/0/0 #进入接口 [Huawei-GigabitEthernet0/0/0]ip address 192.168.0.2 24 #设置ip地址 [Huawei-GigabitEthernet0/0/0]q #返回上一级 [Huawei]int g0/0/1 …

关于 Vue.js 双向数据绑定基本实现认知

写在前面 很早的一篇博客&#xff0c;整理了部分&#xff0c;蹭假期整理完博文内容涉及:双向数据绑定 实现方式简单介绍基于发布订阅、数据劫持的双向数据绑定两种不同实现(ES5/ES6) Demo&#xff0c;以及代码简单分析Object.defineProperty && Proxy API 介绍以及特性…

Libcity笔记:原子文件

1 介绍 Libcity中的数据以原子文件的形式存在 2 原子文件类别 对于不同的交通预测任务&#xff0c;可能用到不同的原子文件&#xff0c;同一个数据集不一定包含全部六种原子文件 网格数据需要按照先行后列的顺序遍历OD数据需要按照先起点后终点的顺序遍历 2.1 geo 存储地理…