文章目录

  • 一、概要
    • 什么是因果推断?
    • 因果推断的必要性
      • 场景限制
      • 技术限制
    • 因果推断的应用场景
  • 二、原理
    • 框架
    • 因果估计器
      • S-Learner
      • T-Learner
      • X-Learner
  • 三、案例分享
    • 案例背景
    • 数据情况
    • 代码

一、概要

什么是因果推断?

在讲因果推断之前,我们在AI聊的更多的是相关性(correlation),对于相关性,我们可以有如下定义:

  • 在观测到的数据分布中,变量X与输出Y相关,如果我们观测到X的分布,就可以推断出Y的分布

在相关性在AI界辗转多年后,又提出了因果性,也就是因果推断(Causal Inference),对此也有如下定义:

  • 在改变变量X后,输出Y随着这种改变也随之变化, 则说明了X对Y的因果性

因果推断的必要性

与其说因果推断的必要性,不如切入到目前AI界的碰壁点讲起,可以从以下两点分析:

场景限制

  • 许多应用场景无法直接做A/B test,如医药实验/政策落实等。这时候就需要因果推断来模拟场景的实验性。
  • 即使有A/B test的可能,企业也很难承担实验成本;另一方面,用户体验感也会变得不好。

技术限制

  • 现有机器学习都是基于相关关系去进行无限拟合(即使是深度学习),模型在上线时会受到不同因素而导致不稳定、泛化能力差。
  • 现有机器学习普遍缺乏可解释性,即使有,也非常有限。
  • 仅仅依靠模型对未来结果的预测,无法提供有效的行动策略选项,就会导致预测和决策之间存在巨大的差异。

因果推断的应用场景

  • 用户福利/补贴/优惠券发放(左上)
  • 用户广告投放(右上)
  • 用户折扣发放(左下)
  • 广告渠道投放(右下)

二、原理

框架

在讲背后原理前,先放个目前因果推断各种工具的大框架

因果估计器

这次我们分析一下上图框架中间的因果效应评估(Causal Effect Estimation),因为背后会运用不同的估计器estimator,估计器主要分为以下八个大模块,每个模块的估计器都对应着不同的算法逻辑和思路。

  • Meta Learner
  • Double Mahine Learning
  • Doubly Robust
  • Causal Tree
  • Deep IV
  • Nonparametric IV
  • Approximation Bound
  • Rscore

目前比较主流的估计器是Meta Learner,而对应Meta Learner又可以分为以下三种策略:

S-Learner

  • 训练:通过现有模型对干预和不干预的数据直接训练建模(干预措施作为特征存在)
  • 预测:分别对用户被干预和不被干预的概率P进行预测并相减,得到因果值
  • 优点:只依赖于一个模型,避免多模型带来的累计误差
  • 缺点:没有对Uplift直接建模,而是间接做减法得到,需要额外的特征工程

T-Learner

  • 训练:通过现有模型对干预和不干预的数据分开进行训练建模(不存在干预特征)
  • 预测:通过两个模型的预测值计算Uplift
  • 优点:无需额外的特征工程
  • 缺点:存在双模型带来的累计误差,当干预组和对照组之间的数据量差异较大时,对结果影响比较大

X-Learner

  • 训练:先对干预和不干预的数据分开进行建模,然后用干预组的模型预测不干预的数据,用不干预的模型预测干预的数据,最后计算两者预测值之差,将该差值作为新的拟合目标,分别构建两个新模型
  • 预测:两个新模型分别预测出差值,并通过加权方式求出Uplift值
  • 优点:解决了对照组和实验组之间数据不平衡的问题
  • 缺点:多模型带来了误差的累计,模型增加,计算成本高

三、案例分享

案例背景

  • 一家销售软件的初创公司向其客户提供两项激励措施:技术支持(Tech Support)和折扣(Discount)
  • 该公司拥有2000名客户的这两项投资的历史数据,以及这些客户在投资一年后产生的收入(Revenue)
  • 他们希望使用这些数据来了解现有客户/新客户的最佳激励政策,以最大限度地提高投资回报率ROI

数据情况

代码

将该企业的历史数据,输入到Estimator模型,并指定Treatment和Outcome

from ylearn import Why
import numpy as np
import pandas as pd
import warnings
import matplotlib.pyplot as plt
import seaborn as sns
from imblearn.over_sampling import SMOTE
import xgboost as xgb
from ylearn.estimator_model.meta_learner import SLearner, TLearner, XLearner
warnings.filterwarnings("ignore")treatment = ['Tech Support','Discount']
outcome = 'Revenue'
instrument = 'Size'
adjustment = [i for i in data.columns[:-2]]why = Why(random_state=2022)
why.fit(data, outcome, treatment = treatment, instrument = instrument)

Estimator会对历史数据进行训练预估,并得到不同Treatment的因果效应值Causal Effect
下图展示了对比没有干预情况,如果采取Tech Support/Discount,会获得多大的效应增益

effect=pd.DataFrame(why.causal_effect(control = [0,0]))
effect

使用反事实推断,对没给予过Tech Support的994个样本使用反事实推断,假设他们都获得了Tech Support

import matplotlib.pyplot as plt
whatif_data= data[data['Tech Support'] == 0]
out_orig=whatif_data[outcome]value_5=whatif_data['Tech Support'].map(lambda _:1)
out_whaif=why.whatif(whatif_data,value_5,treatment='Tech Support')print('Selected sample:', len(whatif_data))
print(f'Mean {outcome} if Tech Support is 0:\t{out_orig.mean():.3f}' )
print(f'Mean {outcome} if Tech Support is 1:\t{out_whaif.mean():.3f}' )plt.figure(figsize=(8, 5), )
out_orig.hist(label='Without tech support',bins=30,alpha=0.7)
out_whaif.hist(label='With tech support',bins=30,alpha=0.7)
plt.ylabel(f'{outcome}')
plt.title(f'what if offer tech support')
plt.legend()

从结果看出如果提供Tech Support,带来了平均15710 – 9302 = 6408的效果增益

使用反事实推断,对没给予过Discount的979个样本使用反事实推断,假设他们都获得了Discount

import matplotlib.pyplot as plt
whatif_data= data[data['Discount'] == 0]
out_orig=whatif_data[outcome]value_5=whatif_data['Discount'].map(lambda _:1)
out_whaif=why.whatif(whatif_data,value_5,treatment='Discount')print('Selected sample:', len(whatif_data))
print(f'Mean {outcome} if Discount is 0:\t{out_orig.mean():.3f}' )
print(f'Mean {outcome} if Discount is 1:\t{out_whaif.mean():.3f}' )plt.figure(figsize=(8, 5), )
out_orig.hist(label='Without Discount',bins=30,alpha=0.7)
out_whaif.hist(label='With Discount',bins=30,alpha=0.7)
plt.ylabel(f'{outcome}')
plt.title(f'what if offer Discount')
plt.legend()

从结果看出如果提供Discount,带来了平均14906 – 10605 = 4301的效果增益

我们通过因果推断给出关于Tech Support和Discount最优的决策路径


因果推断 之 初介绍 + 案例分析相关推荐

  1. 因果推断dowhy之-医学案例中的反事实分析

    0x01. 背景 在这个例子中,我们知道三个观察变量的因果结构,我们想得到一些反事实的问题,例如"如果我采用了医生的不同建议,会发生什么?" 更具体地说,患有严重眼干症的爱丽丝决定 ...

  2. 因果推断笔记——数据科学领域因果推断案例集锦(九)

    文章目录 1 腾讯看点:启动重置问题 1.1 观测数据 . 实验数据的理论介绍 2.2 启动重置问题阐述:短期.长期.异质 2.3 短期影响的解决 2.4 长期影响构造准实验 2.5 异质性用户 1. ...

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

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

  4. 因果推断中期学习小结

    废话文学一下:入门学习因果推断三周,总算是入了个门 来集结一下前十篇分别是: 因果推断笔记--因果图建模之微软开源的dowhy(一)[1] 因果推断笔记-- 相关理论:Rubin Potential. ...

  5. 因果推断笔记——自整理因果推断理论解读(七)

    之前有整理过一篇:因果推断笔记-- 相关理论:Rubin Potential.Pearl.倾向性得分.与机器学习异同(二) 不过,那时候刚刚开始学,只能慢慢理解,所以这边通过一轮的学习再次整理一下手里 ...

  6. 留言赠书|因果推断与机器学习,终于有本书能讲明白啦!

    随着大数据时代的来临,机器学习技术突飞猛进,并且在人类社会中扮演越来越重要的角色. 例如,你可能已经习惯了每天使用谷歌.百度.Bing等搜索引擎查找信息,或者在电商网站和视频网站的推荐系统 ,以及利用 ...

  7. 因果推断4--Causal ML(个人笔记)

    目录 1 安装教程及官方文档 1.1 pip安装 1.2 API文档 1.3 代码仓库 2 Uplift模型与主要方法介绍 2.1 发放代金券 2.2 多treatment 2.3 实验方法 3 ca ...

  8. 因果推断笔记——CV、机器人领域因果推断案例集锦(十)

    之前一篇是写在数据科学领域使用因果推断的案例,因果推断笔记--数据科学领域因果推断案例集锦(九) 主要应用的领域在:智能营销.一些机制干预的有效性.智能补贴等,那么可以看看在不常见领域的案例,拓宽一下 ...

  9. 基于因果推断的根因分析

    前言 对复杂信息系统进行运维的相关研究工作中,一个子领域是"根因定位".这个子领域的一种问题定义是:在复杂系统的大量监控变量(如CPU利用率.响应时间)中,找到"根因&q ...

  10. 【因果学习】因果推断分析

    #01.因果推断概念 相关不是因果,事物间的因果关系常常是我们经常要面对和分析的问题,研究因果的意义是我们需要理解数据并据此做出进一步的行动和决策.比如对于我们而言,常常会想要知道"学历越高 ...

最新文章

  1. 面向人工智能的计算机体系结构
  2. RecycleView 各个条目的信息混乱
  3. 面试官 | count(1)、count(*) 、count(列名) 有什么区别?
  4. go run main.go 参数_介绍一款Go项目热编译工具gowatch
  5. Nginx学习之一:从权威途径(wiki)了解Nginx
  6. Java8实战 阅读二周目感想
  7. win10添加桌面图标到开始屏幕
  8. ASP.NET Core 中文文档 第四章 MVC(3.7 )局部视图(partial)
  9. 用平均的方法去除噪声
  10. arm -linux开发产品,arm是什么意思_arm的翻译_音标_读音_用法_例句_爱词霸在线词典...
  11. MATLAB之极限、积分、微分
  12. Qt组件-QLabel
  13. 云鲸扫拖一体机器人说明书_云鲸小白鲸扫拖一体机器人 真实的测评带你走进智能化家居时代...
  14. 思维导图(1-20)
  15. 在本地计算机无法启动t6,急急急急用友T6启动服务显示依存服务或组无法启动105...
  16. Android开发之将Edittext输入弹出的软键盘设置搜索确定键。详细代码,已验证可用。...
  17. 地铁运行速度测试软件,又一项世界级领先技术,解读地铁车速是谁在检测?
  18. winformskin_推荐几款Winform下的皮肤控件!
  19. Giga-pixel照相机诞生了
  20. PbootCms新建自定义标签

热门文章

  1. 史上最详细清样/校样(Proof)处理流程--Hindawi(二)
  2. xp打开html页面不正常显示不出来,xp打开网页图片加载不出来如何解决
  3. Linux安装git报错make[1]: *** [perl.mak] 错误 2
  4. 爬虫爬取电影天堂电影链接
  5. HTML Canvas 刮刮卡抽奖效果的实现
  6. 电脑出现ntldr is missing无法开机怎么办
  7. 高清沉浸式体验:基于 RTC 的全景 8K@120fps FoV 实践
  8. 近期一些我寨采用的新芯片资料汇总(更新Rk3066)
  9. Plotting data
  10. 电力物联网大数据平台架构及应用