探秘双重机器学习:因果推断新视角,揭开模型参数偏误之谜!

本文介绍了双重机器学习在因果推断中的作用,强调了其在解决传统模型维度问题和提高参数估计准确性方面的优势,通过半参数模型示例展示了偏差的来源及内曼正交和交叉拟合的应用。同时,提到了在Stata中使用ddml命令的实践步骤和一篇实证应用论文的推荐。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天给大家分享的内容是双重机器学习知识,双重机器学习是因果推断领域发展起来的较新的研究内容,实现了机器学习和因果推断领域的结合,我们知道机器学习更加注重模型的预测,这在一定程度上会导致参数估计的偏误,双重机器学习在一定程度上纠正了这种偏误,从而实现了机器学习在因果推断领域的研究,对于双重机器学习的知识,我们主要借助于以下两篇论文:Double/debiased machine learning for treatment and structural parameters和 ddml: Double/debiased machine learning in Stata,其中第一篇文章是双重机器学习的理论介绍文章,该文章理论知识深厚,数学表达式丰富;第二篇文章是双重机器学习结合了stacking思想在stata中的实现,包含重要的理论知识和代码演示。

因果推断的开始和发展是从传统的计量模型中起步,既然传统的计量模型也可以进行因果推断,那么我们为什么还要发展出机器学习的方法来辅助因果推断呢?学术的发展都是讲究一定的效用和意义的,如果仅仅是换了种方法来实现同样的效果,那么该方法的认可度并不会太高,双重机器学习能够在学术界得到一定程度的认可,那么说明该方法相对于传统方法来说,是具备一定的突破性。

因此我们首先讲一讲双重机器学习在传统模型上面的突破,研究表明传统非参数模型会陷入维度诅咒,也就是说传统非参数模型在高纬数据上得到一个较差的估计量,而机器学习相关的算法是基于数据驱动,因此在高纬和非线性数据关系捕捉性能表现较好,因此使用机器学习的方法可以克服传统模型在维度上的诅咒,在这里我们提一下,计量经济学中的高维和机器学习中的高维的差别,首先,高纬是拥有大量的特征和变量,这个大量是多大我们不知道,但是在计量领域认为数据的维度大于数据的个数就称为高维数据,在机器学习的角度,是对数据量会有一定的要求,因此,仅仅从数据的特征数量来说是很少超过数据量的,高纬的情形不是很普遍,同时我们将特征与特征之间的关系或者高次方项,我们统一考虑为交互关系或者非线形关系,机器学习关注预测,因此在实际的建模过程中我们并不会特意构造类似的特征数据做为新的特征,但是传统的计量模型中注重模型的解释,因此,特征与特征的交互,特征的高次方、对数关系就显得尤为重要,我们在实际回归模型构建过程中经常会人工手动构建出一些非线形的特征来考虑对变量的影响,因此在论文中会出现特征随着数据量的增大而不断扩张,从而出现在传统模型中存在的维度诅咒,随着数据的不断增大,数据之间的关系也变得复杂,尽管原始的特征没有变化,但是由于数据之间的复杂关系,因此在传统模型中就必须考虑到特征之间的非线形关系等,例如:交互项、高次方等,然而机器学习在处理这些问题具有一定的优势。

OK,我们已经解决了我们提出的第一个问题,使用机器学习来进行建模不就可以了吗?如果是这么简单就好了,第二个问题出现了,既然这么好,那么为什么机器学习出现之后,传统经济模型在因果推断领域生生不息,大家可以去了解该方面的文章,因果推断还是传统模型居多,说明什么?机器学习在因果推断领域会有一定问题,当然这一方面我还没有过多的探究,其中一个方面的话,我个人认为是“黑盒理论”,机器学习缺乏可解释性,尤其是在经济领域,在一个复杂的问题研究,可能也需要较为复杂的模型来模拟现实情况才可能得到较为准确的结论,因此,集成模型等复杂模型等使用可能更为普遍,但是确定也十分明显,模型的解释性缺乏,只知道结果,不知道如何产生。第二个方面的话,就想文章中说到的机器学习来研究经济问题是存在偏误的,因果推断注重解释,因此在有限数据的情况下,模型的偏误越小越好,但是机器学习追求泛化能力,因此会要求牺牲训练数据的准确性,来实现泛化能力,如果将机器学习直接使用到参数估计,会参数较大的偏差,并且随着数据量的增大,这个偏差会不断增大的,后续会有公式推导。因此,作者提出了双重机器学习的方法来降低这个偏差,最终得到参数的一致估计。

我们先以半参数模型为例来讲述直接使用机器学习的方法会产生偏差的原理,经典的半参数模型如下:

其中D是我们的政策或者实验效应变量,\theta_{0}代表D的参数,也就是我们要估计的变量,g(x)代表我们要考虑的一系列控制变量,用非参数的形式表示,U是残差。我们可以构建一个机器学习模型D\hat{\theta_{0}}+\hat{g_{0}(x)} 与目标变量Y进行回归可以得到我们的估计量\theta,得到下面公式:

我们将Y_{i}带入,同时乘以\sqrt{n},可以得到下面结果:

 

 显然右边第一部分公式服从正态分布,均值为0,右边第二部分公式为我们估计的量与真实值之间的差距,即偏差g_{0}(x)-\hat{g_{0}(x)},收敛速度为n^{-\varphi g}\sqrt{n} \rightarrow \propto,大家应该可以理解,D是一个常数,因此收敛速度取决于g_{0}(x)-\hat{g_{0}(x)},我们假设收敛速度为n^{-\varphi g}\varphi g<1/2,因此整个表达式是趋近\propto,换句话说,随着样本量的不断增大,我们估计的参数\hat{\theta_{0}}由于偏差的存在,会越来越偏离我们的真实值。因此作者引入了内曼正交和交叉拟合较好的解决了这个问题,从而使得我们能够得到一致的估计量,引入内曼正交之后,模型变成了

 我们求解得到估计量如下:

 和上面一样,通过带入即可得到如下分解:

 我们可以得到分解出来得到的a仍然是正态分布,均值为0,对于b就是我们得到的偏差项,主要有两部分组成,分别是V_{i}=\hat{m_{0}(x)}-m_{0}(x)g_{0}(x)-\hat{g_{0}(x)},在使用样本分割的情况下,使用辅助样本的情况下,E(V|X)=0,同时根据切比雪夫不等式,得到

因此根据上面的条件我们分解得到的b项会以概率趋近于0, 因此在对样本的进行分割的前提下,使用辅助样本来进行机器学习估计,使用主样本来进行参数估计,我们将会使得残差逐渐减小最终消失,从而得到一致的估计量,这里特别强调了一些要使用样本分割来进行参数估计和机器学习估计,因为如果说使用全样本来进行机器学习和参数估计的话,将不会得到一致的估计并且会产生较大的偏差,在上面公式中的呈现就是U和V存在相关,可能不一定满足均值为0的正态分布,但是如果不使用全样本进行估计,会导致一定效率损失,因此,作者提出的方法是使用交叉拟合的方法,对样本进行多折划分,使用其中的一部分得到机器学习估计量,剩余的样本得到参数估计,对不同选择下的参数估计求均值或者中文数得到最终的估计量。

对于上面辅助模型的构建,作者采用的是内曼正交的思想,具体关于内曼正交相关的知识作者在论文中有所呈现,大家感兴趣可以自行下载阅读,核心的作用就是,第一阶段的估计量的偏差不会对第二阶段估计量产生较大影响,我们对于参数\theta的估计可以通过分数函数求期望得到,在传统模型下得到的分数函数为\varphi (x;\theta ;\beta )=(Y-D\theta -g(x))D,对分数函数的期望求倒数得:

大家可以看到分数函数的一阶倒数不等于0,说明什么\theta的估计对第一阶段的机器学习的估计量很明感,g_{0}(x) 的微小变化也会引起\theta估计的变化。我们引入内曼正交之后,分数函数变成了:\varphi (x;\theta ;\eta )=(Y-D\theta -g(x))(D-m(x)),\eta =(m,g)分数函数期望的一阶导数变成了

也就是说机器学习g估计量误差的微小变化不会影响到最终参数的估计,参数的估计量保持稳定,第一阶段机器学习的估计偏差不会影响到第二阶段OLS参数估计,从而导致第二阶段参数的一致性。以上就是Double/debiased machine learning for treatment and structural parameters这篇论文相关的核心思想和理论,本来是想给大家结合第二篇文章进行一个讲解,突然发现也没有什么好讲的了,第二篇文章侧重于双重机器学习思想的实际应用,说明了算法的实际应用流程,并在stata中提供了命令,大家可以查看,我们就说一些比较重要的吧,stata中使用ddml命令需要借助python环境,因为很多机器学习模型都是使用python中scikit-learn中的模型,因此需要安装python和scikit-learn包,大家可以自行安装,这一块可以参考网上资料,安装完成之后在stata中引入python环境即可使用,步骤如下:

输入python search 获取python安装目录,使用python set exec 路径引入python环境,我接着按照论文中给出的部分线形模型使用stacking来进行操作,如果说大家中途有什么其他的问题基本就是包文件没有安装或者版本不适配等。

结果如下: 

最后你给大家推荐一篇关于双重机器学习实证应用等论文, 网络基础设施、包容性绿色增长与地区差距———基于双重机器学习的因果推断这一篇论文是发表在数量经济技术经济研究上面2023年的文章,还算是比较新的,大家可以借鉴学习,如果说不想去知网下载,可以关注我的公众号“明天科技屋”,回复数字关键词“0005”即可获得,上面的两篇文章也会一起发送!希望大家多多关注,并给公众号文章点点赞👍!

【干货书】《因果推理导论-机器学习角度》,132页pdf 有几个主要的主题贯穿全书。这些主题主要是对两个不同类别的比较。当你阅读的时候,很重要的一点是你要明白书的不同部分适合什么类别,不适合什么类别。 统计与因果。即使有无限多的数据,我们有时也无法计算一些因果量。相比之下,很多统计是关于在有限样本中解决不确定性的。当给定无限数据时,没有不确定性。然而,关联,一个统计概念,不是因果关系。在因果推理方面还有更多的工作要做,即使在开始使用无限数据之后也是如此。这是激发因果推理的主要区别。我们在这一章已经做了这样的区分,并将在整本书中继续做这样的区分。 识别与评估。因果效应的识别是因果推论所独有的。这是一个有待解决的问题,即使我们有无限的数据。然而,因果推理也与传统统计和机器学习共享估计。我们将主要从识别因果效应(在第2章中,4和6)之前估计因果效应(第7章)。例外是2.5节和节4.6.2,我们进行完整的例子估计给你的整个过程是什么样子。 介入与观察。如果我们能进行干预/实验,因果效应的识别就相对容易了。这很简单,因为我们可以采取我们想要衡量因果效应的行动,并简单地衡量我们采取行动后的效果。观测数据变得更加复杂,因为数据中几乎总是引入混杂。 假设。将会有一个很大的焦点是我们用什么假设来得到我们得到的结果。每个假设都有自己的框来帮助人们注意到它。清晰的假设应该使我们很容易看到对给定的因果分析或因果模型的批评。他们希望,清晰地提出假设将导致对因果关系的更清晰的讨论。
### Stata 中实现双重机器学习模型的方法 在Stata中实现双重机器学习(DML),可以通过调用特定命令来完成。对于中介效应分析,在Stata中的处理方式不同于R语言,但依然能够通过一些高级统计工具包来进行类似的计算。 为了执行DML框架下的因果推断,可以使用`dml`命令集,该集合由第三方开发者维护并提供了一系列用于实施不同类型的DML算法的功能[^1]。下面给出一段简单的例子展示如何安装必要的软件包以及应用基本的DML流程: #### 安装所需程序包 首先确保已连接到互联网,并运行如下指令以下载和安装所需的库: ```stata ssc install dml, replace ``` #### 基于Stata 的 DML 模型实例代码 这里构建了一个假设性的数据集,并展示了怎样运用DML技术评估治疗变量\(T\)对结果变量\(Y\)的影响,同时考虑协变量矩阵\(\mathbf{X}\)的作用。 ```stata * 创建模拟数据集 clear all set obs 1000 gen T = rbinomial(1,.5) matrix C=(.3,-.2\.7,.9) drawnorm X1 X2 , corr(C) * 设定潜在的结果机制 gen Y=invnormal(uniform())+.8*T-.4*X1+.6*X2+rnormal() * 应用双重/去噪回归方法 (Double/debiased ML estimator) dml y T, controls(X1 X2) model(plogit) cv(5) seed(12345) estat effects ``` 上述脚本创建了一组二元处理指示符\(T\)、两个连续特征\(X_1,X_2\)及其对应的响应值\(Y\)。接着采用逻辑回归作为初步预测器(`model(plogit)`), 并指定交叉验证折叠数为五次(cv(5)) 来拟合最终的目标参数估计量。 请注意,实际操作时应根据具体研究背景调整输入参数的选择,比如改变使用的机器学习模型类型或其他超参数设置等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不一样的邓先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值