通过元学习优化增益模型的性能:基础到高级应用总结

news2024/11/16 8:19:16

在当今数据驱动的决策过程中,因果推断和增益模型扮演了至关重要的角色。因果推断帮助我们理解不同变量间的因果关系,而增益模型则专注于评估干预措施对个体的影响,从而优化策略和行动。然而,要提高这些模型的精确度和适应性,引入元学习器成为了一个创新的解决方案。元学习器通过将估计任务分解并应用不同的机器学习技术,能够有效增强模型的表现。接下来,我们将详细探讨如何利用元学习优化增益模型的性能,特别是通过S-Learner、T-Learner和X-Learner这几种估计器。

因果推断

因果推断是理解干预、处理与其结果之间的因果关系的基本概念。它在统计学、流行病学、经济学等领域中有所应用。

HTE(异质性处理效应)模型是一种强大的工具,可用于理解实验干预对不同人群的不同影响。它通过人群定向提供了一种个性化的干预方式,最大程度地提高了实验的影响力。超越了传统的因果推断方法,后者通常估计整个人群的平均处理效应(ATE)。而HTE关注干预或处理如何影响特定个体或人群段,承认他们的独特特性。

增益模型

增益模型(uplift model):估算干预增量(uplift),即**干预动作(treatment)用户响应行为(outcome)**产生的效果。

这是一个因果推断(Causal Inference) 课题下估算ITE(Individual Treatment Effect)的问题——估算同一个体在干预与不干预(互斥情况下)不同outcome的差异。为了克服这一反事实的现状,增益模型强依赖于随机实验(将用户随机分配到实验组&对照组)的结果数据。

可以说增益模型位于因果推断和机器学习的交叉点,为理解个体对干预的响应提供了强大的方法。

因果推断与增益模型的关系

虽然这两种方法的应用场景和目标有所不同,但它们都寻求评估某种干预的效果。因果推断提供了一种框架和方法来理解和估计一个变量对另一个变量的影响,而增益模型则是这一框架下的一个应用,专注于个体层面的干预效果。增益模型在设计时会使用因果推断的方法来确保其预测的准确性和可靠性,尤其是在处理非实验数据时处理潜在的偏见。

因果推断提供了理解和证明因果关系的方法,而增益模型则利用这些方法来优化决策和策略,尤其是在面对大规模客户群体时。

Meta-learner

Meta-learner(元学习器)通过减少数据需求和增强适应性来改善提升模型,是一种模型不可知的算法,用于使用任何机器学习方法估计平均处理效应 (CATE) 。

元学习器将估计 CATE 的任务分解成可以使用任何回归或监督机器学习算法解决的较小的预测任务,这些算法称为基础学习器。

这些基础学习器可以是机器学习的任何算法,如XGBoost、回归、决策树或神经网络。

S-Learner(单一估计器)

S-Learner使用单一监督学习算法,例如回归树、随机森林或 XGBoost,来估计提升建模的 CATE 的单一估计器。

S-Learner将干预变量(T)与其他特征(X)结合在一起,训练单个机器学习模型(M)。该模型预测不同干预方案(控制T=0,干预T=1)下的结果(Y)。估计CATE然后被计算为干预方案和控制方案预测之间的差异。

S-Learner使用单一机器学习模型,易于理解和实施,可以处理连续和离散的干预变量 S-学习者不给变量分配任何特殊角色,将其视为任何其他特征。如果干预变量不是结果的强预测因子,那么S-Learner将倾向于估计零干预效应,低估干预的真实影响。

使用Causalml实现S-Learner

下面的代码片段使用S-Learner实现提升建模。它将基础学习器XGBRegressor封装为单个机器学习算法。

 #control_name=0 specifies the control group in the treatment variable
 s_learner = BaseSRegressor(XGBRegressor(), control_name=0)
 # Split the data into training and test sets
 X_train, X_test, y_train, y_test, treatment_train, treatment_test = train_test_split(
     df[x_names], df['converted'], df['em1'], test_size=0.2, random_state=42)
 
 # Train the model
 s_learner.fit(X=X_train, treatment=treatment_train, y=y_train)
 # Predict the treatment effect on the test data
 s_cate_estimates = s_learner.predict(X=X_test)
 # Create a DataFrame for easier manipulation
 pred_data = pd.DataFrame({
     'outcome': np.ravel(y_test),
     'treatment': np.ravel(treatment_test),
     'predicted_effect': np.ravel(s_cate_estimates)
 })
 plot_gain(pred_data, outcome_col="outcome", treatment_col="treatment")
 plt.show()

T-Learner(两个估计器)

T-Learner是一种提升建模技术,将干预组和对照组视为单独的实验。它训练两个分开的模型——一个用于干预组,另一个用于对照组——使其能够捕捉干预如何不同地影响每个组。

在预测时,T-Learner对不同的干预指标应用适当模型进行结果预测——对于对照组使用对照模型(T=0),对于干预组使用干预模型(T=1)。然后CATE计算为这两个模型的平均预测差值。

使用Causalml实现T-Learner

下面的代码实现了T-Learner模型

 learner_t = BaseTRegressor(XGBRegressor(), control_name=0)
 # Train the model
 learner_t.fit(X=X_train, treatment=treatment_train, y=y_train)
 
 # Predict the treatment effect on the test data
 t_cate_estimates = learner_t.predict(X=X_test)
 # Create a DataFrame for easier manipulation
 t_pred_data = pd.DataFrame({
     'outcome': np.ravel(y_test),
     'treatment': np.ravel(treatment_test),
     'T_Learner_Predicted_Effect': np.ravel(t_cate_estimates)
 })
 plot_gain(t_pred_data, outcome_col="outcome", treatment_col='treatment')
 plt.show()

T-Learner需要大量的对照组和干预组数据来防止过拟合。适用于干预和结果之间关系复杂的情况,以及干预可能对个体产生不同影响的情况

X-Learner

X-Learner的思路是基于T-Learner的,在T-Learner基础上,分为了两个阶段,并生成了一个倾向性模型。

第一阶段:与 T-Learner相同,独立分析每个组并为干预组和对照组分别建立模型。

第二阶段:X-Learner首先承认两组之间可能存在的信息差距,然后通过利用每组的数据估计干预对另一组的缺失效果。然后使用这些估计来预测结果。

X-Learner使用倾向性得分,这是衡量每个个体接受干预的可能性,连同第二阶段的结果,估计CATE。

因为它像 X 一样在干预组和对照组之间交叉信息,所以才被称为X-Learner。与 T-Learner不同,当其中一个干预组比另一个组大得多或不平衡或者当 CATE 函数较简单时,X-Learner表现非常好。

使用Causalml实现T-Learner

下面的代码使用XGBoost作为基础学习器来预测结果,并使用单独的线性回归模型来估计干预效果。

 learner_x = BaseXRegressor(learner=XGBRegressor(), 
                            treatment_effect_learner=LinearRegression())
 cate_x = learner_x.fit_predict(X=X_train, treatment=treatment_train, y=y_train)
 # Predict the treatment effect on the test data
 x_cate_estimates = learner_x.predict(X=X_test)
 # Create a DataFrame for easier manipulation
 x_pred_data = pd.DataFrame({
     'outcome': np.ravel(y_test),
     'treatment': np.ravel(treatment_test),
     'X_Learner_Predicted_Effect': np.ravel(x_cate_estimates),
     'T_Learner_Predicted_Effect':np.ravel(t_cate_estimates),
     'S_Learner_Predicted_Effect':np.ravel(s_cate_estimates),
     'Uplifting':y_pred['recommended_treatment']
 })
 plot_gain(x_pred_data, outcome_col="outcome", treatment_col="treatment")
 plt.show()

下图是模型的累积收益图,比较了不同类型的元学习器和目标干预策略。

总结

X-Learner和Uplifting方法在目标过程的后期似乎更有效,这表明随着更多的数据被考虑,这些方法在识别真正可处理的个例方面更好。

S-Learner的收益随着目标人群的增加而稳步增长。

T-Learner始终提供更好的结果。

X-Learner最初表现出较低的结果,但随着目标人群的增加而改善,这表明在早期阶段可能会更加谨慎或有选择性。

最后本文出现了一些专有名词,如果你对因果推断不理解,可以看看下面的简单解释:

ATE:Average Treatment Effect,平均处理效应。实验组的平均处理效应。比如实验组上线了新的推荐策略,实验组与对照组之间平均效果的差别就是ATE。

CATE:Conditional Average Treatment Effect,条件平均处理效应。实验组中某个细分群的平均处理效应。比如实验组的活跃用户与对照组活跃用户平均效果的差别就是CATE。

ITE:Individual Treatment Effect,个体处理效应。实验组中每个个体的处理效应差异。

ATT:Average Treatment Effects on Treated,受处理群体的平均处理效应。比如实验组受处理的这群人如果不受处理,会是怎样的(这群人受处理与不受处理之间效果的差异)。但是对照组中不存在与实验组中一模一样的人,一般通过PSM来找到实验组人群的替身。

https://avoid.overfit.cn/post/91a55677ab61439cb6db84a7a4249937

作者:Renu Khandelwal

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

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

相关文章

lammps聚合物断键拉伸模拟

本文介绍聚合物的断键拉伸。 在lammps模拟中,所有的键默认是永久存在的,非正常情况下,不能断开,否则会产生"bond atoms missing”错误。 聚合物的拉伸模拟过程中,聚合物链并没有被拉断,而只是把不同的…

tmega128单片机控制的智能小车设计

第1章 绪论1.1 选题背景和意义 自第一台工业机器人诞生以来,机器人的民展已经遍及机械、电子、冶金、交通、宇航、国防等领域。近年来机器人的智能水平不断提高,并且迅速地改变着人们的生活方式。人们在不断探讨、改造、认识自然的过程中,制造能替代人工作的机器一…

国学诗词app开发,学古贯今,句句珠玑

“鹅鹅鹅,曲项向天歌。”这是很多人学会的第一首诗,国学诗词作为中华传统文化的重要组成部分,不仅在历史中占据重要地位,也是儿童学前启蒙的不二选择。对于家长来说,他们更喜欢在学前教孩子一些经典国学和古诗词&#…

180.二叉树:二叉搜索树(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* Tre…

好用的FTP客户端 Transmit 5中文

Transmit 5是一款专为macOS设计的FTP客户端软件,由Panic公司开发。它支持FTP、SFTP、WebDAV和Amazon S3等多种传输协议,满足用户多样化的文件传输需求。Transmit 5拥有用户友好的界面设计,提供了清晰的文件传输状态和详细的信息,让…

Java面经总结

一、java基础 1.重载和重写的区别 重载: 发生在同一类中,函数名必须一样,参数类型、参数个数、参数顺序、返回值、修饰符可以不一样。重写: 发生在父子类中,函数名、参数、返回值必须一样,访问修饰符必须…

【Android面试八股文】1. 你说一说Handler机制吧 2. 你知道Handler的同步屏障吗? 3. Looper一直在循环,会造成阻塞吗?为什么?

文章目录 一. 你说一说Handler机制吧二、你知道Handler的同步屏障吗?2.1 Handler消息的分类2.2 什么是同步屏障2.3 为什么要设计同步屏障2.4 同步屏障的用法 三、Looper一直在循环,会造成阻塞吗?为什么?扩展阅读 一. 你说一说Hand…

PostgreSQL和Oracle的数据类型对比:时间类型 #PG培训

在数据库管理系统中,时间数据类型是非常关键的一部分。时间数据类型的选择和使用直接影响到数据存储、查询效率和应用程序的设计。本文将对比PostgreSQL和Oracle在时间类型方面的实现和特性。 #PG考试#postgresql培训#postgresql考试#postgresql认证 日期和时间类型…

JAVA开发 创建TXT文件,写入并读取数据流输出到控制台

通过BufferedReader类和BufferedWriter类操作txt文件 1、BufferedReader类和BufferedWriter类1.1 BufferedReader类1.1.1 构造方法1.1.2 重要方法1.1.3 作用 1.2 BufferedWriter类1.2.1 构造方法1.2.2 重要方法1.2.3 作用 1.3 总结 2、案例2.1 实现代码2.2 输出 1、BufferedRea…

STM32理论 —— μCOS-Ⅲ(2/2):时间管理、消息队列、信号量、任务内嵌信号量/队列、件标志组

文章目录 9. 时间管理9.1 OSTimeDly()9.2 OSTimeDlyHMSM()9.3 OSTimeDlyResume()9.4 延时函数实验 10. 消息队列10.1 创建消息队列函数OSQCreate()10.2 发送消息到消息队列函数(写入队列)OSQPost()10.3 获取消息队列中的消息函数(读出队列)OSQPend()10.4 消息队列操作实验 11. …

产品经理简要介绍主流电商平台商品API接口的重要应用价值

主流电商平台: 截至目前(2024年6月),主流电商平台通常指的是国内外知名的在线购物平台,包括但不限于以下几家: 1. 中国电商平台: - 淘宝网(taobao.com) - 天猫商…

阿里云香港服务器怎么样?

大家都知道阿里云是国内最受欢迎的云服务商,那么阿里云香港服务器究竟怎么样呢?和硅云的香港服务器用于做外贸网站等业务相比各有哪些优缺点呢? 阿里云和硅云在香港云服务领域有着广泛的应用和良好的口碑。然而,它们各自的特点和…

霍廷格TruPlasma RF 1001 to 1003 (G2/13)手侧通快电源

霍廷格TruPlasma RF 1001 to 1003 (G2/13)手侧通快电源

深入 Go 语言核心:结构体的全方位解析

Go 语言,作为一种高效、静态类型的编程语言,自其问世以来便以其并发处理能力和简洁的语法结构广受开发者欢迎。虽然 Go 不是传统意义上的面向对象语言,它却以独特的方式支持面向对象编程的核心概念,其中结构体扮演了非常关键的角色…

解决Servlet报404未找到

一、检查project struture 打开Project Struture 检查jdk 检查Modules的depencies 如果缺少servlet的jar依赖,则可以先配置tomcat,然后执行如下图的添加依赖(这种方法不适用于maven构建的项目) 把Tomcat里的jar添加进来就可…

Sqlite3入门和c/c++下使用

1. SQLite3基本介绍 1.1 数据库的数据类型 1.2 基本语法 1. 创建数据表格 create table 表名(字段名 数据类型, 字段名 数据类型); create table student(id int, name varchar(256), address text, QQ char(32)); 2. 插入数据 insert into 表名 valu…

音频处理1_基本概念

AI变声和音乐创作的基础 声音本质上是人类可察觉范围内的气压周期性波动, 即声波 声波是一种连续信号,在任意时间内的声音信号有无数个取值。对于只能读取有限长数组计算机来说,我们需要将连续的声音信号转换为一个离散的序列,即数字化表示。…

【一竞技DOTA2】Malr1ne有可能是第二个奇迹哥

1、近日Falcons战队一号位选手skiter在直播中讲到战队组建过程,并称赞了队内中单Malr1ne很强,甚至可能是第二个Miracle-。 “去年我在Tundra的时候曾经与Nemiga的Malr1ne合作过,他替补Nine来打比赛。尽管我们在比赛中没拿到好成绩&#xff0c…

IPv6 ND 协议功能概述

ND 协议功能概述 ND(Neighbor Discovery,邻居发现)协议是 IPv6 的一个关键协议,它综合了 IPv4 中的 ARP,ICMP 路由发现和 ICMP 重定向等协议,并对它们做了改进。 作为 IPv6 的基础性协议,ND 协…

MNIST手写字符分类-卷积

MNIST手写字符分类-卷积 文章目录 MNIST手写字符分类-卷积1 模型构造2 训练3 推理4 导出5 onnx测试6 opencv部署7 总结 在上一篇中,我们介绍了如何在pytorch中使用线性层ReLU非线性层堆叠的网络进行手写字符识别的网络构建、训练、模型保存、导出和推理测试。本篇文…