【Python实战因果推断】7_元学习器2

news2024/11/25 18:42:33

目录

X-Learner


X-Learner

X-learner 在解释上要比前一个学习器复杂得多,但其实现却非常简单,所以如果你一开始不理解,也不用担心。X 学习器有两个阶段和一个倾向得分模型。第一个阶段与 T 学习器相同。首先,将样本分为治疗组和非治疗组,并为每组拟合一个模型:

\hat{\mu}_{0}(X)\approx E[Y|T=0,X]\\\hat{\mu}_{1}(X)\approx E[Y|T=1,X]

现在,事情开始有了转机。在第二阶段,您首先需要使用之前拟合的模型来估算缺失的潜在结果:

\hat{\tau}(X,T=0)=\hat{\mu}_{1}(X,T=0)-Y_{T=0}\\\hat{\tau}(X,T=1)=Y_{T=1}-\hat{\mu}_{0}(X,T=1)

在之前的示例数据中,\hat{\tau}(X,T=0)\hat{\tau}(X,T=1) 是第二幅图中的数据点。在下图中,我再现了同样的数据,以及预测模型 {\mu(X)}_{\tau0} 和 {\mu(X)}_{\tau1} 。请注意,即使您有更多的控制数据,\hat{\tau}(X,T=0) 还是错误的。这是因为它是使用 \widehat{\mu_{1}} 建立的,而\widehat{\mu_{1}} 是在非常小的样本中拟合的。因此,由于 \hat{\tau}(X,T=0) 是错误的,{\mu(X)}_{\tau0} 也会产生误导。相反,{\mu(X)}_{\tau1} 很可能是正确的,因为 \hat{\tau}(X,T=1) 也是正确的,因为它是使用 \widehat{\mu_{0}} 模型生成的:

总之,你有一个模型是错误的,因为你错误地估算了干预效果,而另一个模型是正确的,因为你正确地估算了这些值。现在,您需要一种方法将两者结合起来,使正确的模型具有更大的权重。为此,您可以使用倾向得分模型。使用该模型,您可以将两个第二阶段模型组合如下\widehat{\tau(x)}=\hat{\mu}(X)_{\tau0}\hat{e}(x)+\hat{\mu}(X)_{\tau1}\big(1-\hat{e}(x)\big)

在本例中,由于处理的单位很少,\hat{e}(x) 非常小,因此错误的 CATE 模型 \hat{\mu}(X)_{\tau0} 的权重非常小。 相反,1 - \hat{e}(x) 接近 1,因此正确的 CATE 模型 \hat{\mu}(X)_{\tau1} 的权重会更大。更一般地说,这种使用倾向得分的加权平均值将有利于从使用更多数据训练的  \widehat{\mu_{t}} 模型中得到的干预效果估计值。

下图显示了 X 学习器给出的 CATE 估计值,以及分配给每个数据点的权重。请注意,它实际上是如何抛弃错误数据的:

可以看出,与 T-learner 相比,X-learner 在纠正非线性估计的错误 CATE 方面做得更好。一般来说,当干预组的规模远大于其他组时,X-learner 的表现会更好。

我知道这可能需要消化很多东西,但希望您在查看代码时会更清楚。下图 总结了这个学习器。

你还可以试试领域适应学习器。它是 X 学习器,但使用倾向得分模型来估计 \hat{\mu}_{t}(X),权重设置为 1/\hat{P}(T=t)

让我们看看如何编写这些代码。这里是第一阶段,与 T-learner 完全相同。如果计划使用倾向得分进行领域适应,则需要对训练样本进行 1/{P}(T=t) 的重新加权,因此现在也是拟合倾向得分的时候:

 from sklearn.linear_model import LogisticRegression
 from lightgbm import LGBMRegressor
 # propensity score model
 ps_model = LogisticRegression(penalty='none')
 ps_model.fit(train[X], train[T])
 
 # first stage models
 train_t0 = train.query(f"{T}==0")
 train_t1 = train.query(f"{T}==1")
 m0 = LGBMRegressor()
 m1 = LGBMRegressor()
 np.random.seed(123)
 m0.fit(train_t0[X], train_t0[y],
 sample_weight=1/ps_model.predict_proba(train_t0[X])[:, 0])
 m1.fit(train_t1[X], train_t1[y],
 sample_weight=1/ps_model.predict_proba(train_t1[X])[:, 1]);

接下来,您需要预测治疗效果,并对这些预测效果拟合第二阶段的模型:

 # second stage
 tau_hat_0 = m1.predict(train_t0[X]) - train_t0[y]
 tau_hat_1 = train_t1[y] - m0.predict(train_t1[X])
 m_tau_0 = LGBMRegressor()
 m_tau_1 = LGBMRegressor()
 np.random.seed(123)
 m_tau_0.fit(train_t0[X], tau_hat_0)
 m_tau_1.fit(train_t1[X], tau_hat_1);

最后,一旦你拥有了所有这些,你就可以使用倾向得分模型来结合来自第二阶段模型的预测来获得CATE。所有这些都可以在测试集上进行估计:

 # estimate the CATE
 ps_test = ps_model.predict_proba(test[X])[:, 1]
 x_cate_test = test.assign(
 cate=(ps_test*m_tau_0.predict(test[X]) +
 (1-ps_test)*m_tau_1.predict(test[X])
 )
 )

让我们看看 X-learner 在累积收益方面的表现如何。在这组数据中,干预和对照的大小几乎相同,所以不要指望会有巨大的差异。X-learner 试图纠正的问题在这里可能并不明显:

不出所料,X-learner 的性能与 T-learner 相差不大。事实上,从曲线下的面积来看,X-learner 略逊于 T-learner。请记住,这些学习器的质量取决于具体情况。就像我前面说的,在这个特定的数据中,干预和对照的样本量都足够大,因此不会遇到 X 学习器试图解决的那种问题。这或许可以解释为什么这两种模型的表现相似。

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

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

相关文章

3.js - 反射率(reflectivity) 、折射率(ior)

没啥太大的感觉 反射率 reflectivity 概念 反射率:指的是,材质表面反射光线的能力反射率,用于控制材质对环境光,或光源的反射程度反射率越高,材质表面反射的光线越多,看起来就越光亮使用 适用于&#xff0…

react+customize-cra使用less+less-loader时,可能遇到的问题及解决办法

目录 1、先附上各依赖版本和config-overrides.js配置代码,按这个版本和配置就没问题 2、问题(注意:问题顺序没有先后之分哦) 2.1、TypeError: Cannot read property tap of undefined 2.2、No module factory available for d…

算法金 | 决策树、随机森林、bagging、boosting、Adaboost、GBDT、XGBoost 算法大全

大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 决策树是一种简单直观的机器学习算法,它广泛应用于分类和回归问题中。它的核心思想是将复杂的决策过程分解成一系列简单的决…

【windows|011】TCP/IP5层模型常见协议及应用总结大全

🍁博主简介: 🏅云计算领域优质创作者 🏅2022年CSDN新星计划python赛道第一名 🏅2022年CSDN原力计划优质作者 ​ 🏅阿里云ACE认证高级工程师 ​ 🏅阿里云开发者社区专家博主 💊交流社…

【计算机毕业设计】077停车场微信小程序

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

qmt量化交易策略小白学习笔记第52期【qmt编程之商品期货数据】

qmt编程之获取商品期货数据 qmt更加详细的教程方法,会持续慢慢梳理。 也可找寻博主的历史文章,搜索关键词查看解决方案 ! 主力合约生成规则 每个品种只有一个主连合约。主连合约于下一个交易日进行指向切换,切换前主连合约不变…

2024全新【大模型学习路径导航】从入门到精通的全面规划

引言 随着人工智能技术的迅猛发展,大模型成为了引领技术变革的关键力量。无论你是对大模型领域感兴趣的初学者,还是希望深化理解并应用大模型的开发者,这份精心策划的学习路径将为你提供从零基础到精通的全面指导。 第一阶段:基…

堆排序思想分享

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

鸿蒙NEXT

[中国,东莞,2024年6月24日] 华为开发者大会(HDC)正式开幕,带来全新的 HarmonyOS NEXT、盘古大模型5.0等最创新成果,持续为消费者和开发者带来创新体验。 HarmonyOS NEXT 鸿蒙生态 星河璀璨 鸿蒙生态设备数…

boost asio异步服务器(4)处理粘包

粘包的产生 当客户端发送多个数据包给服务器时,服务器底层的tcp接收缓冲区收到的数据为粘连在一起的。这种情况的产生通常是服务器端处理数据的速率不如客户端的发送速率的情况。比如:客户端1s内连续发送了两个hello world!,服务器过了2s才接…

【scau大数据原理】期末复习——堂测题

一、集群安装知识 启动集群的命令start-all.sh位于 Hadoop安装目录的sbin文件夹 目录下。 bin文件夹下包含常见的Hadoop,yarn命令;sbin命令下包含集群的启动、停止命令。 启动集群的命令start-all.sh包含 同时启动start-dfs.sh和start-yarn.sh 功能。…

大模型ReAct:思考与工具协同完成复杂任务推理

ReAct: Synergizing Reasoning and Acting in Language Models Github:https://github.com/ysymyth/ReAct 一、动机 人类的认知通常具备一定的自我调节(self-regulation)和策略制定(strategization)的能力&#xff0…

ONLYOFFICE8.1版本桌面编辑器——功能测评

一、编辑DOCX 相信大家都有写word文档的经历,不知道大家是不是跟我一样,感觉做一个word不难,但想做好一个word却很麻烦,功能太多,看的人眼花缭乱,有时候一个功能要找很久,甚至有的功能用一辈子都…

mybatis核心配置介绍

mybatis核心配置 【mybatis全局配置介绍】 ​ mybatis-config.xml,是MyBatis的全局配置文件,包含全局配置信息,如数据库连接参数、插件等。整个框架中只需要一个即可。 1、mybatis全局配置文件是mybatis框架的核心配置,整个框架…

Unity | Shader基础知识(第十五集:透明效果)

目录 一、前言 二、素材准备 三、准备基础代码 四、准备基础场景 五、SurfaceOutput结构体 六、透明度 七、渲染顺序 八、选错的后果 九、Tags之渲染顺序 十、Cull(正面和反面渲染) 十一、代码汇总 十二、作者的碎碎念 一、前言 因为shader…

python-斐波那契数列

[题目描述] 斐波那契数列是指这样的数列:数列的第一个和第二个数都为 1,接下来每个数都等于前面 2个数之和。 给出一个正整数 a,要求斐波那契数列中第 a 个数是多少。输入: 第 1 行是测试数据的组数 n,后面跟着 n 行输…

UnityShader SDF有向距离场简单实现

UnityShader SDF有向距离场简单实现 前言项目场景布置连连看画一个圆复制一个圆计算修改shader参数 鸣谢 前言 突然看到B站的一个教程,还不错,记录一下 项目 场景布置 使用ASE连连看,所以先要导入Amplify Shader Editor 连连看 画一个…

有人问周鸿祎: 学历不重要,为什么360只要985和211?

关注、星标公众号,直达精彩内容 有人问周鸿祎:你说学历不重要,为什么360招聘的人才只要985和211?他说这个事情,我专门问了我们的人力资源,我们的干品分为校园招聘和社会招聘 校园招聘的话会看文凭 社会招聘的话&#x…

性能优化:Java垃圾回收机制深度解析 - 让你的应用飞起来!

文章目录 一、什么是垃圾回收二、Java 内存区域划分三、垃圾回收算法1. 标记-清除(Mark-Sweep)算法2. 复制(Copying)算法3. 标记-整理(Mark-Compact)算法4. 分代收集(Generational Collecting&a…

光储充一体化解决方案

慧哥充电桩开源平台V2.5.2_ 【源码下载】 https://liwenhui.blog.csdn.net/article/details/134773779?spm1001.2014.3001.5502 本文从光储充的原理以及总体系统等角度,全方位介绍光储充一体化解决方案实例。 一、典型应用场景 针对整县区域光伏项目,在…