用机器学习算法进行提升建模和因果推理的python包

causalml的Python项目详细描述



PyPI VersionBuild StatusCII Best Practices

免责声明

这个项目是稳定的,正在酝酿长期的支持。它可能包含新的实验代码,api可能会更改。

因果ml:用ml进行提升建模和因果推理的python包

因果ml是一个python包,它使用基于最新的机器学习算法提供了一套提升建模和因果推理方法 研究。它提供了一个标准接口,允许用户估计条件平均治疗效果(cate)或个别治疗 实验或观测数据的影响。本质上,它估计了干预对使用者的结果的因果影响。 具有观测到的特征X,对模型形式没有很强的假设。典型用例包括

  • campaign targeting optimization:提高广告活动投资回报率的一个重要杠杆是将广告定位于在给定的关键绩效指标(如参与度或销售额)中有良好响应的一组客户。cate通过从a/b实验或历史观察数据中估计广告曝光对kpi的影响来识别这些客户。

  • Personalized Engagement:一家公司有多种与客户互动的选择,例如在向上销售或用于通信的消息传递渠道中有不同的产品选择。利用cate估计每个客户的异构处理效果,并结合处理方案组合,得到一个最优的个性化推荐系统。

包当前支持以下方法

  • 基于树的算法
    • 关于kl散度、欧氏距离和卡方的提升树/随机森林
    • 背景处理选择上的提升树/随机森林
  • 元学习算法
    • S-学习者
    • T-学习者
    • X-学习者
    • R-学习者

安装

先决条件

安装依赖项:

$ pip install -r requirements.txt

从PIP安装:

$ pip install causalml

从源安装:

$ git clone https://github.com/uber-common/causalml.git
$ cd causalml
$ python setup.py build_ext --inplace
$ python setup.py install

快速启动

S、T和X学习者的平均治疗效果评估

fromcausalml.inferenceimportLinearRegressionSLearnerfromcausalml.inferenceimportXGBTLearner,MLPTLearnerfromcausalml.inferenceimportBaseXLearnerfromcausalml.datasetimportsynthetic_datay,X,treatment,_=synthetic_data(mode=1,n=1000,p=5,sigma=1.0)lr=LinearRegressionSLearner()te,lb,ub=lr.estimate_ate(X,treatment,y)logger.info('Average Treatment Effect (Linear Regression): {:.2f} ({:.2f}, {:.2f})'.format(te,lb,ub))xg=XGBTLearner(random_state=42)te,lb,ub=xg.estimate_ate(X,treatment,y)logger.info('Average Treatment Effect (XGBoost): {:.2f} ({:.2f}, {:.2f})'.format(te,lb,ub))nn=MLPTLearner(hidden_layer_sizes=(10,10),learning_rate_init=.1,early_stopping=True,random_state=42)te,lb,ub=nn.estimate_ate(X,treatment,y)logger.info('Average Treatment Effect (Neural Network (MLP)): {:.2f} ({:.2f}, {:.2f})'.format(te,lb,ub))xl=BaseXLearner(learner=XGBRegressor(random_state=42))te,lb,ub=xl.estimate_ate(X,p,treatment,y)logger.info('Average Treatment Effect (XGBoost): {:.2f} ({:.2f}, {:.2f})'.format(te,lb,ub))

贡献

我们欢迎社区贡献者参与这个项目。在开始之前,请先阅读我们的code of conduct并查看contributing guidelines

版本控制

我们在changelog中记录版本和更改。

许可证

此项目是在Apache2.0许可下授权的—有关详细信息,请参阅LICENSE文件。

参考资料

论文

  • 尼古拉斯J拉德克利夫和帕特里克D苏里。基于显著性提升树的真实世界提升模型。白皮书TR-2011-1,随机解决方案,2011年。
  • 赵燕,小芳,李大卫。多种处理和一般响应类型的抬升模型。2017年会议记录 暹罗国际数据挖掘会议,暹罗,2017年。
  • 舍仁·克孜尔、贾斯吉特·塞孔、彼得·比克尔和本·余。使用机器学习估计异质治疗效果的金属制造者。 《美国国家科学院院刊》,2019年。
  • 聂新坤和斯特凡打赌。非均匀处理效果的准预言估计。大西洋因果推断会议,2018年。

相关项目

  • uplift:r中的提升模型
  • grf:在r
  • rlearner:实现r-learner的r包
  • DoWhy:基于朱迪亚·珀尔微积分的python因果推理
  • EconML:一个python包,它实现了来自计量经济学和机器学习方法的异构处理效果估计器

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java应用程序不是在Eclipse中运行,而是在命令行中运行   swing Java图形组件问题。似乎找不到错误   我需要键盘。close();让代码正常工作?   Springboot中的java HttpSession   抽象语法树我想添加一个语句。我试图解析它,java解析器异常被抛出。如何克服它?   java Hibernate:清理会话   具有不连续子集的java划分问题   java正则表达式查找最后一个冒号后的字符串   java从SpringShell执行OS命令   Java扫描器字符串输入   java字符串索引越界异常(charAt)   java执行器服务终止被卡住   Springockito没有继承java@ContextConfiguration   java如何为一个servlet映射多个url   java安卓获取命令的stderr   java生成类型。表:数据库中的大数字   安卓 Getter Setter返回NothingJava