目录

1 安装教程及官方文档

1.1 pip安装

1.2 API文档

1.3 代码仓库

2 Uplift模型与主要方法介绍

2.1 发放代金券

2.2 多treatment

2.3 实验方法

3 causalml.inference.tree module

3.1 UpliftTreeClassifier

3.2 UpliftRandomForestClassifier

3.3 CausalRandomForestRegressor

4 待补充

5 问题


1 安装教程及官方文档

1.1 pip安装

pip install causalml

1.2 API文档

https://causalml.readthedocs.io/en/latest/causalml.html

1.3 代码仓库

github: https://github.com/uber/causalml/

CausalML简介

CausalML是一个基于Python的因果学习开源项目。最早为Uber项目定制、内部开源,而后正式成为开源项目。其提供了丰富的模型选择,例如常用的Meta-Learner和因果树模型,方便在实践中作对比和选择。同时还提供例如模拟数据生成、模型可视化、模型评估等一系列配套工具。其目标是用于解决业务实践问题,尤其是在计算速度和数据规模方面能够达到业界标准并持续优化。

赵振宇,腾讯数据科学总监。先后在Yahoo,Uber,腾讯任职。负责实验、因果推断、机器学习、产品分析、平台建设、开源软件、应用研究方面的工作。CausalML发起者之一,《关键迭代可信赖的线上对照实验》译者之一。

图表 1:CausalML图示

图表 2:CausalML模块概览

2 Uplift模型与主要方法介绍

2.1 发放代金券

在互联网平台中,如果出现了成规模的用户流失,市场营销部门常常采用发放代金券的方式来召回流失用户。那么向哪些用户投放代金券效果最好呢?在数据科学时代,一个很常见的思路是采用机器学习方法来对用户建模,预测哪些用户最有可能回流,然后进行定向投放。但有时候实际结果表明,这种基于模型的投放组效果会不如随机投放组。

投放是有效果的,预测也是准确的,那么为什么基于模型的投放组效果反而不如随机投放呢?原因其实很简单,自然回流概率高的用户,不管是否有代金券,都会回来。将代金券发给必定会回来的用户,并不能产生增益。为了解决这一问题,我们需要将现有的机器学习算法与因果推断相结合。

介绍具体主要模块之前,我们先来介绍一下相关背景。和前面代金券的例子类似,在广告营销中,我们可以根据有无投递广告和是否购买产品来将用户划分成四类(见图四):总是购买、劝退用户、策略提升用户和总

图表 3:广告营销影响的四类用户

如果我们将没被投放广告的用户设为对照组,将被投放广告的用户设为实验组。从整体上来评估,广告对购买率的提升效果 = 实验组购买率 – 对照组购买率,这实际上是因果推断中的ATE (Average Treatment Effect)。通过代金券发放的例子,我们知道这种评估方式是有误差的。作为改进,我们需要从个体角度来评估效果,为此就引入了HTE(Heterogeneous Treatment Effect) 的概念。简单来说,相比于ATE,HTE是一个更专注于个体差异化效果的指标。具体定义见下图:

图表 4:HTE

因为ITE是不能够通过观测得到的,所以我们采用CATE (Conditional ATE) 作为实际的指标:广告对用户i的效果 = E[Y|Treatment, Xi] - E[Y|Control, Xi]。Xi表示用户i所具有的相关特征。这就是Uplift模型的核心思想。有了CATE的概念,接下来要做的就是该如何估计CATE。常见的方法有Meta-learners和Uplift树模型两种。

Meta-learners的基本想法是组合既有的传统机器学习模型。首先定义一个base learner,一般就是一个传统的机器学习模型,任何一个给定X可以预测Y的模型都可以。然后采用不同的混合方式,比如S Learner,T Learner,X Learner,R learner。见下图:

图表 5:Meta-learners

Uplift树模型的基本想法是通过改变树模型的损失函数来估计CATE(见图6)。与传统分类树的区别如下:

图表 6:Uplift图示参考

使用Uplift模型定位“策略提升用户”可以分成三个步骤:

1. 数据收集实验:目标是为Uplift模型收集训练数据。给对照组所有用户不发促销,给实验组所有用户发促销。

2. 训练Uplift模型:收集实验数据和用户特征,训练Uplift模型。训练完成的Uplift模型可以根据用户特征X,估计实验效果CATE。

3. 验证模型效果实验:设置对照组为无促销,设置两个实验组,实验组1为随机选取10%用户发促销,实验组2位根据Uplift模型预测,选取预估实验效果在top10%的用户发促销。

根据以上步骤,在广告营销的场景中,最优策略是使用Uplift模型定位策略提升用户群(投放效果为正向),并针对这部分用户进行投放。这一策略和直接使用机器学习模型的不同见下图:

图7:Uplift模型 vs 机器学习模型

2.2 多treatment

有些场景下,存在多个实验组,且不同的实验组成本不相同。例如:

图8:多tretment

们会希望在优化转化率的同时,也考虑成本:将9折优惠券发给对于9折实验效果敏感的用户,将8折优惠券发给只对8折实验效果敏感的用户。对于这种场景,CausalML也提供了对应的价值优化方法。方法的想法是考虑成本,将成本计入CATE中,用基于X Learner的方法,在多个实验组并存的情况下尝试将最优的实验组挑出来。

2.3 实验方法

业界常用的实验方法可以总结成以下几种:A/B测试基本覆盖了大多数实验场景;网络效应实验适用于分流时用户之间存在干扰的情况,也即因果推断中的interference问题;Uplift模型适用于对HTE的估计;灰度放量试验适用于全量上线有风险,需要实时监控修正再逐步放开的情况;MAB即多臂老虎机,适用于在多实验组中进行价值优化;Interleaving基于同一个用户对于排序方法A和B的偏好,适用于评估排序算法对长尾查询的效果。

图表 9:业界实验领域概览图表

参考:

  1. causalml package — causalml documentation
  2. CausalML: 基于Python的因果学习开源项目_模型_用户_效果
  3. Zhao, Zhenyu, and Totte Harinen. "Uplift modeling for multiple treatments with cost optimization." In 2019 IEEE International Conference on Data Science and Advanced Analytics (DSAA), pp. 422-431. IEEE, 2019.

  4. 因果推断笔记——python 倾向性匹配PSM实现示例(三)_悟乙己的博客-CSDN博客_python 因果推断

  5. PSM倾向得分匹配法【python实操篇】_水满船头滑的博客-CSDN博客_python psm

  6. 因果推断学习笔记三——Uplift模型_米法·的博客-CSDN博客_uplift模型

  7. CausalML创始人赵振宇:基于Python的开源框架玩转因果学习|周日直播·因果科学读书会_腾讯新闻

  8. 因果推断与反事实预测——利用DML进行价格弹性计算(二十四)_悟乙己的博客-CSDN博客_dml算法

  9. 因果推断杂记——因果推断与线性回归、SHAP值理论的关系(十九)_悟乙己的博客-CSDN博客_shap 回归

3 causalml.inference.tree module

3.1 UpliftTreeClassifier

from causalml.inference.tree import UpliftTreeClassifier

Uplift Tree Classifier for Classification Task.

A uplift tree classifier estimates the individual treatment effect by modifying the loss function in the classification trees.

The uplift tree classifier is used in uplift random forest to construct the trees in the forest.

import numpy as np
import pandas as pdfrom causalml.dataset import make_uplift_classification
from causalml.inference.tree import UpliftRandomForestClassifier
from causalml.metrics import plot_gainfrom sklearn.model_selection import train_test_split
import causalml
causalml.__version__
df, x_names = make_uplift_classification()

 Look at the conversion rate and sample size in each group
df.pivot_table(values='conversion',index='treatment_group_key',aggfunc=[np.mean, np.size],margins=True)

clf = UpliftTreeClassifier(control_name='control')
clf.fit(df_train[x_names].values,treatment=df_train['treatment_group_key'].values,y=df_train['conversion'].values)
p = clf.predict(df_test[x_names].values)
df_res = pd.DataFrame(p, columns=clf.classes_)
df_res.head()

uplift_model = UpliftRandomForestClassifier(control_name='control')
df_res = uplift_model.predict(df_test[x_names].values, full_output=True)
print(df_res.shape)
df_res.head()

 

3.2 UpliftRandomForestClassifier

from causalml.inference.tree import UpliftRandomForestClassifier

from causalml.inference.tree import CausalRandomForestRegressor, CausalTreeRegressor

3.3 CausalRandomForestRegressor

UpliftRandomForestClassifier和CausalRandomForestRegressor的区别?????

4 待补充

1、特征选取方式

2、CausalRandomForestRegressor学习

3、因果推断与线性回归:DML

4、多treatment、多treatment多label

5 问题

1、auuc评估有什么弊端?

答:样本不随机,分桶后偏差。可以使用偏向性匹配拉齐在评估。

2、多treatment的auuc评估评估,样本间分布不均匀怎么做拉齐?

答:评估时候考虑各样本的占比。

3、DML可以解决离散tretamnet,和vcnet、DRNtet差异?

4、DML在工业好像使用的较多,结合ps?

5、哪些需要随机数据才可建模,哪些观测数据也可以建模呢?

因果推断4--Causal ML(个人笔记)相关推荐

  1. 推荐系统的因果推断:Causal Inference for Recommender Systems(RecSys,2020)

    文章目录 说明 1. 推荐和因果 2. 理论做法 2.1. 符号说明 2.2. 潜在结果下的矩阵分解 2.3. 忽略性假设 2.4. 经典因果推断 3. 去混杂因素推荐器 3.1. 曝光模型 3.2. ...

  2. python 因果推断_因果推断书Causal inference:What if简介(附:因果推断书单推荐)...

    Causal Inference: What If 内容简介:本书由哈佛大学 Miguel Hernan.Jamie Robins 教授编著,对因果推理的概念和方法做了系统性阐述.该书在知乎等各大平台 ...

  3. 因果推断(二)-Causal effect 因果效应推理

    1.因果效应推理定义 套用一个发券和购买转化率的关系,已知发优惠券与购买转化率有因果关系,发优惠券是因,购买转化率是果,我们想知道,当发券的情况下,购买转化率会增加多少? 2.因果效应推理估计对象 估 ...

  4. 耿直:统计学中的因果推断问题(Causal Inference)

    来源:量化研究方法 本文约3000字,建议阅读5分钟. 数学科学学院耿直老师为你介绍统计学中的因果推断问题. 今天,小编带来了数学科学学院耿直老师关于统计学中因果推断问题的介绍.文中介绍了几种分析因果 ...

  5. 因果推断杂记——因果推断与线性回归、SHAP值理论的关系(十九)

    文章目录 1 因果推断与线性回归的关系 1.1 DML的启发 1.2 特殊的离散回归 = 因果? 2 因果推断中的ITE 与SHAP值理论的思考 2.1 一些奇思妙想 2.2 因果推断 -> s ...

  6. 丁鹏:多角度回顾因果推断的模型方法

    来源:集智俱乐部本文约23000字,建议阅读20+分钟 本文整理自丁鹏老师的8篇短文,从多角度回顾了因果推断的各种模型方法. [ 导读 ] 推断因果关系,是人类思想史与科学史上的重要主题.现代因果推断 ...

  7. 多角度回顾因果推断的模型方法

    来源:AI干货知识库 推断因果关系,是人类思想史与科学史上的重要主题.现代因果推断的研究,始于约尔-辛普森悖论,经由鲁宾因果模型.随机试验等改进,到朱力亚·珀尔的因果革命,如今因果科学与人工智能的结合 ...

  8. 因果推断 | 因果关系推断-系列电子书资源

    因果推断 | 因果关系推断-系列电子书资源 不得不看的书! 00.『为什么』关于因果关系的新科学 <The Book of Why: The New Science of Cause and E ...

  9. 现代统计的思想飞跃,因果推断!

    丁鹏 | 作者 雷博文.孔令仁 | 编辑 <数学文化>2021/第 12 卷第 2 期 | 来源 1. 引言 探求事物的原因,是人类永恒的精神活动之一.从古希腊的哲学到中国先秦的诗歌,都充 ...

  10. 因果推断——现代统计的思想飞跃

    来源:数学文化"公众号 编辑:李达 审核:范杰.李祺垣 1 引言 探求事物的原因,是人类永恒的精神活动之一.从古希腊的哲学到中国先秦的诗歌,都充满了对原因的追问和对因果关系的思考.比如,亚里 ...

最新文章

  1. yii2手动添加图片处理插件Imagine
  2. python声音分类_Python音频信号分类MFCC特征神经网络
  3. 7.0上的新KIE持久性API
  4. 通信中的频谱效率与能量效率
  5. string concat_Java String concat()方法与示例
  6. JS实现的一个验证码,可以在前端验证后在提交action
  7. html简单弹窗代码_真的!!!两行css代码实现瀑布流,html,css最简单的瀑布流实现方式且没有缺点!...
  8. ArcGis学习资料汇总整理
  9. DS18B20 数字温度传感器实验
  10. 使用Termux进行Linux系统的ubuntu版本安装
  11. 如何防御DDoS攻击与CC攻击?
  12. 合工大路强java第四次作业第5题
  13. 如何做好国产三维CAD软件的研发?
  14. c语言13 6,C语言学习笔记13
  15. 宝塔面板+NextCloud文档云 搭建流程
  16. java开发面试复试_【java开发初轮技术面试以后 复试一般问什么?】-看准网
  17. 多旋翼飞行器设计与控制(一)—— 绪论
  18. 分享4个不为人知的高质量APP,每一个都实力爆棚!
  19. matlab 输出数,matlab入门(变量、数值运算、输出)
  20. 微信小程序云开发 mysql_微信小程序云开发数据库

热门文章

  1. c语言习题集的全部答案,C语言习题集(含答案)
  2. 计算机毕业设计——基于HTML(品优购)电商购物商城项目设计与实现(html前端源码和论文设计)
  3. 操作系统:进程控制与调度
  4. 训练集和测试集的标准化中的坑!!!
  5. 计算机操作系统试题库系统论文,计算机操作系统试题库(原)
  6. 用python画一个简单卡通人物_Python绘制可爱的卡通人物 | 【turtle使用】-Go语言中文社区...
  7. 蓝牙定位技术在智慧养老系统中的应用
  8. [KM算法]hdoj 3722:Card Game
  9. ARKit之路-ARKit原理
  10. HTML5之img标签