【因果推断python】47_元学习1

目录

S-Learner


简单回顾一下,我们现在感兴趣的是发现治疗效果的异质性,即确定单位对治疗的不同反应。在这个框架中,我们想估计\tau(x)=E[Y_i(1)-Y_i(0)|X]=E[\tau_i|X]
E[\delta Y_i(t)|X]
在连续的情况下。换句话说,我们想知道这些单位对治疗的敏感程度。这在我们不能治疗所有人并且需要对治疗进行优先排序的情况下非常有用,例如,当你想提供折扣但预算有限时。

之前,我们看到了如何转换结果变量Y以便我们可以将其插入预测模型中,并获得条件平均治疗效果(CATE)估计。在那里,我们不得不付出方差增加的代价。这是我们在数据科学中经常看到的。没有一个最好的方法,因为每种方法都有其优缺点。因此,值得学习许多技术,以便根据具体情况进行权衡。本着这种精神,本章将侧重于为您提供更多可供您使用的工具。

元学习器是一种利用现成的预测机器学习方法来解决我们迄今为止一直在研究的相同问题的简单方法:估计CATE。同样,它们都不是最好的,每一个都有自己的弱点。我会试着复习一下,但请记住,这些内容高度依赖于上下文。不仅如此,元学习器还部署了预测ML模型,这些模型可以从线性回归和增强决策树到神经网络和高斯过程。元学习器的成功也将在很大程度上取决于它使用的机器学习方法。通常,你只需要尝试许多不同的东西,看看什么最有效。

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
import seaborn as sns
from nb21 import cumulative_gain, elast

在这里,我们将使用与以前相同的数据,重新考虑投资广告电子邮件。同样,这里的目标是找出谁能更好地回复电子邮件。不过也有一点小转折。这一次,我们将使用非随机数据来训练模型,并使用随机数据来验证它们。处理非随机数据是一项困难得多的任务,因为元学习者需要对数据进行去噪并估计CATE。

test = pd.read_csv("./data/invest_email_rnd.csv")
train = pd.read_csv("./data/invest_email_biased.csv")
train.head()

我们的结果变量是转化率,我们的治疗是通过电子邮件1。让我们创建变量,将这些变量与功能一起存储。探索治疗效果的异质性。

y = "converted"
T = "em1"
X = ["age", "income", "insurance", "invested"]

S-Learner

我们将使用的第一个学习者是S-learner。这是我们能想到的最简单的学习者。我们将使用单个(因此为S)机器学习模型M_{s}
估计\mu(x)=E[Y|T,X]
为此,我们将简单地将治疗作为一个特征包括在试图预测结果Y的模型中。

from lightgbm import LGBMRegressornp.random.seed(123)
s_learner = LGBMRegressor(max_depth=3, min_child_samples=30)
s_learner.fit(train[X+[T]], train[y]);

然后,我们可以在不同的治疗方案下进行预测。测试和对照之间的预测差异将是我们的CATE估计

\hat{\tau}(x)_i=M_s(X_i,T=1)-M_s(X_i,T=0)
如果我们把它放在一个图表中,下面是它的样子

现在,让我们看看如何在代码中实现这个学习器。

s_learner_cate_train = (s_learner.predict(train[X].assign(**{T: 1})) -s_learner.predict(train[X].assign(**{T: 0})))s_learner_cate_test = test.assign(cate=(s_learner.predict(test[X].assign(**{T: 1})) - # predict under treatments_learner.predict(test[X].assign(**{T: 0}))) # predict under control
)

为了评估这个模型,我们将查看测试集中的累积增益曲线。我还在火车上画增益曲线。由于训练是有偏差的,如果模型是好的,这条曲线不能给出任何指示,但它可以指出我们是否过度拟合训练集。当这种情况发生时,列车组中的曲线将非常高。如果您想看看它是什么样子,请尝试将max_depth参数从3替换为20。

gain_curve_test = cumulative_gain(s_learner_cate_test, "cate", y="converted", t="em1")
gain_curve_train = cumulative_gain(train.assign(cate=s_learner_cate_train), "cate", y="converted", t="em1")
plt.plot(gain_curve_test, color="C0", label="Test")
plt.plot(gain_curve_train, color="C1", label="Train")
plt.plot([0, 100], [0, elast(test, "converted", "em1")], linestyle="--", color="black", label="Baseline")
plt.legend()
plt.title("S-Learner");

正如我们从累积增益中看到的那样,S-学习器虽然简单,但在这个数据集上可以表现良好。需要记住的一件事是,这种性能对于这个数据集来说是非常特殊的。根据你掌握的数据类型,S学习者可能会做得更好或更差。在实践中,我发现S-学习器是解决任何因果问题的好方法,主要是因为它的简单性。不仅如此,S-学习者可以处理连续和离散处理,而本章中的其他学习者只能处理离散处理。

S学习者的主要缺点是它倾向于将治疗效果偏向于零。由于S学习器使用通常是正则化的机器学习模型,该正则化可以限制估计的治疗效果。‪切尔诺茹科夫‬ 等人(2016)使用模拟数据概述了这个问题:

在这里,他们绘制了真实因果效应(红色轮廓)和估计因果效应之间的差异,\tau-\hat{\tau},使用S-学习器。估计的因果效应有很大偏差。

更糟糕的是,如果治疗相对于其他协变量在解释结果时所起的作用非常弱,则S学习者可以完全放弃治疗变量。请注意,这与您所使用的所选ML模型高度相关。正则化程度越高,问题就越严重。我们将看到下一个学习者尝试解决这个问题。

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

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

相关文章

Flink 1.19.1 standalone 集群模式部署及配置

flink 1.19起 conf/flink-conf.yaml 更改为新的 conf/config.yaml standalone集群: dev001、dev002、dev003 config.yaml: jobmanager address 统一使用 dev001,bind-port 统一改成 0.0.0.0,taskmanager address 分别更改为dev所在host dev001 config.…

【SD3的Turbo也来了】Jasper AI用Flash Diffusion的蒸馏技术为SD3提速

Flash Diffusion 是一种新颖的图像生成方法,旨在显著提高现有条件扩散模型(例如教师模型)的速度,而无需牺牲性能。它通过引入以下技术来实现这一点: 蒸馏损失:在教师模型和学生模型之间引入蒸馏损失&#…

React+TS前台项目实战(十三)-- 全局常用响应式加载动画Loading组件封装

文章目录 前言Loading组件1. 功能分析2. 代码详细注释3. 使用方式4. 不同尺寸loading动画效果展示 总结 前言 高阶组件有几大优点,其中一个就是渲染劫持,如懒加载,是否显示该元素loading,这在项目中我们经常用到。毫无疑问&#…

单阶段目标检测--NMS

目录 一、概念: 二、算法过程 三、代码实现 一、概念: 在目标检测的初始结果中,同一个物体,可能对应有多个边界框 (bounding box,bb),这些边界框通常相互重叠。如何从中选择一个最合适 的(也就…

DATaGrip的安装与使用

在数据库开发的过程中,有一款专业的软件必不可少。相较于navicat,DataGrip功能更为齐全,如SQL语句编辑、数据库连接管理、数据导入和导出、数据库比较和同步等等。DataGrip支持多种数据库,如MySQL、PostgreSQL、Oracle、Microsoft…

Python | Leetcode Python题解之第171题Excel列表序号

题目: 题解: class Solution:def titleToNumber(self, columnTitle: str) -> int:number, multiple 0, 1for i in range(len(columnTitle) - 1, -1, -1):k ord(columnTitle[i]) - ord("A") 1number k * multiplemultiple * 26return n…

JavaScript:at()方法遇到的问题并解决

目录 第一章 前言 第二章 使用at方法 第三章 分析原因并解决问题 第一章 前言 最近上线了一个项目,测试过程中并没有什么问题,但是上线后使用的用户多了,结果出现了这么一个问题:.at方法对低版本手机的浏览器不兼容问题&#x…

信息打点-协议应用_内网资产_CDN_WAF_负载均衡_防火墙

服务信息获取-协议应用&内网资产 常见端口默认对应的服务: 特殊服务端口: 端口扫描工具: 旁注查询 旁注查询,又称为旁站查询或同服务器网站查询,是一种信息安全和网络侦查技术,主要用于发现与目标网站…

iOS APP内存泄漏的问题

iOS APP内存泄漏是指应用程序不再使用内存,但内存却没有被释放,导致应用程序占用过多的内存,甚至崩溃。内存泄漏是iOS开发中常见的问题,会严重影响应用程序的性能和稳定性。北京木奇移动技术有限公司,专业的软件外包开…

PMBOK® 第六版 指导与管理项目工作

目录 读后感—PMBOK第六版 目录 我们都不情愿去做重复的工作,也不期望只得到一个计划,而具体的工作任务却笼统模糊,需要在做的过程中一边摸索。如此一来,对于熟悉的事情会因反复而影响心态,对于不熟悉的事情则由于痛苦…

【element-ui】el-date-picker动态设置picker-options

<el-date-pickerv-model"formObj.startDate"type"date"placeholder"开始时间":picker-options"startPickerOptions"> </el-date-picker><el-date-pickerv-model"formObj.endDate"type"date"placeh…

5G/4G/北斗遥测终端机全国各省水利平台无缝对接

物联网技术的广泛应用正在深刻影响水利行业&#xff0c;计讯物联致力于推动水利技术的持续革新和服务的持续升级&#xff0c;依托国家级专业水利资质认证&#xff0c;在多个大型水利项目中展现的项目管理专长&#xff0c;为水利项目建设提供了高效的解决方案&#xff0c;持续推…

NodeJs 连接本地 mySql 数据库获取数据

写在前面 今天把 nodejs 连接本地数据库的坑简单的踩一下&#xff0c;为后续写接口做个铺垫 安装 mySql &#xff08;mac举例子&#xff09; 安装地址 安装完成大概这个样子&#xff0c;起动起来就行 安装本地数据库连接工具&#xff08;navicat举例子&#xff09; 安装地…

自定义模板DIY专属CSDN个人主页!HTML+CSS个性化全攻略

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 &#x1f4af;如何通过HTMLCSS自定义模板diy出自己的个性化csdn主页&#x…

单链表经典算法题2

&#x1f339;个人主页&#x1f339;&#xff1a;喜欢草莓熊的bear &#x1f339;专栏&#x1f339;&#xff1a;数据结构 前言 这次介绍的题会比上次更有难度哦&#xff0c;宝宝们系好安全带。咱们出发了&#xff01; 一、合并两个有序链表 1.1思路 创建一个新链表来接收合并…

基于FPGA的Cordic向量模式原理及设计

目录 一、向量模式 1、向量模式原理 1.1 1.2 2、向量模式的MATLAB仿真 3、向量模式的FPGA实现 3.1 预处理 3.2 迭代 3.3 结果计算 一、向量模式 1、向量模式原理 已知直角坐标下一点&#xff08;x&#xff0c;y&#xff09;&#xff0c;如何求该点在极坐标系的坐标&a…

2024华为OD机试真题- 计算三叉搜索树的高度-(C++/Python)-C卷D卷-100分

2024华为OD机试题库-(C卷+D卷)-(JAVA、Python、C++) 题目描述 定义构造三叉搜索树规则如下: 每个节点都存有一个数,当插入一个新的数时,从根节点向下寻找,直到找到一个合适的空节点插入。查找的规则是: 1.如果数小于节点的数减去500,则将数插入节点的左子树 2.如果数大于…

T200HSA单路SDI/HDMI+1路3.5音频高清万能采集卡

产品简介&#xff1a; 同三维T200HSA单路高清万能采集卡&#xff0c;可以采集1路SDI/HDMI高清信号1路3.5音频信号&#xff0c;卡上有1个是HDMI接口1个是SDI接口1个3.5音频口&#xff0c;配件有&#xff1a; 1个小档板&#xff0c;PCI-E2.0 X1&#xff0c;分辨率最高可以达到10…

机器学习模型评估之校准曲线

模型校准曲线&#xff08;Calibration Curve&#xff09;&#xff0c;也称为可靠性曲线&#xff08;Reliability Curve&#xff09;或概率校准曲线&#xff08;Probability Calibration Curve&#xff09;&#xff0c;是一种评估分类模型输出概率准确性的图形工具。它可以帮助我…

【python数据可视化】利用Python爬取天气数据并实现数据可视化,绘制天气轮播图

用Python爬虫抓取全年天气数据并绘制天气轮播图 一、运行结果&#xff1a; 二、代码展示&#xff1a; 由csv文件生成↓ 接下来是绘制天气轮播图 运行结果&#xff1a; 完整代码请看这里↓&#x1f447; 提醒制作这个项目你需要执行以下几个步骤&#xff1a; 确定数据源&#x…