econml介绍

news2024/10/7 16:20:57

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.coloradmin.cn/o/904046.html

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

相关文章

8.5.tensorRT高级(3)封装系列-基于生产者消费者实现的yolov5封装

目录 前言1. yolov5封装总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程,之前有看过一遍,但是没有做笔记,很多东西也忘了。这次重新撸一遍,顺便记记笔记。 本次课程学习 tensorRT 高级-基于生产者消费者实现的yolov5封装…

日撸java_day63-65

文章目录 Booster代码运行截图 Booster 代码 package machineLearning.adaboosting;import weka.core.Instances;import java.io.FileReader; import java.util.Arrays;/*** ClassName: WeightedInstances* Package: machineLearning.adaboosting* Description:Weighted inst…

计算机提示mfc120u.dll缺失(找不到)怎么解决

在计算机领域,mfc120u.dll是一个重要的动态链接库文件。它包含了Microsoft Foundation Class (MFC) 库的特定版本,用于支持Windows操作系统中的应用程序开发。修复mfc120u.dll可能涉及到解决与该库相关的问题或错误。这可能包括程序崩溃、运行时错误或其…

DAY23

题目一 给定一个全是小写字母的字符串str.删除多余字符,使得每种字符只保留一个,并让最终结果字符串的字典序最小 str "acbc", 删掉第一个c, 得到"abc", 是所有结果字符串中字典序最小的。str "dbcacbc…

Python入门教程 | Python简介和环境搭建

Python 简介 Python是一种高级编程语言,由荷兰人Guido van Rossum于1991年创建。它以其简单易学、可读性强和丰富的生态系统而受到广泛喜爱。它被广泛应用于各个领域,包括Web开发、科学计算、数据分析、人工智能等。 Python的特点 简洁易读&#xff1a…

idea新建web项目

步骤一 步骤二 步骤三 新建两个目录lib、classes 步骤四 设置两个目录的功能lib、classes 步骤五 发布到tomcat

docker项目实战

1、使用mysql:5.6和 owncloud 镜像,构建一个个人网盘 1)拉取mysql:5.6和owncloud镜像 [rootmaster ~]# docker pull mysql:5.6 5.6: Pulling from library/mysql 35b2232c987e: Pull complete fc55c00e48f2: Pull complete 0030405130e3: Pull compl…

MetaMask Mobile +Chrome DevTools 调试Web3应用教程

注:本教程来源网络,根据项目做的整理 写好了WEB3应用,在本地调试用得好好的,但是用钱包软件访问就报莫名的错,但是又不知道是什么原因,排查的过程非常浪费时间 。 因此在本地同一局域网进行调试就非常有必要…

河北人事档案管理系统

河北人事档案管理系统是一个集数字化管理、高效服务、安全可靠于一体的人事档案管理平台,可以集中管理机关事业单位人事档案、农村党员档案、参保职工档案、流动人才档案等,并实现高效、便捷的查阅和调阅服务。 河北人事档案管理系统的建设主要是为了更好…

【C++】模拟实现哈希(闭散列和开散列两种方式)

哈希 前言正式开始map、set 与 unordered_map、unordered_set 的不同遍历结果不同查找速度不同 哈希闭散列概念介绍模拟实现字符串等自定义类型找位置字符串哈希算法二次探测 开散列概念介绍模拟实现存储自定义类型哈希表大小设置为素数 前言 在C98中,STL提供了底层…

论文学习——FOLEY SOUND SYNTHESIS AT THE DCASE 2023 CHALLENGE(声音生成介绍)

文章目录 引言正文AbstractIntroduction问题 2 Problem And Task Definition3. Official Dataset And Baseline第一部分问题 4. Evaluation问题 4.1 Step 1:Objective Evaluation问题 4.2 Step 2: Subjective Evaluation问题 4.3 Execution(非重点&#…

实验一 ubuntu 网络环境配置

ubuntu 网络环境配置 【实验目的】 掌握 ubuntu 下网络配置的基本方法,能够通过有线网络连通 ubuntu 和开发板 【实验环境】 ubuntu 14.04 发行版FS4412 实验平台 【注意事项】 实验步骤中以“$”开头的命令表示在 ubuntu 环境下执行,以“#”开头的…

华为OD机试 - ABR 车路协同场景 - (Java 2023 B卷 100分)

目录 专栏导读一、题目描述1、问题2、条件3、原型 二、输入描述三、输出描述四、Java算法源码五、效果展示1、输入2、输出 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷&am…

七夕特辑(一)浪漫表白方式 用神经网络生成一首情诗

目录 一、准备工作二、用神经网络生成一首诗,代码说明 牛郎织女相会,七夕祝福要送来。祝福天下有情人,终成眷属永相伴。 七夕是中国传统的情人节,也是恋人们表达爱意的好时机。在这个特别的日子里,送上温馨的祝福&…

idea创建javaweb项目,jboss下没有web application

看看下图这个地方有没有web application

mybatis入门环境搭建及CRUD

一、MyBatis介绍 二、MyBatis环境搭建 创建一个maven项目&#xff0c;名为mybatis01&#xff0c;如下&#xff1a; 2.1 pom.xml修改 代码如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.o…

Java-抽象类和接口(下)

接口使用实例 给对象数组排序 两个学生对象的大小关系怎么确定? 需要我们额外指定. 这里需要用到Comparable 接口 在Comparable 接口内部有一个compareTo 的方法&#xff0c;我们需要实现它 在下图中&#xff0c;我们需要将o强制转换为Student 之后调用Arrays.sort(array)即…

电商项目part04 微服务拆分

微服务架构拆分 微服务介绍 英文:https://martinfowler.com/articles/microservices.html 中文:http://blog.cuicc.com/blog/2015/07/22/microservices 微服务拆分时机 如下场景是否需要进行微服务拆分&#xff1f; 代码维护困难&#xff0c;几百人同时开发一个模块&…

01 背包算法

描述 王强决定把年终奖用于购物&#xff0c;他把想买的物品分为两类&#xff1a;主件与附件&#xff0c;附件是从属于某个主件的&#xff0c;下表就是一些主件与附件的例子&#xff1a; 主件附件电脑打印机&#xff0c;扫描仪书柜图书书桌台灯&#xff0c;文具工作椅无 如果…