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

目录

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 LogisticRegressionfrom lightgbm import LGBMRegressor# propensity score modelps_model = LogisticRegression(penalty='none')ps_model.fit(train[X], train[T])# first stage modelstrain_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 stagetau_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 CATEps_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.mzph.cn/bicheng/37412.shtml

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

相关文章

基于springboot实现家政服务平台管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现家政服务平台系统演示 摘要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本家政服务平台就是在这样的大环境下诞生,其可以帮助管理…

LeetCode刷题之HOT100之数组中的第K个最大元素

2024 6/29 今天天气很好啊,想爬山,奈何下午还有最后的一个汇报。做个题先 1、题目描述 2、算法分析 看到这个题我想到的就是: public int findKthLargest(int[] nums, int k) {Arrays.sort(nums);return nums[nums.length - k ];}哈哈,我提…

抖音矩阵云混剪系统源码 短视频矩阵营销系统V2(全开源版)

>>>系统简述: 抖音阵营销系统多平台多账号一站式管理,一键发布作品。智能标题,关键词优化,排名查询,混剪生成原创视频,账号分组,意向客户自动采集,智能回复,多…

模型预测控制:线性MPC

模型预测控制:线性MPC 模型预测控制(Model Predictive Control, MPC)是一种广泛应用于工业过程控制和自动驾驶等领域的先进控制技术。MPC通过在线解决优化问题来计算控制输入,从而实现系统的最优控制。本文将介绍线性MPC的系统模…

融资担保行业数字化转型探索与实践

融资担保行业数字化转型探索与实践 随着全球经济的快速发展和科技的不断进步,数字化转型已成为各行各业提升竞争力和实现可持续发展的必然选择。融资担保行业作为金融体系中的重要组成部分,也在积极探索和实践数字化转型,以更好地服务中小微企…

海外媒体发稿:2个必选媒体宣发套餐引爆影响力-华媒舍

本文旨在介绍2个必选媒体宣发套餐的特点及其如何引爆影响力。 在当今竞争激烈的媒体环境中,有效的宣传和推广策略对于企业和个人的成功至关重要。这就是为什么选择正确的宣发套餐成为了一个关键的决策。 2. 媒体宣发套餐概述 媒体宣发套餐是一种综合性的宣传方案&…

14 卡尔曼滤波及代码实现

文章目录 14 卡尔曼滤波及代码实现14.0 基本概念14.1 公式推导14.2 代码实现 14 卡尔曼滤波及代码实现 14.0 基本概念 卡尔曼滤波是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。由于观测数据包括系统中的噪声和…

【Linux】服务器被work32病毒入侵CPU占用99%

文章目录 一、问题发现二、问题解决2.1 清楚病毒2.2 开启防火墙2.3 修改SSH端口2.4 仅使用凭据登录(可选) 一、问题发现 我的一台海外服务器,一直只运行一项服务(你懂的),但是前不久我发现CPU占用99%。没在…

PTA:7-12 斐波那契数列

斐波那契数列 (FibonacciSequence),又称黄金分割数列,因数学家莱昂纳多斐波那契 (LeonardoFibonacci) 以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1,1,2,3,5,8,13,21,⋯ 在数学上,斐…

如何用Go语言,实现基于宏系统的解释器?

目录 一、Go语言介绍二、什么是宏系统三、什么是解释器四、如何用Go语言实现一个基于宏系统的解释器? 一、Go语言介绍 Go语言,又称为Golang,是一种由谷歌公司开发并开源的编程语言。Go语言的设计目标是提高程序员的生产力,同时具…

MFC扩展库BCGControlBar Pro v35.0新版亮点 - 工具栏、菜单全新升级

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中,并为您节省数百个开发和调试时间。 BCGControlBar专业版 v35.0已全新发布了,这个版本改进类Visual Studio 2022的视觉主题、增强对多个…

算法力扣刷题记录 二十三【151.翻转字符串里的单词】

前言 字符串篇,继续。 记录 二十三【151.翻转字符串里的单词】 – 一、题目阅读 给你一个字符串 s ,请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词…

【04】从0到1构建AI生成思维导图应用 -- 创建 AI 工作流

【04】从0到1构建AI生成思维导图应用 – 创建 AI 工作流 大家好!最近自己做了一个完全免费的AI生成思维导图的网站,支持下载,编辑和对接微信公众号,可以在这里体验:https://lt2mind.zeabur.app/ 上一章:h…

centos7安装mysql8-zabbix6.4

MySQL rpm -qa | grep mysql #查看是否已经安装 Mysql rpm -qa | grep mariadb #查看是否已经安装 mariadb,CentOS 7可视化安装会默认安装该数据库,安装MySQL前需要卸载该数据库 rpm -e --nodeps mariadb-libs #删除mariadb数据库找到对应linux的版本进行下载 […

从零开始:Spring Boot 中使用 Drools 规则引擎的完整指南

规则引擎作用 规则引擎主要用于将业务逻辑从应用程序代码中分离出来,提高系统的灵活性和可维护性。规则引擎通过预定义的规则来处理输入数据并做出相应的决策,从而实现业务逻辑的自动化和动态调整。 例如 门店信息校验:美团点评在门店信息…

【高中数学之基本不等式】已知:a,b皆为正实数且1/a+1/(b+2)=1/2 求:a+b的最小值?

解:先从1/a1/(b2)1/2 入手,看能否化二为一(将两变量化成一个变量) 由1/a1/(b2)1/2 两边通分得(b2a)/a/(b2)1/2 交叉相乘得2a2b4ab2a 最后得到a24/b 所以ab24/bb 此时已经可以用基本不等式了 ab24/bb>22*根号下(4/b*b)22…

SpringBoot 3.3.1 + Minio 实现极速上传和预览模式

统一版本管理 <properties><minio.version>8.5.10</minio.version><aws.version>1.12.737</aws.version><hutool.version>5.8.28</hutool.version> </properties><!--minio --> <dependency><groupId>io.m…

Arduino - TM1637 4 位 7 段显示器

Arduino - TM1637 4 位 7 段显示器 Arduino-TM1637 4 位 7 段显示器 A standard 4-digit 7-segment display is needed for clock, timer and counter projects, but it usually requires 12 connections. The TM1637 module makes it easier by only requiring 4 connectio…

有哪些防爬虫的方法

防爬虫的方法有robots.txt文、user-agent过滤、ip限制、验证码、动态页面生成、频率限制、动态url参数和反爬虫技术等。详细介绍&#xff1a;1、robots.txt文件&#xff0c;用于告诉搜索引擎爬虫哪些页面可以访问&#xff0c;哪些页面禁止访问&#xff1b;2、ip限制&#xff0c…

关于vs code中Live Server插件安装后无法打开的问题

一、问题情况 安装好Live Server插件之后&#xff0c;点击open with live server只会出现界面右下角落的提示&#xff0c;但是不会跳转到浏览器的页面&#xff1a;如下所示&#xff1a; 二&#xff1a;解决步骤 1、首先进行扩展设置&#xff0c;默认将浏览器的设置为chrome浏览…