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

在当今数据驱动的决策过程中,因果推断和增益模型扮演了至关重要的角色。因果推断帮助我们理解不同变量间的因果关系,而增益模型则专注于评估干预措施对个体的影响,从而优化策略和行动。然而,要提高这些模型的精确度和适应性,引入元学习器成为了一个创新的解决方案。元学习器通过将估计任务分解并应用不同的机器学习技术,能够有效增强模型的表现。接下来,我们将详细探讨如何利用元学习优化增益模型的性能,特别是通过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 variables_learner = BaseSRegressor(XGBRegressor(), control_name=0)# Split the data into training and test setsX_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 models_learner.fit(X=X_train, treatment=treatment_train, y=y_train)# Predict the treatment effect on the test datas_cate_estimates = s_learner.predict(X=X_test)# Create a DataFrame for easier manipulationpred_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 modellearner_t.fit(X=X_train, treatment=treatment_train, y=y_train)# Predict the treatment effect on the test datat_cate_estimates = learner_t.predict(X=X_test)# Create a DataFrame for easier manipulationt_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 datax_cate_estimates = learner_x.predict(X=X_test)# Create a DataFrame for easier manipulationx_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.xdnf.cn/news/1451724.html

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

相关文章

计算机网络实验(15):基于Socket的网络编程(附JAVA源码.txt)

一、实验名称 UDP客户服务器即时通信程序 二、实验目的: 掌握基于SOCKET的网络编程方法。 基于JAVA语言,编写一个SOCKET的即时通信小程序 三、实验内容和要求 实验内容: 基于JAVA语言,编写一个SOCKET的即时通信小程序 实…

文章分享 | Ribo-seq与RNA-seq联合分析揭示uAUG-ds翻译调控机制

技术简介 RNA-seq主要从转录组水平分析基因的表达调控机制,检测用于核糖体翻译的RNA序列及二级结构。Ribo-seq主要用于检测核糖体翻译的起始位置、翻译富集区和翻译终止位置。RNA-seq与Ribo-seq联合分析可以准确检测mRNA上游5’UTR区的uORFs翻译调控结构&#xff0…

雪球产品学习,大雪球vs小雪球

part1 大雪球 一、 雪球产品的要素 1.1 定义:固收期权的结合 具备敲入,敲出的Barrier put (看跌认沽) 期权的买方:产品发行方 期权的卖方:雪球产品购买者 1.2 七要素 挂钩标的,锁定期&…

电脑屏幕监控软件有哪些?2025年监控软件排行榜

电脑屏幕监控软件有哪些?2025年监控软件排行榜 虽然现在还是2024年,但是有一些被广泛讨论和推荐的电脑屏幕监控软件,它们将在2025年异军突起,成为行业的引领者。 1.安企神软件: 功能全面的电脑屏幕监控软件&#xf…

Sentence Transformers x SwanLab:可视化Embedding训练

Sentence Transformers(又名SBERT)是访问、使用和训练文本和图像嵌入(Embedding)模型的Python库。 你可以使用Sentence Transformers快速进行模型训练,同时使用SwanLab进行实验跟踪与可视化。 1. 引入SwanLabCallback from swanlab.integra…

【Android】打开需要NDK的项目的一些报错的问题解决

文章简述 在打开一个新的项目的时候,遇到了一些问题,记录一下问题的解决步骤。 问题1 FAILURE: Build failed with an exception.* What went wrong: A problem occurred configuring project :app. > NDK not configured. Download it with SDK m…

Pyskl动捕

一、环境搭建 详见Pytorch-gpu安装 二、下载代码 https://github.com/kennymckormick/pyskl 三、环境安装 conda create -n pyskl python=3.8 conda activate pyskl 先看下requirements.txt中需要安装的包 有些包是需要单独安装的如pytorch,这个根据自己cuda版本对应安装…

JVM之标记算法的详细解析

三色标记 标记算法 三色标记法把遍历对象图过程中遇到的对象,标记成以下三种颜色: 白色:尚未访问过 灰色:本对象已访问过,但是本对象引用到的其他对象尚未全部访问 黑色:本对象已访问过,而且…

DiffusionDet:用于物体检测的扩散模型

论文标题:DiffusionDet: Diffusion Model for Object Detection 论文地址:https://arxiv.org/pdf/2211.09788 DiffusionDet:用于物体检测的扩散模型 检测模型发展物体检测 DiffusionDet方法预备知识DiffusionDet前向扩散过程DiffusionDet反向…

【gtest】 C++ 的测试框架之使用 gtest 编写单元测试

目录 🌊前言 🌊使用 cmake 启动并运行 gtest 🌍1. 设置项目 🌍2. 创建并运行二进制文件 🌊1. gtest 入门 🌍1.1 断言(assertions) 🌍1.2 简单测试 🌍…

最新(2024年)安装gdal库方法

方法一:直接 conda install gdal 方法二:https://github.com/cgohlke/geospatial-wheels/releases/tag/v2024.2.18 这个链接里下载whl文件

Day51 代码随想录打卡|二叉树篇---二叉搜索树的最小绝对差

题目(leecode T530): 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数,其数值等于两值之差的绝对值。 方法:本题计算二叉搜索树的最小绝对差,涉…

快慢指针在字符串中的应用-443. 压缩字符串

题目链接及描述 443. 压缩字符串 - 力扣(LeetCode) 题目分析 这个题目总体不算太难,如果之前接触过双指针(快慢指针)的话,比较好做。题目可以理解为计算数组中对应各个连续字符出现的次数,并将…

测试基础13:测试用例设计方法-错误推断、因果图判定表

课程大纲 1、错误推测法 靠主观经验和直觉来推测可能容易出现问题的功能或场景,设计相关测试用例进行验证。 2、因果图&判定表 2.1定义 因果图和判定表是分析和表达多逻辑条件下,执行不同操作的情况的工具。 (因果图和判定表配合使用&a…

生产运作管理--第六版陈荣秋

第一章: 生产运作的分类有哪些? 答:可以分为两大类: 产品生产: 产品生产是通过物理或者化学作用将有形输入转化为有形输出的过程。 按照工艺过程的特点,可以分为: 连续性生产:物料均匀、连续的按…

TCP/IP协议,三次握手,四次挥手

IP - 网际协议 IP 负责计算机之间的通信。 IP 负责在因特网上发送和接收数据包。 HTTP - 超文本传输协议 HTTP 负责 web 服务器与 web 浏览器之间的通信。 HTTP 用于从 web 客户端(浏览器)向 web 服务器发送请求,并从 web 服务器向 web …

TCP三次握手和四次挥手过程简介(抓包分析,简单易懂,小白)

接上篇 传输层部分 链路层、网络层、传输层和应用层协议详解分析-CSDN博客文章浏览阅读689次,点赞10次,收藏15次。wireshark抓包分析-CSDN博客wireshark是网络包分析工具网络包分析工具的主要作用是尝试捕获网络包,并尝试显示包的尽可能详细…

6年前端社招一个月上岸20K经历,附简历

面经哥只做互联网社招面试经历分享,关注我,每日推送精选面经,面试前,先找面经哥 本人普通本科6年前端经历,从年前开始准备跳槽,一开始感觉自己履历算不上突出,经历过迷茫和沮丧的时候&#xff0…

【计算机毕业设计】基于Springboot的B2B平台医疗病历交互系统【源码+lw+部署文档】

包含论文源码的压缩包较大,请私信或者加我的绿色小软件获取 免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者…

MySQL日志(二):MySQL抖动

一条SQL语句, 正常执行的时候特别快, 但是有时也不知道怎么回事, 它就会变得特别慢, 并且这样的场景很难复现, 它不只随机, 而且持续时间还很短。 看上去, 这就像是数据库“抖”了一下。 今天&…