[因果推断] Double Machine Learning-DML介绍(四)

一 Double Machine Learning——一种去偏方法

DML是一种处理基于观测数据进行因果建模的方法。

大家已知的是,观测数据是有偏的,即存在特征X既影响目标outcome Y,又影响Treatment T。那么在进行因果建模之前,我们需要进行去偏处理,使得Treatment Y独立于特征X,此时的观测数据近似相当于RCT数据,之后我们就可以使用因果模型进行CATE评估了。

HTE旨在量化Treatment对不同人群的差异影响,进而通过人群定向/数值策略的方式进行差异化处理。Double Machine Learning--DML是在研究HTE (Heterogenous Treatment Effect)过程中,通过残差估计矩(服从Neyman orthogonality),即使W(nuisance parameter)估计有偏,依旧可以得到无偏ATE估计的算法框架

构建模拟数据

在介绍DML之前,我们首先给定模拟数据——冰淇淋价格和销量之间的因果效应评估数据集。

该数据集中,特征X包括温度、成本和一周中的周几三个变量,Treatment T为价格,outcome Y为销售量。其中,T影响Y,X影响T和Y,即存在混淆。

探索冰淇淋销量和价格之间的关系,可以看到weekday是confounder,周末时价格和销量均更高。如果要得到准确的causal effect,需要矫正confounders带来的偏差。此数据集中包含的confounders有温度、周几、成本

我们使用观测数据进行训练,在RCT数据上进行模型评估。(一种正确而标准的因果建模评估流程

 

 通过可视化,我们可以很明显看到,在周末(weekday=1和7)的时候,价格比平常要高很多,即存在混淆。

 二 从线性回归说起

一种简单的去偏方法就是线性回归,我们拟合一个线性回归模型,然后固定其他变量不变,去估计平均因果效应(ATE)。

\tau是我们唯一需要关注的,因为\tau​ 是需要求的价格对销量的因果效应,其他变量我们并不关心,但是在线性模型中需要正确对待,否则得到的\tau​是错误估计。 

但特征X与Y的关系可能是非线性的,如温度temp。当温度升高时,人们可能都去沙滩玩耍,买冰淇淋吃,销量Y升高,但当温度过高时,人们可能只想呆在家,这时销量Y就下降了。

因此,我们需要利用一个线性回归的非常重要的特性:

假设现在有一个LR模型,以及特征集 X1 和特征集X2  . 我们可以通过以下两种方式来估计参数,而这两种方式估计出来的参数是相同的

三 DML训练过程

1. HTL无偏估计

直观角度上,这里对回归比较熟悉的朋友可以知道,线性回归是拟合Y在特征空间X的最佳投影(既误差最小化),所以残差是垂直样本空间X的,既最大限度消除了(独立)X的相关性!如下图所示。

 

2. 使用DML估计ATE 

具体到因果推断的例子上,我们只关心Treatment T 对 outcome Y的影响,因此我们可以首先使用X回归T,得到一个T的残差(实际T - 预测T),然后使用X回归Y,得到一个Y的残差(实际Y - 预测Y),最后使用T的残差回归Y的残差,估计的参数即我们想要的ATE。

于是乎,具体的DML方法也就出来了,其核心思想即分别用机器学习算法基于X预测T和Y,然后使用T的残差回归Y的残差:

 那么问题来了,为什么说DML能去偏呢?

 M_{t}它对Treatment实施了去偏。T的残差可以看作将X对T的作用从T中去除后剩下的量,此时T的残差独立于X。

M_{y} 的作用在于去除Y的方差,即将X引起的Y的方差从Y中去除。最后,我们再对残差建模lr,即得到ATE。

3. 使用DML估计CATE

同样地,我们首先基于X使用ML获得T的残差和Y的残差,之后使用lr拟合残差,不同的是,这次我们把X和T的交互项加进来,即

然后我们就可以计算CATE的值了: 

4. 直接预测反事实的Y

在处理非线性CATE时,另一种方案是我们将不再尝试估计CATE的线性近似。相反,我们将做出反事实的预测。 (这种方案在实际中使用也很多,但并没有严格的理论证明!)

5. 从线性到非线性

虽然DML可以去混淆,让我们可以只关注T对Y的影响。但是,在使用ML对T和Y残差化后,我们仍然使用的是线性模型。当价格在小范围内变化时,这种方法可能还适用。然而,通常的情况是,在价格比较低的时候,价格增加1元,需求量可能减少2个,而在价格比较高的时候,价格增加1元,需求量可能只减少1个。显然,这是一种非线性关系。

此时,我们就会想,难道我们就不能不用线性模型,而使用其他模型,如利用ML去学习非常复杂的非线性?答案是可以!

我们可以通过对目标函数进行转换,实现非线性建模

 那么我们在使用非线性模型时,学的到底是线性呢还是非线性呢?其实,在非线性CATE估计时,DML估计的是CATE的局部线性近似!(也就是导数)

举个例子,假设我们通过模型对一个顾客估计出CATE=2,意思是指我们在价格上减少一个单位,顾客买的量就会多出2个单位,但是我们不能据此就做出决策,在价格上减少5个单位,这样,我们就可以在减少的每个单位上都多获得销量上的2个单位,然而这样会赔死!因为当价格过低时,CATE可能就变成0.5了,即我们在价格上减少一个单位,顾客买的量只会多出0.5个单位!

因此在处理非线性CATE的时候,要格外注意不同Treatment下的CATE可能是不同的!

猜你喜欢

转载自blog.csdn.net/zwqjoy/article/details/124961881