【Python实战因果推断】6_元学习器1

news2024/11/25 18:32:46

目录

Metalearners for Discrete Treatments

T-Learner


简单回顾一下,在之前的部分中,你们的重点是干预效果的异质性,也就是确定各单位对治疗的不同反应。在此框架下,您希望估算

\tau_i(x)=E\big[Y_i(1)-Y_i(0)\big|X\big]=E\big[\tau_i\big|X\big]

或连续情况下的 E[\delta Y_i(t)|X]。换句话说,您想知道单位对干预的敏感程度。在无法干预所有人,需要对干预进行优先排序的情况下,这一点超级有用;例如,当您想给予折扣但预算有限时。或者当某些单位的干预效果为正,而其他单位的干预效果为负时。

在此之前,您已经了解了如何使用带有交互项的回归来获得条件平均干预效果 (CATE) 估计值。现在,是时候加入一些机器学习算法了。

Metalearners 是一种利用现成的预测性机器学习算法来近似干预效果的简便方法。它们可以用来估计 ATE,但一般来说,它们主要用于 CATE 估计,因为它们可以很好地处理高维数据。Metalearners 用于回收预测模型,以进行因果推断。所有预测模型,如线性回归、提升决策树、神经网络或高斯过程,都可以利用本章介绍的方法重新用于因果推理。因此,metalearner 的成功与否在很大程度上取决于它所使用的机器学习技术。很多时候,你只需尝试多种不同的方法,看看哪种最有效。

Metalearners for Discrete Treatments

假设你在一家在线零售商的营销团队工作。你的目标是找出哪些客户能够接受营销电子邮件。你知道这封电子邮件有可能让顾客花更多的钱,但你也知道有些顾客并不喜欢收到营销电子邮件。为了解决这个问题,您打算估算电子邮件对客户未来购买量的条件平均干预效果。这样,您的团队就可以利用这个估计值来决定向谁发送电子邮件。

与大多数商业应用一样,您拥有大量向客户发送营销电子邮件的历史数据。您可以利用这些丰富的数据来匹配您的 CATE 模型。此外,您还有一些来自随机发送营销电子邮件实验的数据点。您计划将这些宝贵的数据仅用于评估您的模型,因为您拥有的数据太少了:

 import pandas as pd
 import numpy as np
 data_biased = pd.read_csv("./data/email_obs_data.csv")
 data_rnd = pd.read_csv("./data/email_rnd_data.csv")
 print(len(data_biased), len(data_rnd))
 data_rnd.head()

随机数据和观察数据都有完全相同的列。干预变量是 mkt_email,您关心的干预结果是收到电子邮件一个月后的购买量-next_mnth_pv。除了这些列之外,数据还包含一系列协变量,如客户的年龄、在您的网站上首次购买的时间(任期),以及他们在每个类别中的购买量数据。这些协变量将决定您计划拟合的干预异质性。

为了简化 CATE 模型的开发,您可以创建变量来存储处理、干预和协变量,以及训练集和测试集。

一旦掌握了所有这些,建造几乎所有的元学习器都将变得简单易行:

 y = "next_mnth_pv"
 T = "mkt_email"
 X = list(data_rnd.drop(columns=[y, T]).columns)
 train, test = data_biased, data_rnd

一旦掌握了所有这些,建造几乎所有的元学习器都将变得简单易行:

T-Learner

如果您要进行分类干预,首先应该尝试的学习器是 T 学习器。它非常直观,我猜你已经想到了。 它为每个干预拟合一个结果模型 \mu_t(x),以估计潜在结果 Y_{t}。在二元情况下,您只需要估计两个模型(因此称为 T):学习器在T = 1上训练ML模型,在T = 0上训练ML模型;在预测时间,它使用这两种模型来估计治疗和控制之间的差异

\mu_{0}(x)=E[Y|T=0,X]\\\mu_{1}(x)=E[Y|T=1,X]为了编写代码,我将使用提升回归树来建立结果模型。具体来说,我将使用 LGBMRegressor,这是一种非常流行的回归模型。我也会使用默认参数,但如果你愿意,也可以随意优化:

 from lightgbm import LGBMRegressor
 np.random.seed(123)
 m0 = LGBMRegressor()
 m1 = LGBMRegressor()
 m0.fit(train.query(f"{T}==0")[X], train.query(f"{T}==0")[y])
 m1.fit(train.query(f"{T}==1")[X], train.query(f"{T}==1")[y]);

现在我有了这两个模型,对测试集进行 CATE 预测就非常容易了:

 t_learner_cate_test = test.assign(
 cate=m1.predict(test[X]) - m0.predict(test[X])
 )

为了评估这个模型,我使用了相对累积增益曲线和该曲线下的面积。

T-learner 在这个数据集中运行良好。从弯曲的累积增益曲线上可以看出,它可以很好地按 CATE 对客户进行排序。

一般来说,T-学习器往往是合理的首选,这主要是因为它简单易用。但它有一个潜在的问题,可能会根据具体情况表现出来:它容易产生正则化偏差。

考虑这样一种情况:未处理的数据很多,而处理的数据很少。这种情况在很多应用中都很常见,因为干预的成本很高。现在假设干预结果 Y 具有一定的非线性,但治疗效果是恒定的。 下图中的第一幅图描述了这种情况:如果数据看起来像这样,与未处理的数据相比,处理过的观测数据非常少,那么 μ1 模型很有可能最终会变得简单,以避免过度拟合。相比之下,μ0 会更加复杂,但没关系,因为大量的数据可以防止过度拟合。重要的是,即使两个模型使用相同的超参数,也会出现这种情况。例如,为了生成前面的数据,我使用了 LGBM 回归模型,其 min_child_samples=25 且其他参数设置为默认值。 在处理较少的数据点时,很多 ML 算法都会自我规范化,min_child_samples 就是这种情况。它强制 LGBM 中的树在每个叶节点中至少有 25 个样本。

从机器学习的角度来看,自规范化非常有意义。如果数据很少,就应该使用更简单的模型。以至于上图中的两个模型都具有相当不错的预测性能,因为它们都针对各自的样本量进行了优化。但是,如果使用这些模型来计算 CATE \hat{\tau}=\mu_{1}(X)-\mu_{0}(X)\mu_{0}(X) 的非线性减去 \mu_{1}(X) 的线性将导致非线性 CATE(虚线减去实线),这是错误的,因为在这种情况下,CATE 是恒定的,等于 1。您可以在上图的第二幅图中看到这种情况。

这里发生的情况是,未治疗者的模型可以捕捉到非线性,但治疗者的模型却捕捉不到,因为它是为了处理小样本量而正则化的。当然,你也可以减少对该模型的正则化处理,但这样会有过拟合的风险。在这里,您似乎陷入了进退两难的境地。如何解决这个问题呢?这就是 X-learner 的用武之地。

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

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

相关文章

Kafka面试必备:深度解析Replica副本的作用与机制

我是小米,一个喜欢分享技术的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货! Hey大家好!我是小米,一个超级喜欢分享技术干货的大哥哥!今天咱们来聊聊阿里巴巴面试题中的一个热门话题:Kafka中的Replica副本作用。这可是个既基础…

在运行中遇到扫描包问题

问题描述:当我们看到这个上面一行代码时就代表我们有个包没有被当前的Spring容器给扫描到,关于这个问题我们有两个:第一把整个包导进来,第二用哪个导哪个

安卓应用开发学习:获取经纬度及地理位置描述信息

前段时间,我在学习鸿蒙应用开发的过程中,在鸿蒙系统的手机上实现了获取经纬度及地理位置描述信息(鸿蒙应用开发学习:手机位置信息进阶,从经纬度数据获取地理位置描述信息)。反而学习时间更长的安卓应用开发…

Qt源码分析:窗体绘制与响应

作为一套开源的UI代码库,窗体绘制与响应自然是最为基本的功能。在前面的博文中,已就Qt中的元对象系统(反射机制)、事件循环等基础内容进行了分析,并捎带阐述了窗体响应相关的内容。因此,本文着重分析Qt中窗体绘制相关的内容。 注…

vscode 使用正则将/deep/ 替换成 :deep()

在VSCODE编辑器的SEARCH中按上图书写即可,正则表达式如下:(\/deep\/)(.*?)(?\{) 替换操作如下::deep($2) 如果有用,号隔开的用:(\/deep\/)(.*?)(?,)替换操作如下::deep($2) 即可实现快速替换所有/deep/写法; 同理…

【Dison夏令营 Day 03】使用 Python 创建我们自己的 21 点游戏

21 点(英文:Blackjack)是一种在赌场玩的纸牌游戏。这种游戏的参与者不是互相竞争,而是与赌场指定的庄家竞争。在本文中,我们将从头开始创建可在终端上玩的玩家与庄家之间的二十一点游戏。 二十一点规则 我们将为从未玩过二十一点的读者提供…

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

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

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却很麻烦,功能太多,看的人眼花缭乱,有时候一个功能要找很久,甚至有的功能用一辈子都…