【因果推断python】50_去偏/正交机器学习2

目录

Frisch-Waugh-Lovell on Steroids

CATE Estimation with Double-ML


Frisch-Waugh-Lovell on Steroids

双重/偏差 ML 其思想非常简单:在构建结果和治疗残差时使用 ML 模型:

Y_i-\hat{M}_y(X_i)=\tau\cdot(T_i-\hat{M}_t(X_i))+\epsilon

\hat{M}_y(X_i)是估计E[Y|X]\hat{M}_t(X_i)是估计E[T|X]

我们的想法是,ML 模型具有超强的灵活性,因此在估计 Y和 T残差,同时仍然保持 FWL 风格的正交化。这意味着我们不必对协变量 X与结果 Y或协变因素与治疗之间的关系作出任何参数假设,以获得正确的治疗效果。只要没有未观察到的混杂因素,我们就可以通过以下正交化程序计算ATE:

1.估计结果 Y 使用特征 X, 使用灵活的 ML 回归模型 M_{y}
2.估计治疗 T 利用特征 X,使用灵活的 ML 回归模型M_{t}
3.获取残差 \tilde{Y}=Y-M_y(X)\tilde{T}=T-M_t(X)
4. 将结果的残差与处理的残差进行回归 \tilde{Y}=\alpha+\tau\tilde{T}

\tau就是ATE,我们可以用 OLS 对其进行估计。ML 的强大之处在于灵活性。ML 功能强大,可以捕捉干扰关系中复杂的函数形式。但这种灵活性也带来了麻烦,因为这意味着我们现在必须考虑过度拟合的可能性。

Chernozhukov 等人(2016 年)对过度拟合如何造成问题进行了更深入、更严谨的解释,我强烈建议您去看看。但在这里,我将基于直觉进行解释。

要了解这个问题,假设您的 M_{y} 模型正在过度拟合。其结果是残差 Y 将小于其应有的值。这也意味着 M_{y} 所捕捉的不仅仅是 X 和 Y 之间的关系,其中还有一部分是 T 和 Y 之间的关系,如果 M_{y} 捕捉到了其中的一部分,那么残差回归将偏向于零。换句话说、 M_{y} 正在捕捉因果关系,而不是将其留给最终的残差回归。

现在来看看过度拟合 M 的问题,注意它对 T 方差的解释将超过它应该解释的方差。因此,T残差的方差会小于其应有的方差。如果处理的方差较小,最终估计值的方差就会很大。这就好比几乎每个人的待遇都是一样的。如果每个人的治疗水平都相同,那么就很难估计不同治疗水平下的情况。另外,当 T是 X 的确定性函数时,也会出现这种情况,这意味着违反了positivity 。

这些就是我们在使用 ML 模型时遇到的问题,但我们如何才能纠正这些问题呢?答案就在于我们所说的交叉预测和折外残差。

我们将把数据分成大小相等的 K 部分。然后,对于每个 K 部分,我们将在所有其他 K-1 个样本上估计 ML 模型,并得出 K 部分的残差。请注意,这些残差是通过折外预测得出的。我们在一部分数据上拟合模型,但在另一部分数据上进行预测和计算残差。

因此,即使模型拟合过度,也不会人为地将残差推向零。最后,我们综合所有 K 部分的预测结果,估计出最终的因果模型 \tilde{Y}=\alpha+\tau\tilde{T}.

好了,我们已经讲了很多,如果不举例说明,可能很难跟上。为了配合这些理论,让我们一步一步来实现双重/偏差 ML。在此过程中,我将借此机会解释每个步骤的作用。

首先,让我们使用 ML 模型来估计干扰关系。我们将使用一个 LGBM 模型,根据协变量温度、工作日和成本来预测价格。这些预测将是交叉预测,我们可以使用 sklearn 的 cross_val_predict 函数来获得。我还将平均 \hat{\mu}_{t} 以实现可视化。

from lightgbm import LGBMRegressor
from sklearn.model_selection import cross_val_predicty = "sales"
T = "price"
X = ["temp", "weekday", "cost"]debias_m = LGBMRegressor(max_depth=3)train_pred = train.assign(price_res =  train[T] -cross_val_predict(debias_m, train[X], train[T], cv=5)+ train[T].mean()) # add mu_t for visualization. 

请注意,我把 M_{t} 模型称为debias 模型。这是因为该模型在 Double/Debias ML 中扮演的角色是使治疗去偏。残差 \tilde{T}=T-M_t(X) 可以看作是治疗的一个版本,在这个版本中模型已经消除了 X 带来的所有混杂偏差。换句话说,\tilde{T} 与 X 是正交的。因为它已经被 X 解释过了

为了说明这一点,我们可以展示我们之前看到的同一幅图,但现在用价格残差代替了价格。还记得之前周末的价格更高吗?现在,这种偏差消失了。所有工作日的价格残差分布都是一样的。

np.random.seed(123)
sns.scatterplot(data=train_pred.sample(1000), x="price_res", y="sales", hue="weekday");

M_{t} 的作用是消除T 的偏差,但 M_{y} 又是什么呢?它的作用是去除 Y 的方差。直观地说,M_{y} 创造了一个outcome版本,在这个版本中,由 X 引起的所有方差都被解释掉了。这样一来,对 \tilde{Y} 的因果关系进行估计就变得更容易了。 由于噪音较小,因果关系变得更容易看清。

np.random.seed(123)
sns.scatterplot(data=train_pred.sample(1000), x="price_res", y="sales_res", hue="weekday");

现在,我们不难看出价格与销售额之间的负相关关系。

最后,为了估计这种因果关系,我们可以对残差进行回归。

final_model = smf.ols(formula='sales_res ~ price_res', data=train_pred).fit()
final_model.summary().tables[1]

我们可以看到,当我们使用销售额和价格的残差或正交化版本时,我们可以非常确信价格和销售额之间的关系是负的,这非常有意义。当我们提高价格时,冰淇淋的需求量就会下降。

但是,如果我们看一下价格与销量之间的未重构关系或原始关系,由于存在偏差,我们会发现两者之间存在正相关关系。这是因为,在预期高销售量的情况下,价格会提高。

final_model = smf.ols(formula='sales ~ price', data=train_pred).fit()
final_model.summary().tables[1]

CATE Estimation with Double-ML

到目前为止,我们已经了解了双重/偏差 ML 如何让我们专注于估计平均治疗效果 (ATE),但它也可用于估计治疗效果异质性或条件平均治疗效果 (CATE)。从本质上讲,我们现在说的因果参数\tau 
 会随单位协变量的变化而变化。

Y_i-M_y(X_i)=\tau(X_i)\cdot(T_i-M_t(X_i))+\epsilon_i
为了估计这一模型,我们将使用相同的价格和销售额残差,但现在我们将价格残差与其他协变量进行交互。然后,我们可以拟合一个线性 CATE 模型。

\tilde{Y}_{i}=\alpha+\beta_{1}\tilde{T}_{i}+\boldsymbol{\beta}_{2}\boldsymbol{X}_{​{\boldsymbol{i}}}\tilde{T}_{i}+\epsilon_{i}
估算出这样一个模型后,为了进行 CATE 预测,我们将使用随机测试集。由于这个最终模型是线性的,因此我们可以机械地计算 CATE, M是我们最终的模型。

\hat{\mu}(\partial Sales_i,X_i)=M(Price=1,X_i)-M(Price=0,X_i)

final_model_cate = smf.ols(formula='sales_res ~ price_res * (temp + C(weekday) + cost)', data=train_pred).fit()cate_test = test.assign(cate=final_model_cate.predict(test.assign(price_res=1))- final_model_cate.predict(test.assign(price_res=0)))

为了检验该模型在区分价格敏感度高的单位和价格敏感度低的单位方面的效果如何,我们将使用累积弹性曲线。

gain_curve_test = cumulative_gain(cate_test, "cate", y=y, t=T)
plt.plot(gain_curve_test, color="C0", label="Test")
plt.plot([0, 100], [0, elast(test, y, T)], linestyle="--", color="black", label="Baseline")
plt.legend();
plt.title("R-Learner");

从上面的曲线可以看出,使用最终线性模型的双重/偏差 ML 程序已经非常好了。但是,也许我们可以做得更好。事实上,这是一个非常通用的程序,我们可以把它理解为元学习器。聂和瓦格将其称为 R 学习器,以此来认可罗宾逊(1988 年)的研究成果,并强调残差化的作用。

这种概括来自于我们意识到双重/偏差 ML 程序定义了一个新的损失函数,我们可以任意最小化这个函数。接下来,我们将看到如何以一种与之前讨论目标变换方法时非常相似的方式来做到这一点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/32013.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Red Hat Ansible Automation Platform架构

目录 示例架构:一、Ansible Automation Platform 实现流程详解1. 自动化控制器 (Automation Controller)2. 自动化网格 (Automation Mesh)3. 私有自动化中心 (Private Automation Hub)4. Event-Driven Ansible 控制器5. 数据存储 (PostgreSQL 数据库) 二、实现流程1…

力扣SQL 即时食物配送 II min函数 嵌套查询

Problem: 1174. 即时食物配送 II 👨‍🏫 参考题解 Code -- 计算立即配送的订单百分比 select round (-- 计算订单日期与客户偏好配送日期相同的订单数量sum(case when order_date customer_pref_delivery_date then 1 else 0 end) * 100 /-- 计算总订…

基于深度学习的图像识别技术与应用是如何?

基于深度学习的图像识别技术与应用在当今社会中扮演着越来越重要的角色。以下是对该技术与应用的详细解析: 一、技术原理 深度学习是一种模拟人脑处理和解析数据的方式的技术和方法论。在图像识别领域,深度学习主要通过深度神经网络(如卷积…

CentOS7在2024.6.30停止维护后,可替代的Linux操作系统

背景 Linux的发行版本可以大体分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本,前者以著名的Redhat(RHEL)为代表,后者以Debian为代表。国内占有率最多的却是Centos,这是由…

最全信息收集工具集

吉祥学安全知识星球🔗除了包含技术干货:Java代码审计、web安全、应急响应等,还包含了安全中常见的售前护网案例、售前方案、ppt等,同时也有面向学生的网络安全面试、护网面试等。 所有的攻防、渗透第一步肯定是信息收集了&#xf…

CID引流电商助力3C产品销售腾飞的实践与思考

摘要:随着互联网技术的不断发展和普及,电商行业迎来了前所未有的发展机遇。其中,CID引流电商作为一种新兴的电商模式,为商家们提供了更加精准、高效的拓客之路。尤其在3C产品领域,CID引流电商更是助力其销售腾飞的重要…

云计算【第一阶段(18)】磁盘管理与文件系统

一、磁盘基础 磁盘(disk)是指利用磁记录技术存储数据的存储器。 磁盘是计算机主要的存储介质,可以存储大量的二进制数据,并且断电后也能保持数据不丢失。 早期计算机使用的磁盘是软磁盘(Floppy Disk,简称…

程序猿大战Python——面向对象——魔法方法

什么是魔法方法? 目标:了解什么是魔法方法? 魔法方法指的是:可以给Python类增加魔力的特殊方法。有两个特点: (1)总是被双下划线所包围; (2)在特殊时刻会被…

MURF3040CTR-ASEMI智能AI应用MURF3040CTR

编辑:ll MURF3040CTR-ASEMI智能AI应用MURF3040CTR 型号:MURF3040CTR 品牌:ASEMI 封装:TO-220F 恢复时间:35ns 最大平均正向电流(IF):30A 最大循环峰值反向电压(VR…

CSS详解

盒子模型&#xff08;box-sizing&#xff09; line-height与height CSS选择符和可继承属性 属性选择符&#xff1a; 示例&#xff1a;a[target"_blank"] { text-decoration: none; }&#xff08;选择所有target"_blank"的<a>元素&#xff09; /* 选…

嵌入式Linux驱动开研发流程详细解析

大家好,今天主要给大家分享一下,嵌入式linux中重要的内容详解。 一、驱动概念 驱动与底层硬件直接打交道,充当了硬件与应用软件中间的桥梁。 具体任务 读写设备寄存器(实现控制的方式) 完成设备的轮询、中断处理、DMA通信(CPU与外设通信的方式) 进行物理内存向虚拟内存…

[已解决]ImportError: DLL load failed while importing win32api: 找不到指定的程序。

使用pip install pywin32302安装后import找不到win32api 失败尝试 上网找别人的解决方案&#xff0c;大部分解决方案都是通过复制下面两个dll文件到 下面这个文件夹&#xff0c;并且复制到C:\Windows\System32&#xff0c;从而解决问题&#xff0c;但是我没能成功。 解决方…

深度神经网络——什么是小样本学习?

引言 小样本学习是指使用极少量的训练数据来开发人工智能模型的各种算法和技术。小样本学习致力于让人工智能模型在接触相对较少的训练实例后识别和分类新数据。小样本训练与训练机器学习模型的传统方法形成鲜明对比&#xff0c;传统方法通常使用大量训练数据。小样本学习是 主…

【IC验证】UVM实验lab03

1. TLM端口的创建、例化与使用 创建&#xff1a; uvm_get_blocking_port #(fmt_trans) mon_bp_port; 例化&#xff1a; function new(string name "mcdf_refmod", uvm_component parent);super.new(name, parent);fmt_trans new("fmt_trans", this);…

HMI之王 STM32H7S7

还要什么自行车啊 感谢原厂精彩培训和慷慨赠板&#xff01; 以下列示几个关注的点&#xff0c;计划做成系列&#xff0c;随缘更新&#xff0c;尽量填。 0&#xff09;1024*600分辨率配5寸触屏&#xff1b;Type-C with USB 2.0 HS interface, dual‑role‑power 终于不用2根线…

为何人类需重复学习与记忆?人工智能与人类认知机制的融合 —— 生物体AI

零、 AI 与人的认知背景知识 人作为一种生物智能体&#xff0c;学习和记忆的过程往往需要重复与实践。这是因为人的大脑并非一次性就能完美地吸收和储存信息&#xff0c;而是通过反复的认知加工&#xff0c;将短期记忆转化为长期记忆&#xff0c;并通过深度理解、归纳总结以及…

excel数据透视

Excel中&#xff0c;数据透视图&#xff08;PivotChart&#xff09;和数据透视表&#xff08;PivotTable&#xff09;是两个紧密相关的工具&#xff0c;用于分析数据。数据透视表是数据透视图的数据源&#xff0c;也就是说&#xff0c;数据透视图是基于数据透视表中的数据创建的…

区块链媒体发布推广秘籍大揭秘-华媒舍

区块链技术迅猛发展&#xff0c;成为全球瞩目的热门领域。随之而来的是区块链媒体的兴起&#xff0c;成为传播和推广区块链知识、项目和应用的重要平台。本文将揭示区块链媒体发布推广的秘籍&#xff0c;为读者深入了解该领域提供详尽科普介绍。 一、什么是区块链媒体&#xff…

【活动】TSRC反爬虫专项正式启动!

活动时间 即日起 ~ 2024年7月5日 18:00 测试范围&#xff1a;微信公众号、腾讯新闻等 测试域名&#xff1a;mp.weixin.qq.com 微信公众号相关接口 1. 微信公众号文章列表 2. 历史文章 3. 文章详细内容 注&#xff1a;详情报名后公布。反爬虫专项将不定期上线新业务&#xf…

亚马逊测评:从底层硬件到软件控制,全方位打造安全测评环境

在竞争激烈的测评市场中&#xff0c;构建一个稳定高效的模拟环境体系是赢得竞争的关键所在。然而&#xff0c;现有的虚拟环境方案如虚拟机、模拟机、GCS系统、云手机以及VPS服务等不仅费用昂贵&#xff0c;而且面临着在风控严密的平台上如亚马逊难以逃避检测的问题&#xff0c;…