点击下面卡片关注我呀,每天给你送来AI技术干货!

来自 | 知乎

作者 | 陈歪歪

地址 | https://zhuanlan.zhihu.com/p/258562953

编辑 | 机器学习算法与自然语言处理公众号

本文仅作学术分享,若侵权,请联系后台删文处理

写在前面:这部分的文章会作为系列的文章,分享在因果推断领域的相关论文,介绍为什么需要因果推断?它是什么?它能做什么?作为这段时间自己看论文的总结,希望能跟看到这篇东西的大佬多多探讨。

相关性≠因果性

在阐述为什么之前需要阐述是什么?在日常生活和数据分析中,我们可以得到大量相关性的结论,我们通过各种统计模型、机器学习、深度学习模型,通过分析得到种种结论,但是这里面存在一个巨大的疑问就是,“相关性一定等于因果性吗?”

举个 ,这个是缅因州黄油消费量和离婚率的关系

从图上可以看出这两个变量呈高度相关的关系,但是如果我们从因果的角度来阐释,说黄油消费导致了离婚,或者离婚导致了黄油出售,显然都非常荒谬。

实际上,相关性通常是对称的,因果性通常是不对称的(单向箭头),相关性不一定说明了因果性,但因果性一般都会在统计层面导致相关性。

为什么需要因果推断

举个 ,我目前在做权益方向的工作,以权益为例,我们为了促进某些不活跃用户的消费,给不活跃用户发了更大的红包,给活跃用户发了更小的红包,把所有特征扔进模型训练,得出了一个奇怪的结论,给用户越大的红包,用户越不买东西。

不考虑因果性的话,相似的或者别的类型的错误还有很多,《Theoretical Impediments to Machine Learning With Seven Sparks from the Causal Revolution》这篇论文说到了因果推断的三层

第一层是关联:X条件下Y会怎么样,也就是现在机器学习中常用的方式,尽可能通过深层次的网络去拟合X和Y的关系

第二层是干预:如果我服用了阿司匹林,身体会怎么样?也就是如果我改变了X,Y会怎么样?

第三层是反事实推断:相当于对结果来考虑原因,相当于如果我们希望Y变化,那么我们需要对X做出什么样的改变?

从作者角度这样看来,因果推断是高于现行机器学习方法的方法,但我的观点来说,因果推断的方法其实是通过因果关系,解决现行只考虑相关关系的的机器学习方法产生的一系列问题。

因果推断研究的两个问题——从辛普森悖论讲起

上图男女分别来看

  • 女性对照组1/(1+19)=5%发病率,处理组3/(3+37)=7.5%发病率,这个药对女性有害

  • 男性对照组12/(12+28)=30%发病率,处理组8/(8+12)=40%发病率,这个药对男性也有害 但从总体看,对照组13/(13+47)=21.6%发病率,处理组11/(11+49)=18.3%发病率,这个药对人类有效,发生了什么?

上图分血压情况来看

  • 血压降低的情况下对照组1/(1+19)=5%发病率,处理组3/(3+37)=7.5%发病率,血压降低的患者发病率增加了

  • 血压升高的情况下对照组12/(12+28)=30%发病率,处理组8/(8+12)=40%发病率,血压升高的患者发病率也增加了 但从总体来看,对照组13/(13+47)=21.6%发病率,处理组11/(11+49)=18.3%发病率,这个药对人类有效,发生了什么?让我们来看两种情况下的因果图

从上面的因果图可以很容易明白

在第一个问题下,不同的性别有不同的服药意愿,也就是性别是服药和发病的共同原因,所以应该分层进行统计

在第二个问题下,服药会导致血压变化,也就是血压是服药和发病的共同结果,如果分层统计,则会低估服药的影响,总体的结论才是正确的。

从这两个辛普森悖论的例子我们可以看出现在因果推断最重要的两个研究方向:

  1. causal discovery:因果发现,也就是发现以上统计变量之间的因果关系,从统计变量中探寻出一个如上的因果图

  2. causal effect:因果效应,在得到因果关系之后,确定效果,比如上面的问题是,知道因果图之后,确定服药之后发病率增加(减少)多少

注:后面的介绍主要还是着重于因果效应相关的论文和发展,如果对于因果发现更有兴趣的大佬可以移步。

基本概念

  • 干预 Treatment T:一般我们考虑二值干预 

  • 潜在结果Potential outcome :分别为用户有没有给treatment

  • 观察结果 Observed outcome  :用户受到干预时, ,用户未受到干预时, 

  • 反事实结果 Counterfactual outcome  :用户受到干预时, ,用户未受到干预时, 

对于单个用户,我们希望得到individual treatment effect (ITE),也就是

对于整体的effect,通常为The average treatment effect (ATE或者ACE),

基础方法

随机试验——因果推断的黄金准则

 表示个体i接受治疗的个体因果作用,但是对于单个个体来说,要么接受treatment,要么不接受,中必然会缺失一个,但在T做随机化的前提下,我们可以识别总体的ATE:

这是因为

最后一个等式表明ATE可以由观测的数据估计出来。其中第一个等式用到了期望算子的线性性(非线性的算子导出的因果度量很难被识别!);第二个式子用到了随机化,即 (⊥表示独立性)

可以看出,随机化实验对于平均因果作用的识别有着重要作用。

但是实际应用中,随机化实验是最“贵”的因果推断方式,有时候我们无法控制“treatment”,更多时候成本实在太高,我们只能拨一小波人进行实验,所以这种“黄金标准”并不算实用。

双重差分法(difference in difference DID)

在随机试验那部分我们提到,可以采用的前提是,那如果不符合这个条件应该怎么办?有一个比较老且基础的方法是双重差分法,也就是差分两次。

这张图讲得非常清楚,首先为什么我们不能用,举个 ,我们给一些人发权益,另一些人不发,我们怎么能知道权益带来的购买效果是怎么样的呢?简单的方法就是给发权益的人购买数加和,不发权益的人购买数加和,然后两个加和相减就好啦,但是如果这两部分人本来不发权益的时候购买数就不一样呢?

那就减两次,从上图来说,我们把这两群人发权益之前t0的购买数相减,得到一个差值,相当于这两群人的固有差距,再把这两群人发权益之后t1的购买数相减,相当于这两群人被权益影响之后的差距,后面的差距减去前面的差距,就会得到权益对于差距有多少提升(降低),以此作为权益的effect。

这个方法的问题在于有个比较强的要求是,趋势平行,也就是要求t0到t1之间,两群人的购买概率变化趋势是一样的(图中那个平行线),这其实是一个很强的假设,所以这个方法我个人来讲不算非常认可。DID之上还有DDD,也就是多组别多时间点的DID,在此不多赘述。

从matching到倾向性得分

随机化试验那部分我们讲到了

这个公式其实包含了较强的可忽略性(Ignorability)假定,但我们之前说了,这种方式比较“贵”,所以通常我们会希望收集足够多的X,使得:

如果看过一些因果论文的同学会知道,这个叫Conditional Independence Assumption (CIA) 这是因为

那么这个方法实际操作起来通常就是称之为Exact matching,也就是对于每一个 =1的用户,我们从 =0的分组里找一个变量 一模一样的用户,在这个X的条件下,满足T与Y相互独立,此时直接比较两组用户观察结果 的差异就可以得到结论,但是,“匹配用户的变量 完全相等” 这个要求过于严格,不实用。

由此衍生了用倾向性得分进行匹配的方式Propensity Score Matching,简称 PSM:在 PSM 方法中,我们首先对每一个用户计算一个倾向性得分(propensity score),定义为 ( )= ( =1| = ) ,这里面的假定由变为了,接着我们根据倾向性得分对于用户进行匹配。

但是这种方式也是有其局限性的,就是在于treatment group和control group的用户需要足够齐全且维度较高,实际应用的时候我们会发现本身两个group的用户有较明显的差异,想要找到倾向性得分相近程度达到要求的用户非常难。

相关的方法非常多:

  • 用倾向性得分来对用户进行分组,称为 subclassification

  • 用倾向性得分来对用户进行加权抽样,称为 Inverse Propensity Score Weighting (IPSW) ,权重为

树模型

代表的算法有BART,Causal Forest,upliftRF 。

以2018年的《Estimation and Inference of Heterogeneous Treatment Effects using Random Forests》为例,这篇论文主要讲了Double sample trees和propensity trees,在此只简单介绍propensity trees,整体的流程如下:

其实整体思路非常清晰,就是训练一棵预测treatment的树,然后在树的叶子结点做因果推断,如果大家仔细看了前面的倾向性得分的话,会发现其实这个思路其实就相当于propensity matching的树版,可能跟subclassification更相似。

关于因果推断的树模型方式理论上应该专门开一栏进行介绍,但是相关论文我看的不多,而且在很多因果推断的新论文里面BART,Causal Forest的效果其实都比不上现在新的前沿算法了,所以在此就简单介绍一种。

相关的因果推断方向还有很多,比如重加权方法,表示学习方法,对抗学习方法,doubly robust方法,元学习方法等,这些方向相关论文都不少,如果都在这篇里面说完会显得全文非常冗余,所以后期会尽量把相关看过的论文都总结下来。

开源工具

这里面照搬了综述文章《A Survey on Causal Inference》里面的图,其实讲的已经非常全了,大家自行食用:

说个正事哈

由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方深度学习自然语言处理”,进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心

投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

记得备注呦

点击上面卡片,关注我呀,每天推送AI技术干货~

整理不易,还望给个在看!

因果推断综述及基础方法介绍(一)相关推荐

  1. 因果推断综述-基础知识2

    这一节是文章中第二部分基础知识.这一节公式较多,会影响阅读时效. 2.3假设 为了估计治疗效果,在因果推断文献中通常使用以下假设. 假设2.1  稳定的unit治疗价值假设(SUTVA) 任何unit ...

  2. 2020年因果推断综述《A Survey on Causal Inference》

    最近阅读了TKDD2020年的<A Survey on Causal Inference>,传送门,自己对文章按照顺序做了整理,同时对优秀的内容进行融合,如有不当之处,请多多指教. 文章对 ...

  3. 论文阅读——基于观测数据的时间序列因果推断综述

    国防科大2022年3月的综述 1.Granger 多元Granger: VAR+条件集,P(X|Y)=>条件VAR模型,比较y与y^来判定因果关系. (加入条件集,消除其它变量影响) 条件Gra ...

  4. 八字推断系统:(一) 基础知识介绍

    简序: 基于对国学古老传统文化五行八字的兴趣爱好,尝试对其浅显理解和和实践,构建分析工具,借此抛砖引玉,希望能引起对古文化的兴趣. 五行八字基础: 五行是古代是古人对时间空间认知的一个综合世界观,认为 ...

  5. 因果推断笔记——uplift建模、meta元学习、Class Transformation Method(八)

    文章目录 1 uplift 模型介绍 -- 为个体计算ITE 1.1 模型方向 1.2 ITE的假设前提 2 uplift方法一:元学习方法(Meta-learning methods) 2.1 Co ...

  6. 因果推断笔记——自整理因果推断理论解读(七)

    之前有整理过一篇:因果推断笔记-- 相关理论:Rubin Potential.Pearl.倾向性得分.与机器学习异同(二) 不过,那时候刚刚开始学,只能慢慢理解,所以这边通过一轮的学习再次整理一下手里 ...

  7. 因果推断笔记——双重差分理论、假设、实践(四)

    文章目录 1 双重差分 - difference-in-difference -DID 理论与假设 1.1 DID介绍 1.2 使用时需要满足的假设 2 DID + PSM 差异与联用 2.1 DID ...

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

    目录 一.因果推断介绍 1.1 什么是因果推断 1.2为什么研究因果推断 1.3因果推断阶梯 1.4因果推断问题分类 二.因果推断理论框架 2.1 定义(这些定义后面会经常用到) 2.2 Assump ...

  9. 丁鹏:多角度回顾因果推断的模型方法

    来源:集智俱乐部本文约23000字,建议阅读20+分钟 本文整理自丁鹏老师的8篇短文,从多角度回顾了因果推断的各种模型方法. [ 导读 ] 推断因果关系,是人类思想史与科学史上的重要主题.现代因果推断 ...

  10. 因果推断3--DRNet(个人笔记)

    目录 Learning Counterfactual Representations for Estimating Individual Dose-Response Curves 1介绍 2相关工作 ...

最新文章

  1. Leangoo 6.2.6 版发布
  2. USEARCH — 最简单易学的扩增子分析流程(中国总代理)
  3. Hyperledger Fabric Docker 文件路径权限
  4. 解决docker(ERROR: No such container: )错误
  5. Apache+Tomcat中支持“UTF-8”编码的中文地址
  6. oracle11g同步,Oracle11g三种数据同步方式-Oracle
  7. mysql 注入 file load_Mysql注入中into outfile和load_file()总结
  8. mysql optimizer mrr_[转] MySQL 的 MRR 到底是什么?
  9. linux安装mysql5.6整套_Linux安装Mysql5.6
  10. Pandas 文本数据方法 repeat( )
  11. oracle的sql口令,Oracle数据库的SYS口令是什么?
  12. AI学习笔记(十八)NLP常见场景之情感分析
  13. openstack创建虚拟机
  14. Friend List
  15. mysql存储过程返回结果集_原来MySQL的存储过程也可以这么玩?
  16. iperf3使用方法说明
  17. 松下FP-XH系列PLC 断电保持寄存器使用注意事项
  18. 固态硬盘性能下降,造成win10卡顿,及解决方法
  19. 一键备份微博并导出生成PDF,顺便用Python分析微博账号数据!
  20. Cannot prepare internal mirrorlist: No URLs in mirrorlist 【已经解决】

热门文章

  1. java建站系统开发教程系列之设计表结构
  2. Netty源代码学习——EventLoopGroup原理:NioEventLoopGroup分析
  3. Python基础之字典
  4. JS总结 本地对象2 BOM DOM
  5. 1688: [Usaco2005 Open]Disease Manangement 疾病管理( 枚举 )
  6. ORACLE锁的管理
  7. @interface自定义注解
  8. HPU--1091 N!的位数
  9. LeetCode - Merge Two Sorted Lists
  10. 【Spring学习笔记-0】Spring开发所需要的核心jar包