econml介绍

EconML简介

EconML: A Python Package for ML-Based Heterogeneous Treatment Effects Estimation

EconML是一个通过机器学习方法从观察数据中估计heterogeneous treatment effects的Python包。该软件包是微软研究院ALICE项目的一部分,目的是将最新的机器学习方法与计量经济学结合,从而实现复杂因果推断问题的自动化。EconML希望做到以下几点:

  • 实现同时涉及计量经济学和机器学习的最新方法
  • 保持对effect heterogeneity建模的灵活性(通过随机森林、boosting、lasso和神经网络等技术),同时保留所学模型的因果解释,并同时提供有效的置信区间
  • 使用统一的API
  • 构建标准的Python包以用于机器学习和数据分析

机器学习最大的promise之一是在许多领域实现决策的自动化。许多数据驱动的决策场景的核心问题是对heterogeneous treatment effects的估计,也即:对于具有特定特征集的样本,干预对输出结果的causal effect是什么?简言之,这个Python工具包旨在测量某些干预变量T对结果变量Y的causal effect,控制一组特征X和W,来衡量causal effect如何随X的变化而变化。这个包里实现的方法适用于观察的数据集(非实验或历史)。为了使估计结果具有因果解释,一些算法假设数据中没有未观察到的混杂因子(即同时对T和Y产生影响的因子均被包含在X,W中),而其他一些算法则假设可以使用工具变量Z(即观测变量Z对干预T有影响,但对结果变量Y没有直接影响)。并且包中的大多数算法都可以提供置信区间和推断结果。

EconML包的详细文档见:Welcome to econml’s documentation。

causal inference和heterogeneous treatment effects的使用背景和具体的case见文档。具体的例子有:ABtest的例子,客户细分,软件公司的多元投资归因

 

GITHUB :https://github.com/py-why/EconML

doc::econml.dml.CausalForestDML — econml 0.14.1 documentation

b775496921b74c3aa991ce322df61894.png

CausalForestDML

est = CausalForestDML(discrete_treatment=False)
# 拟合模型
est.fit(y, T, X=X)
# 最终模型结果
est.summary() # 如果dlm最终模型是线性模型,那这里显示线性模型的回归系数,此时是一个二次项模型,还有截距项
est.coef_# The coefficients in the linear model of the constant marginal treatment effect. 最终模型是线性的话,就是线性回归系数
est.intercept_ # 线性模型的截距项# 使用的模型:最终模型 / T~X模型 / Y~X模型
est.model_cate,est.models_t,est.models_y# 模型计算过程中,前面步骤的残差
res_dict = ['y_res', 'T_res', 'X', 'W']
{res_dict[n]:i for n,i in enumerate(est.residuals_)}  # y_res, T_res, X, W,需要cache_values=True

 

from lightgbm import LGBMRegressor
from econml.dml import DML, CausalForestDML######第一步,训练uplift模型########
dmlmodel = CausalForestDML(criterion='mse',n_estimators=240,max_depth=4,min_samples_leaf=2000,min_samples_split=2000,n_jobs=-1,model_y=LGBMRegressor(n_estimators=250, ##max_depth=5,num_leaves=31,learning_rate=0.01,subsample=0.7,min_child_samples=2000,reg_alpha=0.01,reg_lambda=0.01,importance_type='gain'),#model_t=RandomPropensityScoreModel(t),此处可以自定义,但是如果不添加,那么用默认的数据, verbose=0, discrete_treatment=False, honest=True, min_var_fraction_leaf=0.1, min_var_leaf_on_val=True
)dmlmodel.fit(Y=y, T=t, X=x)
#预测部分,在treatment=1时候的结果
pred1=dmlmodel.effect(X=X_test,T0=0,T1=1)
pred2=dmlmodel.effect(X=X_test,T0=0,T1=2)model_path = 'model.pkl'
with open(model_path, 'wb') as f:pickle.dump(dmlmodel, f)######第二步,训练y0基础模型###########
base_model=LGBMClassifier(n_estimators=400,max_depth=4,num_leaves=16,learning_rate=0.2,subsample=0.3,min_child_samples=5000,reg_alpha=0.01,reg_lambda=0.01,importance_type='gain',class_weight=None)
base_model.fit(X_train, y_train, eval_set=(X_test, y_test), eval_names=None, eval_sample_weight=None, eval_class_weight=None, eval_init_score=None, eval_metric='auc', early_stopping_rounds=100,)base_prob = base_model.predict_proba(X_test)

fdc9e938ae3a468bb0a23bf76d67a9bf.png

 

在EconML的LinearDML模型中,有不同的属性用于表示不同的模型部分,如treatment_model_表示干预模型,outcome_model_表示结果模型,final_model_表示最终模型等。

LinearDML模型中,cate_model表示常数边际CATE模型,它是在拟合模型后通过fit方法获得的。你可以使用cate_model属性来对已经拟合好的常数边际CATE模型进行预测操作,计算不同干预值下的CATE。

bc7aab7235f14334b54fffb9d856a7e4.png

 

参考

  1. 微软EconML简介:基于机器学习的Heterogeneous Treatment Effects估计 - 知乎
  2. 因果推断笔记——因果图建模之微软开源的EconML(五) - 知乎
  3. 用户增长因果推断方法_因果路径决策树_wendaJ的博客-CSDN博客
  4. 史上最全因果推断合集-10(滴滴的国际化外卖团队智能补贴实战)_滴滴 单明辉_草帽-路飞的博客-CSDN博客
  5. 应用双重机器学习(Double Machine Learning)计算额度-响应弹性系数 - 知乎
  6. 【机器学习-因果推断】EconML 双重机器学习正交森林上手小案例 n(Python) - 知乎
  7. 一图讲清因果推断 - 搜索结果 - 知乎
  8. 因果推断笔记(五)——自整理因果推断应用 - 知乎
  9. 【因果前沿】因果效应估计综述:挑战、机会和最新进展 - 知乎
  10. 因果推断与反事实预测——利用DML进行价格弹性计算(二十四) - 知乎
  11. 基于表征学习的因果推断技术在快手的实践 - AIQ
  12. 因果推断笔记——DML :Double Machine Learning案例学习(十六)_悟乙己的博客-CSDN博客
  13. 因果论文精读与总结(一)_语洛的博客-CSDN博客

 

 

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

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

相关文章

神经网络改进:注重空间变化,权重参数调整,正则化, 熵的简单理解

目录 神经网络改进:注重空间变化 将高纬空间映射到地位空间便于表示(供给数据) 将地位空间映射到高纬空间进行分类聚合(达到可分状态(K-means)) 神经网络改进:权重参数调整 自注…

【RabbitMQ】RabbitMQ整合SpringBoot案例

文章目录 1、前情提要【RabbitMQ】2、RabbitMQ-SpringBoot案例 -fanout模式2.1 实现架构总览2.2 具体实现2.2.1生产者2.2.1消费者 1、前情提要【RabbitMQ】 【RabbitMQ】消息队列-RabbitMQ篇章 RabbitMQ实现流程 2、RabbitMQ-SpringBoot案例 -fanout模式 2.1 实现架构总览…

maven打出jar中动态替换占位符

使用场景&#xff1a; maven打出的jar中pom.xml动态替换占位符 有些时候某些公共工具jar包被项目引用后发现公共jar的pom.xml中的version依然还是占位符&#xff0c;例如下面 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok<…

相关搜索引擎常用搜索语法(Google hacking语法和FOFA语法)

一&#xff1a;Google Hack语法 Google Hacking原指利用Google搜索引擎搜索信息来进行入侵的技术和行为&#xff0c;现指利用各种搜索引擎并使用一些高级的搜索语法来搜索信息。既利用搜索引擎强大的搜索功能&#xff0c;在在浩瀚的互联网中搜索到我们需要的信息。 &#xff0…

STM32 CubeMX (第二步Freertos任务通信:队列、信号量、互斥量,事件组,任务通知)

STM32 CubeMX STM32 CubeMX ____Freertos任务通信&#xff1a;队列、信号量、互斥量&#xff0c;事件组&#xff0c;任务通知 STM32 CubeMX一、STM32 CubeMX设置时钟配置HAL时基选择TIM1&#xff08;不要选择滴答定时器&#xff1b;滴答定时器留给OS系统做时基&#xff09;使用…

基于docker搭建owncloud Harbor 构建镜像

环境介绍&#xff1a;ContenOS7.9 docker17.12.1-ce 使用mysql:5.6和 owncloud 镜像&#xff0c;构建一个个人网盘。 docker pull owncloud #拉取镜像 docker pull mysql5.6 创建容器 docker run --name owncloud-mysql -p 3306:3306 -e MYSQL\_ROOT\_PASSWORDroot …

Const的区别 学习笔记

C程序设计之const八大用法_哔哩哔哩_bilibili const优先修饰const左边&#xff0c;若左边没有东西&#xff0c;则修饰右边的东西 前两个a,b不是指针由于修饰的是int&#xff0c;是类型&#xff0c;所以a和b的值不能改变 c的类型的指针&#xff0c;const修饰的是int&#xff0…

Azure创建可用性集

什么是可用性集 在Azure中&#xff0c;可用性集&#xff08;Availability Set&#xff09;是一种用于提高虚拟机&#xff08;VM&#xff09;可用性和可靠性的功能。它通过将虚拟机分布在不同的物理硬件和故障域中来提供高可用性。每个故障域都是一个独立的电力和网络故障区域&…

数据同步后数据总条数对不上的问题解决

文章目录 [toc] 1.问题2.解决办法2.1&#xff09;设置合理的线程池参数2.2&#xff09;设置url连接参数2.3) 优化msql的系统参数2.4&#xff09;使用CountDownLatch减法计数器和数据插入的公共方法新开一个事务2.5&#xff09;sql批量注入器执行成功后&#xff0c;当前线程slee…

C++11 智能指针

文章目录 什么是智能指针为什么用智能指针智能指针的类型和各自的功能auto_ptr&#xff08;c98使用的&#xff0c;现已废弃&#xff09;unique_ptrshared_ptrweak_ptr unique_ptr和shared_ptr的简单模拟实现 什么是智能指针 智能指针是一种在编程中用于管理动态分配内存的指针…

DC电源模块如何调节电源输出电压和电流

BOSHIDA DC电源模块如何调节电源输出电压和电流 DC电源模块是一种电源转换器&#xff0c;在电子设备中广泛使用。它可以将交流电转换为直流电&#xff0c;或者将低电压直流电转换为高电压直流电。 DC电源模块通常可以调节输出电压和电流&#xff0c;以满足各种电子设备的不同需…

【C++】 使用红黑树模拟实现STL中的map与set

文章目录 前言1. 对之前实现的红黑树进行一些补充和完善1.1 析构1.2 查找 2. STL源码中map和set的实现3. 改造红黑树封装map和set3.1 红黑树结构修改3.2 map、set的结构定义3.3 insert的封装3.4 insert测试3.5 发现问题并解决3.6 红黑树迭代器实现3.7 封装set和map的迭代器并测…

RK3399平台开发系列讲解(内核调试篇)Valgrind使用案例

🚀返回专栏总目录 文章目录 一、使用未初始化的内存案例二、内存泄露三、在内存被释放后进行读/写案例四、从已分配内存块的尾部进行读/写案例五、两次释放内存案例沉淀、分享、成长,让自己和他人都能有所收获!😄 📢Valgrind 是一个开源的内存调试和性能分析工具,用于…

Electron 报gpu_process_host.cc(951)] GPU process launch faile错误

解决方法&#xff0c;在入口js文件中&#xff0c;添加如下代码: app.commandLine.appendSwitch(no-sandbox)

Eltima USB Network Gate 10.0 Crack

USB Network Gate -通过网络共享USB 设备 USB Network Gate (前身为以太网USB控制器USB) 轻松的通过网络(Internet/LAN/WAN)分享您的一个或者多个连接到您计算机的USB设备。 无论您身处异国还是近在隔壁办公室&#xff0c;您都可以轻松使用远程扫描仪、打印机、摄像头、调制解…

CVE-2015-5254漏洞复现

1.漏洞介绍。 Apache ActiveMQ 是美国阿帕奇&#xff08;Apache&#xff09;软件基金会所研发的一套开源的消息中间件&#xff0c;它支持 Java 消息服务&#xff0c;集群&#xff0c;Spring Framework 等。Apache ActiveMQ 5.13.0之前 5.x 版本中存在安全漏洞&#xff0c;该漏…

《HeadFirst设计模式(第二版)》第十一章代码——代理模式

代码文件目录&#xff1a; RMI&#xff1a; MyRemote package Chapter11_ProxyPattern.RMI;import java.rmi.Remote; import java.rmi.RemoteException;public interface MyRemote extends Remote {public String sayHello() throws RemoteException; }MyRemoteClient packa…

SpringBoot基于Zookeeper实现分布式锁

文章目录 问题背景前言实现搭建Zookeeper容器引入依赖ZK客户端的配置类ZK客户端的工厂类注入bean构建测试类 问题背景 研究分布式锁&#xff0c;基于ZK实现&#xff0c;需要整合到SpringBoot使用 前言 参考自SpringBoot集成Curator实现Zookeeper基本操作&#xff0c;Zookeeper入…

ssm+vue校园美食交流系统源码

ssmvue校园美食交流系统源码和论文026 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 摘 要 随着现在网络的快速发展&#xff0c;网上管理系统也逐渐快速发展起来&#xff0c;网上管理模式很快融入到了许多商…

el-table 实现动态表头 静态内容 根据数据显示动态输入框

直接放代码了 <el-table:data"form.tableDataA"borderstripestyle"width: 100%; margin-top: 20px"><el-table-columnv-for"(category, categoryIndex) in form.tableDataA":key"categoryIndex":label"category.name&qu…