事件/变量之间的关系,最主要的有相关性和因果性。
cause
在常用的机器学习算法中,关注的是特征之间的相关性,而无法去识别特征之间的因果性,而很多时候在做决策与判断的时候,我们需要的是因果性。
举个例子,我们会发现在学校中,近视的同学成绩更好。近视和成绩好之间有强相关性,但显然近视不是成绩好的原因。而我们想要提升学生成绩,自然需要找到因,否则就会通过给学生戴眼镜的方式来提高成绩。
上面的例子是很明显地可以区分出相关与因果的,但是也有很多难以区分的,如经常喝葡萄酒的人寿命更长,是因为葡萄酒确实能延长寿命,还是因为能经常喝的人通常更富有,享有更好的医疗条件。
很多时候,我们通过统计学方法或者机器学习算法得到的特征之间的相关性,就足以为我们的验证、决策提供指导,比如,我们通过数据发现,用户曝光的图片越多,留存越高,我们不需要知道这之间是否有复杂的因果关系,只需要通过简单的ABtest来检验更多的曝光是否有效果即可。
是否还有必要去识别因果性呢?答案是有的。
很多时候,我们需要确切地知道因果性,且无法通过ABtest简单地判断,比如:
因此,面对这种特殊的问题,我们需要从已有的数据中推断出变量间的因果性。
前面说了因果性和相关性的区别、以及识别因果性的必要性,那么因果推断究竟是什么?
因果推断的核心思想在于反事实推理counterfactual reasoning
,即在我们观测到X
和Y
的情况下,推理如果当时没有做X
,Y'
是什么。
因果推断的目的是要判断因果性,即计算因果效应(有无X
的情况下Y
值的变化量)。在进行反事实推理后,可得出因果效应e = |Y - Y'|
,进而判断因果性。
实际上,对于一个对象,我们永远只能观察到Y
和Y'
的其中一个,因果推断所做的就是从已有数据中估计因果效应,所以我认为因果推断的本质是,对因果效应的估计。
上一部分对因果推断做了简单的介绍,本部分主要介绍一些因果推断的方法,如下图所示——
以推荐算法为例,判断推荐算法是否有效,ABTest通过将用户随机分为两组,分别应用不同的算法,通过判断两组用户点击率的差异来估计因果效应。通过随机分组,排除了混淆变量的影响。
A/B Test实际上是判断因果性的很有效的方法,但有时候成本过高无法采用,如这里的推荐算法——
针对上述问题,另一种随机实验方法是强化学习中的多臂老虎机,实际上是对explore
和exploit
的平衡。
explore
,随机选择一个动作,在上面的问题中是随机选择一个算法exploit
,选择收益最高的动作,在上面的问题中是选择当前效果最好的算法通过某种规则(e-greedy
等)重复上述过程,优点是可以同时测试多种算法,并且每个用户都能使用到最好的算法,减少流失可能性。缺点是效果难以评估,也很难让用户按照我们的想法行动。
理想的实验需要:随机分配(分组)、人为干预(施加不同的treatment)、结果比较,
自然实验实际上是一种观察性研究,满足上述三个条件中的两个,是指不加干预地、实验对象**“自然”**地分为若干组,对实验对象的结果进行观察比较。
显然自然实验法的关键在于,实验对象是否能“自然”/随机地分组。比如,将是否民主将国家分为两组,探究制度与国家对外战争的关系。但是在这里,是否民主不是随机的分给各个国家,所以无法满足自然实验所需的随机分配原则。
断点回归是自然实验中的一种观察方法,简单理解就是在回归过程中,观察在临界点处是否出现断层/断点。
举一个简单的例子,假设现在有一个产品,收集500个金币后就可以得到一个勋章,现在要判断有无勋章对用户在线时长的影响。
断点回归法观察金币在500附近的用户,如497到502,观察【接近500但小于500(无勋章)】与【接近500但大于500(有勋章)】的用户在线时长是否有显著区别,若有,说明有勋章很可能会增加用户的在线时长。
对于要判断因果关系的两个变量间,如果存在其他混淆变量,在计量经济学中采用工具变量的方法解决。
以下述关系为例,要判断对APP1的访问,是否会导致对APP2的点击。实际上由于APP1和APP2之间的需求关系,误差项与解释变量相关,即计量经济学中的内生性。
引入工具变量的目的是为了让误差项与解释变量不相关。具体地,通过找到一个变量,满足与解释变量相关且与误差项无关,那在引入这一变量之后,解释变量变化的部分就与误差项无关。
同样是上面的例子,假设某一天有个活动,下载APP1的人有奖励,这个活动与解释变量相关,但不会影响到APP2的需求,那根据多出来的APP1访问量与多出来的APP2点击率就不再受到需求关系的影响,就可以判断对APP1的访问,是否会导致对APP2的点击。
分层的核心思想是控制条件变量,一般步骤如下:
这种方式有点类似要找到相似的用户,当条件变量很多的时候,这种方法很难实现,很难找到很多条件变量都相同的用户,即使找到也会使得分组偏小。
当条件变量很多的时候,可以考虑使用倾向得分匹配。
以推荐算法为例,当条件变量很多的时候,通过逻辑回归等方法对这些变量进行训练,并计算出一个倾向得分,在这里是用户被施加新算法的概率。因此倾向得分匹配的一般步骤如下:
关于因果推断,上面介绍了三类方法——
以上是关于因果推断的入门知识,内容来自网上的博客与PPT,如有错误,请大佬指正~