【动手学因果推断】(一):因果推断入门
因果推断简要
背景
所谓因果推断,就是寻找变量间因果关系,并估计由于因对果造成的效应大小。它之所以重要,是因为因果关系一旦被准确衡量,那么只要控制了原因,我们就能得到想要的结果。例如我们知道了长高的原因,比如吃米饭是长高的唯一原因,那么如果我们想要长高,多吃米饭就可以了!因果推断应用到业务中也是一样,如果能发现某些事件与我们关心的业务指标间的因果关系,那么根据这些原因设计出有效的策略,就能得到我们想要的收益了。
接下来我们来看一个简单的例子,理解一下因果推断背后的motivation
1.Motivation:辛普森悖论
我们先来看一个非常经典的例子,假设今天我们出现了一个新的病毒:COVID-27,我们有两种治疗方案(A,B),我们该选择哪一种方案?
因此,我们先要做一批实验。分别对轻症和重症患者给予两种治疗,观察他们最后的结果来进行判断。假设实验结果如下:
对于方案A:15%的轻症病人死亡,30%的重症病人死亡,总死亡率16%
对于方案B:10%的轻症病人死亡,20%的重症病人死亡,总死亡率19%
首先我们来解释一下辛普森悖论,我们可以看到,在两组病人中,方案B的死亡率都更低,但是总体死亡率更高,这有点“反常识”,但是大家仔细观察,首先,轻症的病人死亡率一定低一些,其次,A方案大部分都是治疗轻症病人,B方案大部分是治疗重症病人,而他们的比例是不同的:轻症病人多于重症病人。
思考:我们应该选择哪个方案?
首先这个明显的悖论源于这样一个事实:"总 "一栏可以解释为我们应该选择A治疗,而 "轻度 "和 "重度 "两栏都可以解释为我们应该选择B治疗。事实上,如果我们知道某人的病情,我们应该给他B治疗,如果我们不知道他的病情,我们应该给他A治疗。因此,治疗A或治疗B都可能是正确的答案,这取决于数据的因果结构。**换句话说,因果关系是解决辛普森悖论的关键。**现在,我们只是给出了什么时候应该选择A治疗和什么时候应该选择B治疗的直觉,下面我们来更深入的讨论一下背后的原理。
场景一:
如果病情是治疗的原因,治疗B对降低死亡率更有效。 这个例子的情况是,医生决定给大多数病情轻微的人提供A治疗。而他们把更昂贵和更有限的治疗方法B留给病情严重的人。因为病情严重的人更有可能死亡(也更有可能接受B治疗),B治疗将与总人口中的高死亡率有关。换句话说,治疗B与较高的死亡率有关,仅仅是因为病情是治疗和死亡率的共同原因。这里,条件混淆了治疗对死亡率的影响。为了纠正这种混杂,我们必须研究相同条件的病人中 这意味着较好的治疗方法是在每个亚群( "轻度 "和 "重度 "列)中产生较低死亡率的治疗方法:治疗B。
我们选择B当C是T的原因
我们选择A当C是T的结果
场景二:
如果治疗的方案是病情的原因,那么治疗A就更有效 这个例子情况是,治疗B非常稀缺,需要病人在被开出治疗处方后等待很长时间才能接受治疗。治疗A则不存在这个问题。因为COVID-27患者的病情会随着时间的推移而恶化,开出治疗B实际上会使病情轻微的患者发展为严重的病情,造成更高的死亡率。因此,即使治疗B一旦用药就比治疗A更有效,由于选择处方治疗B会导致病情恶化(因为等待时间更长),因此治疗B总的来说效果较差。考虑到这种因果结构,治疗A是比较好的。
总之,更有效的治疗方法完全取决于问题的因果结构。 在情景1中,病情是治疗方案的一个原因,治疗B更有效。在情景2中,治疗方案是造成病情的原因,治疗A更有效。如果没有因果关系,辛普森悖论就无法解决。有了因果关系,它就不是一个悖论。
2.相关不等于因果
在我们平常使用的机器学习模型中,得到的估计反映的是变量间的相关性。但是相信大多数从事数据相关工作的同学都听过一句话,相关并不意味着因果(Correlation does not Imply Causation)。我们通过一个例子来直观地理解下这句话的含义。买雪糕的人越多,出现游泳事故的次数越多。如果只看这个结果,我们可以得出下面结论:
- 卖雪糕的老板要这些买雪糕的人去游泳😄
- 吃雪糕的人想要去游泳😃
事实上,因果关系只是相关关系的一种。除了因果(Causation),相关性的主要来源还有混淆(Confounding)和样本选择偏差(Selection bias)。三类分别对应以下三种结构:
2.1混淆(Counfounding)
混淆(Counfounding)是指存在一个变量 X X X(混淆因子),该变量构成了 T T T和 Y Y Y的共同原因;如果忽略了 X X X的影响,那么 T T T和 Y Y Y之间就存在假性相关关系:即 T T T并非 Y Y Y产生的直接原因。关于混淆,就像刚刚我们的例子那样:我们在夏天发现游泳溺水的人数增加,如果忽略了气温的影响,仅凭冰淇淋销量与溺水人数呈现出来的正向相关关系,则可能得出吃冰淇淋会导致游泳溺水的错误结论。
2.2样本选择偏差(Selection Bias)
样本选择偏差是指,当两个相互独立的变量T和Y产生了一个共同结果变量 (对撞因子),引入S则为T和Y之间打开了一条通路,从而误以为T和Y之间存在关联关系,这种现象也被称为“伯克森悖论”
例如,在一项研究中发现,一般人群中大约有5%的周肩炎,这一比例与其眼镜度数是否无关。但是当我们只关注过去3个月患周肩炎的患者时,却发现患有周肩炎,其眼镜度数平均提升250度。两者之间有很强的相关性!这是因为我们在研究“过去3个月内患周肩炎的患者”时,可能限制了对象都是一些平时用电脑较多的患者,因此他们用眼过度,导致眼镜度数增加。
现在我们了解了一些常见的相关和因果的例子,接下来我们看看如何研究因果问题,如何衡量因果效应呢?这是我们首先要回答的问题,下面我们先看一个定义
3.潜在结果(potential outcome)
潜在结果应该是我们因果推断中一个独特的定义,在机器学习和统计学中没有相关说明。我们将其定义为每一种干预下,可能的结果,任何一个干预都存在一个潜在结果
我们先来看两个场景:
场景 1
考虑一个你头疼的场景。你正在考虑是否吃药来帮助缓解头疼。如果你吃药后头疼好了,是否意味着吃药能够治愈头疼?假设你没有吃药头疼也会好怎么办?在这种情况下,吃药并不是让你头疼好所必需的,所以吃药对你的头疼好有因果关系的说法是站不住脚的。
场景 2
让我们稍微改变一下。考虑一下,如果你吃药后头疼好了,假设你没有吃药仍然头疼,在这种情况下,吃药对你的头疼缓解有因果关系。
在上述两种情况下,我们都使用了称为潜在结果的因果概念。你的结果Y代表是否头疼,Y= 1对应于不头疼而 Y= 0 对应于头疼。你的治疗T是你是否吃药: T= 1 对应你吃药 而 T = 0对应你不吃药
其中
-
do(T=i)代表进行某种干预
-
Y i ( 1 ) : Y_i(1): Yi(1):表示吃药后的潜在结果, Y i ( 0 ) : Y_i(0): Yi(0):表示没有吃药后的潜在结果
-
Y i ( 1 ) − Y i ( 0 ) Y_i(1)-Y_i(0) Yi(1)−Yi(0)表示个人因果效应
-
单元(Unit):干预作用的最小单元,可以是乘客、司机、订单、时间片等;一个单元可以视为数据集中的一个样本点。
-
干预(Treatment):作用于Unit的动作,例如投放广告、优化定价策略等;干预可以是二元,也可以是多元,例如多个实验组有不同的干预水平。为了简化说明,下面我们假设干预是二元的,实验组对应,对照组对应。
因此 ,在情景一中:Causal effect = 1-1=0,在情景二中,Causal effect = 1-0=1
然而,在实际中,我们只能得到一个干预后的潜在结果,因为我们不能同时让一个人吃药又不吃药。
我们再引入两个概念:
-
事实结果(Factual outcome):实际实施某种干预后所观测到的结果,也称为观测结果,是潜在结果的一种实际表现。
-
反事实结果(Counterfactual outcome):对于一个单位来说,除了它真正被实施的干预以外,所有其他干预的潜在结果都是反事情结果。
例如,我们吃药了,那么我们是观测不到未吃药结果,此时未吃药就是一个反事实结果。
而某一个单位的反事实结果我们是不能直接得到的,因此这种情况,我们考虑一个群体的因果效应
Average treatment effect (ATE): E ( Y i ( 1 ) − Y i ( 0 ) ) = E ( Y ( 1 ) ) − E ( Y ( 0 ) ) E(Y_i(1)-Y_i(0))=E(Y(1))-E(Y(0)) E(Yi(1)−Yi(0))=E(Y(1))−E(Y(0)),直接求 E ( Y ( 1 ) ) E(Y(1)) E(Y(1))不好算,我们有的是条件期望,得到 E ( Y ∣ T = 1 ) − E ( Y ∣ T = 0 ) E(Y|T=1)-E(Y|T=0) E(Y∣T=1)−E(Y∣T=0),我们会想知道这两个相等吗?然而,在很多情况下,我们是不相等的。回想我们刚刚的例子:相关性不等于因果。
当存在一个混淆变量(counfounding)时,C会对T有影响。那么如果我们能够得到一个随机控制实验,使得C与T无关,则上述两个等式是相等的
我们可以得到随机实验,使得控制组和对照组之间是可比的。但是在实际中,某些情况无法做随机实验,我们就只能使用观测数据来进行因果推断。
4.观测数据下的因果推断
我们知道AB随机试验虽然是评估因果效应最科学的方法之一,但是在一些实际情况中,AB实验不适用,例如:
-
样本之间存在一些关系
- 样本之间存在社交网络关系(营销策略)
- 样本之间存在竞争观察(分单策略)
-
样本被稀释(例如发券策略)
-
不存在可以分开的样本:
- 例如双十一,我们无法干预哪些用户参与哪些用户不参与,这个时候没办法将用户分流。
-
ex…
那我们如何根据观测数据来估计因果效应呢?
这里我们先介绍一个最简单的想法
假设我们有一个变量W,它能够充分控制Counfounding,
使得,当给定W=w时, E ( Y ( t ) ∣ W = w ) = E ( Y ∣ T = t , W = w ) E(Y(t)|W=w)=E(Y|T=t,W=w) E(Y(t)∣W=w)=E(Y∣T=t,W=w),也就是通过这个W,阻断了其它变量对T的影响,此时我们就只有Y和T之间的关系。因此,我们根据概率论的知识,可以得到
这样就可以测量不同干预下潜在结果的期望。我们在回到一开始的例子来看看如何应用
此时,C相当于上面的W,那么根据上述的公式,我们可以计算结果如下:
我们从直觉上来看,此时在给定C的情况下,C即不是T的因,也不是T的果,因此我们要计算的应该是两种方案整体的治疗效果,因此,我们将两种病情的比例来作为权重,且两种方案权重应该一致,因为我们面对的就是整体对象!
5.总结
我们从几个实际的例子中了明白了因果和相关的联系与区别,我们知道因果关系结构会决定某一干预的结果。 因此,如何衡量这些因果关系和和效应是十分重要的。我们介绍了相关概念:潜在结果、反事实结果,从而定义了因果效应,但是我们在这篇文章介绍的衡量因果效应是从直观上来理解的,下一篇文章将会介绍具体的框架(潜在因果框架)