结构性机甲旋风土豆212(1 / 2)

1.1 什么是因果推断

因果推断用于衡量一个行为的价值。即判断一个“因”能导致多少“果”。

比如说我今晚复习数学,明天数学考试能提升多少分。这是一个很难回答的问题,因为我无法同时知道不复习和复习后,我分别能考多少分,当前时刻我只能做一种选择并得到一个结果,另一个选择的结果是永远不可知的,这在因果推断里叫做反事实(conterfactual)。

因果推断往往会衍生出一个研究方向,因果发现。即判断一个行为是否和一个事件互为因果(推断是判断带来了多少果,发现是判断是否为因果)。比如冰棍卖的多和电费高往往同时出现,但他们不是因果关系,因为这种现象主要是天气热带来的。

1.2 为什么要研究因果

1.2.1 因果性 ≠ 相关性[2]

设想一个场景:大数据发现,穿鞋睡觉的人第二天往往会头疼。因此我们可以得出穿鞋睡觉和头疼相关,但这显然是反直觉的,客观规律告诉我们穿鞋睡觉不应该导致头疼。那但数据上为什么会呈现出这个现象呢?

原来是穿鞋睡觉的人大多都喝酒了,所以,真正导致头疼的其实是“隐藏”变量-是否喝酒。(这在因果推断里叫混淆变量,confounder)

深入思考一下,我们为什么会得出”因为穿鞋睡觉所以头疼“的错误结论,那是因为我们隐含的观察到“不穿鞋睡觉不头疼“,两组数据对比下得出结论。但是这个结论错误的关键是,两个集合里喝酒的人分布是不一致的,真实的因果是喝酒所以头疼,因此这里会有数学上的“辛普森悖论”。

因此,这个场景我们只能说穿鞋睡觉和头疼有相关性,但不能说他们互为因果。即相关 ≠ 因果

1.2.2 因果推断 > 相关性分析

为了对比因果推断和其他的机器学习问题,学术界提出了三层的因果之梯[3][4]:

相关(association,观察):解释p(y|x),即已知x的条件下,y会怎么样。这是大部分场景下机器学习所面对的问题,如上一节所述,相关 ≠ 因果,故常规的机器学习方法无法处理因果问题。以上面的case为例,假设x = 穿鞋睡觉,y=头疼,则该层级会看到两者相关性很高的“假象”。

干预(intervention,行动):解释p(y|do(x),z),即做某个行为x后,y是怎么样的。比如上面的例子,干预穿鞋睡觉的行为x,单独分析穿鞋睡觉(即do(x) = 1)和不穿鞋睡觉(do(x) = 0),在不同喝酒状态下的头疼(y)分布。这个层面可以分析出穿鞋睡觉对头疼可能无影响。但无法判断每个人穿鞋睡觉会不会导致头疼,因为观察不到。

反事实(counterfactual,想象):解释行为x对结果y的影响,即我做了x和不做x,对结果y的影响程度。这是因果推断要解决的问题,比如上面的例子,我不仅看到每个人不穿鞋睡觉头不痛的现象,还能反事实的推断出每个人穿鞋睡觉头不疼,进而得出穿鞋睡觉对头疼的具体影响程度。

返回