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

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 在当今数据驱动的决策过程中,因果推断和增益模型扮演了至关重要的角色。因果推断帮助我们理解不同变量间的因果关系,而增益模型则专注于评估干预措施对个体的影响,从而优化策略和行动。然而,要提高这些模型的精确度和适应性,引入元学习器成为了一个创新的解决方案。元学习器通过将估计任务分解并应用不同的机器学习技术,能够有效增强模型的表现。接下来,我们将详细探讨如何利用元学习优化增益模型的性能,特别是通过S-Learner、T-Learner和X-Learner这几种估计器。

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

目录
相关文章
|
自然语言处理 算法 数据挖掘
自蒸馏:一种简单高效的优化方式
背景知识蒸馏(knowledge distillation)指的是将预训练好的教师模型的知识通过蒸馏的方式迁移至学生模型,一般来说,教师模型会比学生模型网络容量更大,模型结构更复杂。对于学生而言,主要增益信息来自于更强的模型产出的带有更多可信信息的soft_label。例如下右图中,两个“2”对应的hard_label都是一样的,即0-9分类中,仅“2”类别对应概率为1.0,而soft_label
自蒸馏:一种简单高效的优化方式
|
13天前
|
机器学习/深度学习 算法 物联网
大模型进阶微调篇(一):以定制化3B模型为例,各种微调方法对比-选LoRA还是PPO,所需显存内存资源为多少?
本文介绍了两种大模型微调方法——LoRA(低秩适应)和PPO(近端策略优化)。LoRA通过引入低秩矩阵微调部分权重,适合资源受限环境,具有资源节省和训练速度快的优势,适用于监督学习和简单交互场景。PPO基于策略优化,适合需要用户交互反馈的场景,能够适应复杂反馈并动态调整策略,适用于强化学习和复杂用户交互。文章还对比了两者的资源消耗和适用数据规模,帮助读者根据具体需求选择最合适的微调策略。
|
4月前
|
固态存储 测试技术 数据库
最新测试揭秘:TDengine 线性扩展能力能否满足你的性能需求?
**摘要:** TDengine 的线性扩展能力通过CPU和磁盘测试得以验证。在CPU测试中,使用TDengine V3.3.0.0和taosBenchmark,随着CPU核数从4增至12,写入性能线性提升,每个CPU增加对应约50W条/秒的提升,保持CPU在瓶颈状态。磁盘IO测试中,使用低速机械盘,增加磁盘数量导致写入性能成比例增长,充分利用新增磁盘IO。测试结果表明,无论CPU还是磁盘扩展,TDengine都能有效利用资源,展示出出色的线性扩展能力。
63 0
|
6月前
|
机器学习/深度学习 移动开发 Go
R语言经济学:动态模型平均(DMA)、动态模型选择(DMS)预测原油时间序列价格
R语言经济学:动态模型平均(DMA)、动态模型选择(DMS)预测原油时间序列价格
|
6月前
|
机器学习/深度学习 移动开发 Go
经济学:动态模型平均(DMA)、动态模型选择(DMS)预测原油时间序列价格
经济学:动态模型平均(DMA)、动态模型选择(DMS)预测原油时间序列价格
|
6月前
|
存储 数据可视化
R语言优化交易系统:用平行坐标图可视化系统参数优化结果
R语言优化交易系统:用平行坐标图可视化系统参数优化结果
|
12月前
|
运维 监控 Serverless
函数计算3.0评测:更强大的功能,更简单的操作,更出色的性价比
函数计算3.0版是一个全托管Serverless计算服务的重大升级版本,它具有更高的弹性,更少的复杂性,更多的灵活性和更好的成本效益。它采用了统一的处理程序签名,消除了服务概念,并支持自定义域名,使函数成为一级实体,便于管理和运维。此版本还改进了函数执行引擎,支持新的计量模式和自定义运行时,并增加了更多种类的触发器类型,使用户可以更加方便地使用云服务和调试。
|
机器学习/深度学习 传感器 算法
单GPU实现20Hz在线决策,最新基于序列生成模型的高效轨迹规划方法解读
单GPU实现20Hz在线决策,最新基于序列生成模型的高效轨迹规划方法解读
148 0
|
Arthas 缓存 运维
如何设计高效的基准场景?揭秘大厂的实战策略!
RESAR性能工程中,场景分为基准、容量、稳定性、异常。每类场景对应不同目标。 基准场景是为找到系统中明显配置及软件Bug,也为容量场景提供可对比的基准数据。基准场景要有确定结论。
153 0
|
人工智能 并行计算 PyTorch
PAI-Blade 通用推理优化:系统优化实践(下)|学习笔记
快速学习 PAI-Blade 通用推理优化:系统优化实践(下)。
170 0
PAI-Blade 通用推理优化:系统优化实践(下)|学习笔记