由于日常工作会涉及因果推断方面的东西,闲暇时光跟身边的朋友同事也有不少相关的讨论,所以想把自己知道的或者思考过的东西写下来,一方面给自己做个沉淀,一方面也借个地儿跟大家探讨,交流学习。
知道多的会聊多一点,知道少的会聊浅一些,力求写出来的内容让刚接触因果推断的同学也能看明白。如有谬误之处欢迎指正。
近十几年来,不管是机器学习(machine learning)还是深度学习(deep learning),在搜广推都取得了巨大的成功,但它们都是对相关性信息进行建模,无法学习因果信号,无法回答为什么。
知其然不知所以然,这是会有问题的
举个例子,一个CVR响应模型(respond model)能预估给某个用户投放广告后的转化率,但实际上即使不投放广告用户也可能会发生转化。至于这个用户是否是因为看到广告才转化的、或者说多大程度上是因为看到广告转化的,CVR响应模型无法回答这个问题。业务上,自然不想再花钱去投放广告给这种不需要曝光广告也能转化的用户(不追求转化的品牌广告除外)。
如果有另一个模型能够预估广告对用户的转化意愿产生多大的影响(uplift CVR),意味着可以把广告预算分配给更需要的用户(花在刀刃上),进而提高整体效益。这就是因果推断要做的事,这种模型称为 uplift 模型(uplift model), 强调因果性 。
我们来看看大佬们怎么说。2018年图灵奖得主Yoshua Bengio 在 接受采访时说:“因果关系对机器学习的下一步进展非常重要“。
另一位大佬,贝叶斯网络之父、2011年图灵奖的主Judea Pearl ,在书中 他的新书《The book of why(the new science of cause and effect)》提到 :“因果模型是强AI的必需品,它能够反思自己的行为并从过去的错误中学习的机器。它应该能够理解“我应该采取不同的行动”这句话,无论它是由一个人说的还是自己得出的结论。”
国内的丁鹏教授的文章《因果推断——现代统计的思想飞跃》开篇在哲学层面提到了因果地位。
比如 吸烟是否会导致肺癌吸?烟的人里有肺癌患者,不吸烟的人里也有肺癌患者,这个经典的问题经过漫长的验证。
比如 上大学是否会带来更多收入?直觉上我们认为高等教育会增加个人收入,但我们却很难说清楚没有上过大学的人如果上了大学会增加多少收入,同时我们也有看到没上过大学也能赚大钱的人。
再比如,在智能营销领域中,给用户发了优惠券以刺激购买转化,但事实上,部分用户可能不需要优惠券也能发生购买转化,如何在给定的平台预算下最大化收益呢?怎么预估用户因为券而增加多大购买意愿的呢?
再比如,如果你当初做了另一个选择,现在的自己会不会有什么不一样... 因果推断 要做的事情就是:预估一种干预因素(treatment)对结果(outcome)的影响(treatment effect)
鞋子湿了是因为打了伞吗
考虑 "下雨",“打伞”,“湿鞋子” 这三个事件的关系
- 下雨、打伞都发生了,因为下雨,所以人们才打伞,这是因果关系
- 打伞的人鞋子基本都湿了 ,很显然这只是相关关系,湿鞋子并不是因为打了伞
以上例子非常简单,我们可以很容易的分清楚哪些是因果关系,哪些是相关关系,既然如此,为什么还要特地强调 相关性不等于因果性呢?因为在很多现实问题中,我们不一定能那么容易分得清楚因果关系还是相关关系。比如下面这个例子。
加固轰炸机哪个部位
二战期间,美英在德国上空进行的规模庞大的轰炸作战,号称“飞行堡垒”的B-17是美国的主力轰炸机,具备优秀的抗打击性能。但战况激烈,仍然有不少B-17轰炸机执行任务后未能返航,专家们开始研究如何加强B-17的防护。经过测量和统计B-17各部位的弹孔,专家们认为翅膀、腹部是最容易中弹的地方。于是,他们准备给B-17的翅膀和腹部加装更厚的装甲。
但亚伯拉罕·沃德(美国哥伦比亚大学统计学教授)提出反对意见,他认为,要在弹孔少或者没有弹孔的座舱和机尾部分加强防护。沃德对其他专家说,你们统计过返回的飞机后发现座舱和机尾部分一般很少中弹,或是根本不会被命中,那是因为座舱和机尾部分中弹的飞机大部分没能活着飞回来,因此大家看不到座舱和机尾部分带着弹孔返回的B-17。大家听了恍然大悟。
事实证明,沃德是对的。这个故事便是著名的“幸存者偏差”(Survivorship bias)
其他专家们基于观测到的弹孔统计结果,看到翅膀和腹部比较受伤就以为这是战损原因,实际上这只是返航战机和弹孔位置的相关性分析而已。
下图是关于A、B两种治疗方案对轻重症的治疗效果统计结果(死亡率越低说明效果越好)。
Treatment T: A(0) and B(1)
Condition C: mild(0) or severe(1)
Y:alive(0) or dead(1)
当我们区分轻症(Mild)、重症(Severe)来看,B治疗方案都比A治疗方案要好一些。可是,当总体来看时,B的治疗效果(19%的死亡率)却不如A(16%的死亡率)。分开组别看和总体看到的结论相反,出现了辛普森悖论(Simpson's paradox)
如果从数学计算上,很容易证明:当且时,不能推出
但这并不能回答事情为什么会这样,即究其原因为什么会出现辛普森悖论呢?
我们来缕一缕逻辑,当我们基于上述表格做出以下判断
总体来看时,B的治疗效果(19%的死亡率)却不如A(16%的死亡率 )
我们在做出这个判断时,应用的也是相关性分析手段, 心里默认这种对比是公平的,即应用A,B治疗方案的人群是一样的(无偏的)。但,这样的前提并不一定成立。
我们可以看到,对于轻症的患者,医生会建议用A治疗方案,对于病重的患者,医生会建议用B方案(更耗资源、更稀缺的方案)。也就是说,患者是否病重,不仅会影响死亡率,也会影响治疗方案。B方案以重症患者居多,A以轻症患者居多,这样总体的比较是不公平的。
混淆因素(Confounding factor)
接着上述例子,因为轻症、重症是不一样的人群,医生会根据病人的病情,轻症的会倾向于安排A治疗方案,重症会倾向于安排B的方案。在因果图里可以看到,C(轻症、重症)会同时影响T(A、B方案)以及Y(存活、死亡)。像C这种同时影响treatment 和结果的因素,就是 混淆因素 (confounding factor)。
选择偏差(Selection bias)
因为在观测到的数据样本里,由于医生会根据患者的实际情况安排A、B方案,这使得接受A、B方案的人群分布是不一样的(B方案以重症患者居多,A以轻症患者居多),这种不一样就称为选择偏差(selection bias),有时候也叫 Treatment bias。因为存在选择偏差现象,使得我们无法通过简单分别统计A、B方案的死亡率来比较治疗效果差别。
怎么解决这个选择偏差问题问题呢?可能有些同学已经想到了,强行随机分配A、B方案呗,大家人群分布一样就可以比较了。没错,理论上随机化AB实验的方法是可以规避选择偏差问题,但在现实中很多随机化会因为伦理和操作成本上的原因而很难做到。比如不考虑患者的实际病情强行安排,给一个轻症患者被随机到了B方案(费用很贵,稀缺医疗资源),患者和医生都是不答应的。
如果规避不了,在存在选择偏差的样本里如何评估因果效应呢?其实可以做到的,但这次我们先把概念讲清楚,具体怎么做日后再聊(参考下一篇文章 )。
但我们并不只想做“事后诸葛亮”,我们需要一个模型能提前预估因果效应以便做出干预与否、怎么干预的决策。基于观测到的存在选择偏差的数据训练一个能够预估因果效应的模型,这就是uplift modeling 要做的事情,后面我们再慢慢聊一系列的建模方法是怎么做的。
倾向性(Propensity)
结合前面的混淆因素的概念,倾向性其实很好理解,比如不同患者由于自身状况不同,对治疗的选择方案(A或B)会有一定的倾向性。举个例子一个病重的患者,最终可能有80%的概率接受B治疗方案,这个80%就是倾向性得分,用数学语言来说就是P(治疗方案=B|患者x )。这个条件概率在观察性研究的因果推断中,发挥着至关重要的作用,称为倾向性得分(propensity score),我们会经常聊到它。
反事实 (Counterfactual)
我们观测到的样本里,只能知道某个用户接受A方案或B方案后的治疗结果,但无法知道那些选择B方案的患者,如果选择A方案治疗结果会有什么不一样。 反事实,可以理解为存在于平行宇宙中的“另一个事实” 。
再比如,一个人服用了药物(这个例子可能更容易讲清楚 hahaha ),我们能观测到他服用药物后的是否康复,但如果我们想判断是否是因为服了药才康复,就需要知道如果不服药的情况(依旧患病还是自愈?)。可惜没有如果,另一种选择只存在平行世界中。对于另一种treatment,存在于平行世界的另一种事实,就称为反事实(counter fact)。
前面我们说到,
因果推断 要做的事情就是:预估一种干预因素(treatment)对结果(outcome)的影响(treatment effect)
做这个事情主要有两种理论(或者说框架),分别是潜在结构因果模型、潜在结果框架。
结构因果模型(SCM, Structural causal model)[1]
大概思路是说通过一个有向无环图 表达因果关系,每个节点的值(准确说是内生节点)都可以通过一个关于其父节点的函数计算获得,从而得知干预某个节点(treatment)对目标节点(outcome)的影响(treatment effect)。
定义上主要有三个集合构成
- 外生变量(Exogenous variables)集合U :这些变量没有祖先, 我们也不关心它们的因是什么。比如图中的
- 内生变量 (Endogenous variables)集合 : 这些变量至少有一个是外生变量的后代
- 函数集合 对应图中的变集合, 反应内生变量的表达式。如果知道每一个外生变量的值, 我们就可以利用f中 的函数给内生变量赋值。比如 ,表示 的表达式是关于 的函数, 具体可能长 这样 通过do算子来表达干预(同时去掉指向干预节点的边),进而得到干预所产生的影响。比如 表示干 预 节点使之为 0 , 并依据函数集里计算产生的因果效应。比如 , 即干预B节点使之为 0 后, C节点等于1的概率是多少。同样的做一遍 , 计算 , 对应比一下就知道 变成1给C带来的影响是多少了。
潜在结果框架(Potential outcomes framework)[2]
指的是 Neyman-Rubin potential outcomes framework[2] ,有些资料也称为RCM(Rubin casual model) 大概思路是认为每个观测到的样本在平行世界里都存在着另一个事实对应着另一个可能,称为潜在结果(Potential outcome)。只要把潜在的结果计算出来,跟观测到的结果进行对比(相减),就知道两种选择(做干预、不做干预)的区别了。对于某个具体的 样本
符号解释:
- : 表示进行某干预 的outcomes, 比如服药的结果
- : 表示没有干预的outcomes, 比如末服药的结果
- : 表示 Individual Treatment Effect (ITE), 就是干预(比如服药) 带来的影响, 即我们说的因果效应。
ITE 在某些文献里会表示为:Conditional Average Treatment Effect (CATE)。在推荐领域 uplift model 所说的uplift 也是指 ITE、CATE。
令 表示treatment (其他文献里也常用 或 来表示treatment, 本文为了与前面的例子保持一致所以选用 T) , 这里先只讨论binary的情况, 即只有 0,1 两种; 表示实际观测到的结果, 不难得到以下恒等式:
当 时, ;当 时, 。看起来很简单, 但它有个重要的意义, 把左边能够 观测到的结果和右边的潜在结果联系了起来。潜在结果框架需要依赖接下来要说的 三大假设 。
- 可忽略假设 (!gnorability ):, 流行病学家常常称之为“无混杂性” (unconfoundednesss), 在经济学里称为 “可观测的选择机制” (selection on observables) 。意思是没有末 观测到的混淆变量了。
- 重叠性 (overlap) : , 即是说, 样本有可能干预也可能不干预, 不允许干预状态只有一种。例 如, 如果所有患者都是100%不愿意服药的, 那么就没办法(也没有意义)研究药物的带来的实际影响。
- 一致性假设 (Consistency) : 意思是说干预对结果的影响是稳定的, 影响有多少就是多少, 不受 其他因素因素影响。比如某个患者i, 他服药 后治疗效果 , 不会因为看到大多数人没有服药而产 生心理压力影响了治疗效果 (不会因为从众心理影响治疗效果)。
补充符号说明:
- 是 , 表示倾向性得分 (propensity score)
- 从个体角度看:ITE ( Individual Treatment Effec),正如前面提到,在个体力度上考察因果效应,比如一张优惠券给某个用户提高了多少购买意愿(体现在增量购买概率)。
- 从整体角度看:ATE (average treatment effect),在全部群体层面上看,希望得到一个普遍的效果效应结论,比如发放优惠券给商家、平台带来的多少增量GMV、增量成交订单等。
- 只看干预/为干预的那部分:ATT (Average Treatment Effect of the Treated),ATC (Average Treatment Effect of the Control),在一些观测性研究中(observation study),有时候可能会只关注有干预(或未干预)那部分的因果效应。
一杯铁观音喝完了,小结下吧~
- 因果推断在现实中的意义:几乎只要涉及决策,就有因果推断的存在
- 因果性与相关性的区别:说起来很简单,但在现实中有些情景容易把相关性当做因果性,从而无法得到正确的结论。
- 几个重要概念:混淆因素(confounding factor)、选择偏差(selection bias)、倾向性 (propensity)、反事实(counterfactual),在因果推断领域会经常看到它们。
- 关于两个理论框架,结构因果模型(SCM)和潜在结果框架(potential outcomes framework)是两种不同的思路,后续在系列文章中我主要围绕业界常用的潜在结果框架展开。
- 三大假设:接下来如果没有特别说明,我们都是基于三大假设展开讨论。
- 因果效应观测粒度:ITE(个体角度),ATE(整体角度)是最常用的。此外还有ATT(只看干预的),ATC(只看未干预的)。
感谢阅读,希望本文对你有所帮助,喜欢的话记得点赞收藏+关注哦 (◠‿◠)
[1] Spirtes, P., Glymour, C., and Scheines, R. Causation, Prediction, and Search. MIT press, 2nd edition, 2000.
[2] Donald B. Rubin. 2005. Causal Inference Using Potential Outcomes. J. Amer. Statist. Assoc. 100 (2005), 322 – 331.
交流群:点击“联系 作者”--备注“研究方向-公司或学校”
欢迎|论文宣传|合作交流
往期推荐
长按关注,更多精彩
点个在看你最好看
