【python因果库实战2】使用银行营销数据集研究营销决策的效果2

目录

联系方式的效应

逆概率加权:首次尝试


联系方式的效应

我们已经完成了大部分艰苦的工作,即理解数据并识别处理变量和混杂因素。现在我们可以开始使用 Causal Inference 360 的工具了。

我们将首先研究联系方式 'contact' 的因果效应。具体来说,我们将考虑平均因果效应,比较如果每个人都通过手机联系与如果每个人都通过座机联系时,正面结果(开设定期存款)的发生率。

我们将以两种不同的方式估计这种效应:逆概率加权(IPW)和标准化。你可以查看各自的笔记(IPW、标准化)来了解更多细节,并尝试第三种方法,即双重稳健回归。回想一下,在观察数据的因果推断中,真实的因果效应永远是未知的:对于每个客户,我们只能观察到他们被分配的干预措施对应的一个结果,我们不能回到过去进行随机实验(随机分配客户进行干预)。通过以不同的方式估计效应,依赖不同的假设,如果结果相近,我们可以增加对所获得结果的信心。

逆概率加权:首次尝试

逆概率加权(IPW)需要一个模型来估计给定混杂因素 X 时处理分配的概率(称为倾向性)。这里我们将从简单的逻辑回归开始。

from sklearn.linear_model import LogisticRegression
from causallib.estimation import IPWlr = LogisticRegression(solver='lbfgs', max_iter=1000)
#lr = LogisticRegression(penalty='l1', solver='saga', max_iter=1000)
#lr = GradientBoostingClassifier()
ipw = IPW(lr)
ipw.fit(X, a)
IPW(clip_max=None, clip_min=None, use_stabilized=False, verbose=False,learner=LogisticRegression(max_iter=1000))

接着,估计两种干预措施下的正面结果发生率(如果所有人都通过手机联系则为 0,如果所有人都通过座机联系则为 1)只需要调用 IPW 对象的 `estimate_population_outcome` 方法即可。

outcomes = ipw.estimate_population_outcome(X, a, y)
outcomes
0    0.156671
1    0.226395
dtype: float64

 然而,在接受这个结果之前,我们需要检查 IPW 模型是否存在我们可以通过观察数据检测到的问题。我们使用 Causal Inference 360 的评估图表来做这项检查。

%matplotlib inline
from causallib.evaluation import evaluateeval_results = evaluate(ipw, X, a, y)
eval_results.plot_all()
eval_results.plot_covariate_balance(kind="love");

评估图表显示了以下问题:

- ROC 曲线:标记为“Propensity”的蓝色曲线是根据混杂因素 X 预测处理 a 的标准 ROC 曲线。在正常的分类任务中,我们希望 AUC 值接近 1,但对于因果推断而言,过高的 AUC 值(此处为 0.93)表明两个处理组(手机/座机)过于容易区分。特别是,ROC 曲线左端的垂直部分表明我们可以正确地识别出大量的座机联系(真阳性),几乎没有手机联系混合在其中(假阳性)。此外,标记为“Weighted”的橙色曲线的理想 AUC 应该是 0.5,这意味着在应用倾向性权重之后,两个处理组变得不可区分。当前的 AUC 为 0.19,与理想情况相差甚远。
- 倾向性分布:此图显示了两个处理分配组的倾向性值分布:手机(蓝色)和座机(橙色),其中 a=1 表示被座机联系的概率。右端的大橙色柱状图没有上面的蓝色柱状图,再次指出了存在一个基本上总是被座机联系而从未被手机联系的人群。
- 协变量平衡(左下角):此图(称为 Love 图)中的橙色三角形显示了两个处理组在某些协变量(混杂因素)的均值上有较大差异。重新单独绘制 Love 图,我们可以看到最大的差异出现在经济指标 'cons.price.idx'、'euribor3m' 和 'emp.var.rate' 上。此外,倾向性权重并没有成功减少这些差异(蓝色圆圈)。

综合来看,这些图表显示了两个处理组之间缺乏重叠,特别是存在一个几乎总是被座机联系的人群。除非我们愿意对结果如何从一个区域外推到另一个区域(即,对于总是被座机联系的人群,在手机联系下的结果是什么)做出强烈的假设,否则在没有处理重叠的区域估计因果效应是不建议的。

为了继续进行,我们将排除这一组仅被座机联系的人群,并再次尝试。上述倾向性分布图表明,这可以通过对估计的倾向性值设置阈值(比如说 0.9)来简单地实现。为了获得更多的洞察,我们将使用 IBM 的 AI Explainability 360 (AIX360) 工具包中的规则集学习器来通过少量规则描述这一人群。

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

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

相关文章

数据结构初阶---二叉树---堆

一、树 1.树的概念 树是一种非线性的数据结构,由n(n≥0)个有限结点组成的一个有层次关系的集合。形状类似一棵倒挂的树,根朝上,分支向下。 根结点没有前驱结点,可以有n(n≥0)个后继结点。 其余结点被分为M个互不相交的集合&am…

运维 mysql、redis 、RocketMQ性能排查

MySQL查看数据库连接数 1. SHOW STATUS命令-查询当前的连接数 MySQL 提供了一个 SHOW STATUS 命令,可以用来查看服务器的状态信息,包括当前的连接数。 SHOW STATUS LIKE Threads_connected;这个命令会返回当前连接到服务器的线程数,即当前…

.NET6 WebAPI从基础到进阶--朝夕教育

1、环境准备 1. Visual Studio 2022 2. .NET6 平台支持 3. Internet Information Services 服务器( IIS ) 4. Linux 服务器 【 CentOS 系统】 ( 跨平台部署使用 ) 5. Linux 服务器下的 Docker 容器( Docker 部署使用) …

STM32仿真——01创建工程

目录 1.需要用到的软件工具​编辑 2.第一步Proteus软件新建工程​编辑 3.第二步——stm32cubumx 4、MDK代码编写 #注意安装的过程或者使用过程使用英文,以防报错; 1.需要用到的软件工具 2.第一步Proteus软件新建工程 选中,默认 先布局&…

相位小数偏差(UPD)估计基本原理

PPP中的一个关键性难题在于非差模糊度固定,成功固定非差模糊度可以使 PPP 的收敛速度和定位精度得到显著提升 。 相位小数偏差 (UPD) 是致使相位模糊度失去整数特性的主要因素,精确估计并校正 UPD 是实现非差模糊度固定的重要前提,也是实现…

我们来编程 -- win11多jdk版本切换

题记 售前的酒喝到位了调研需求及文档整理出来了开发要入场了,真惨啊!年底了,手里活干的好好的,因为flyback在项目地,硬是被安排进来了拥抱变化,我呸…不得不切换系统,构建代码,一股…

飞腾派4g版本笔记一

飞腾派4g版本开箱体验 开箱包裹内容 打开包装,你可以看到以下物品 一个绿联的usb3.0读卡器、sandisk的32g内存卡(太好了)飞腾派4g版本开发板带散热风扇(通过DDR存储的丝印看到是长鑫存储,即为4g内存版本)输出为12v 3A的电源适配…

从零用java实现 小红书 springboot vue uniapp (2)主页优化

前言 移动端演示 http://8.146.211.120:8081/#/ 前面的文章我们基本完成了主页的布局 今天我们具体的去进行实现 并且分享我开发时遇到的问题 首先先看效果 java仿小红书主页 实现效果为 1.顶端全屏切换 2.上划加载更多 3.下拉当前页整体刷新 顶端全屏切换我们选择 gui-switch…

3D 生成重建031-One-2-3-45多视图+Neus生成3D

3D 生成重建031-One-2-3-45多视图Neus生成3D* 文章目录 0 论文工作论文方法2 实验结果 0 论文工作 单图像三维重建是一项重要但极具挑战性的任务,需要对现实世界有深入的了解。许多现有的方法通过在二维扩散模型的引导下优化神经辐射场来解决这个问题,但…

JAVA:访问者模式(Visitor Pattern)的技术指南

1、简述 访问者模式(Visitor Pattern)是一种行为型设计模式,允许你将操作分离到不同的对象中,而无需修改对象本身的结构。这种模式特别适合复杂对象结构中对其元素进行操作的场景。 本文将介绍访问者模式的核心概念、优缺点,并通过详细代码示例展示如何在实际应用中实现…

【C++】数的性质问题分析与优化

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯题目解析与分析题目描述题目分析 💯我的解法与详细解读初始代码实现解法分析 💯老师解法与其改进思路老师代码实现改进与优势 💯对比分析…

让文案生成更具灵活性/chatGPT新功能canvas画布编辑

​ ​ OpenAI最近在2024年12月发布了canvas画布编辑功能,这是一项用途广泛的创新工具,专为需要高效创作文案的用户设计。 无论是职场人士、学生还是创作者,这项功能都能帮助快速生成、优化和编辑文案,提升效率的同时提高内容质量…

分布式事物XA、BASE、TCC、SAGA、AT

分布式事务——Seata 一、Seata的架构: 1、什么是Seata: 它是一款分布式事务解决方案。官网查看:Seata 2.执行过程 在分布式事务中,会有一个入口方法去调用各个微服务,每一个微服务都有一个分支事务,因…

深度学习——激活函数、损失函数、优化器

深度学习——激活函数、损失函数、优化器 1、激活函数1.1、一些常见的激活函数1.1.1、sigmoid1.1.2、softmax1.1.3、tanh1.1.4、ReLU1.1.5、Leaky ReLU1.1.6、PReLU1.1.7、GeLU1.1.8、ELU 1.2、激活函数的特点1.2.1、非线性1.2.2、几乎处处可微1.2.3、计算简单1.2.4、非饱和性1…

opencv-python的简单练习

1、读取一张彩色图像并将其转换为灰度图。 import cv2 img cv2.imread("../1iamge/a.jpg") # 灰度化 img_gray cv2.cvtColor(img, cv2.COLOR_BGRA2GRAY) cv2.imshow(img, img) cv2.imshow(img_gray, img_gray) cv2.waitKey(0) 2、编写程序,读取一张彩色…

Java、鸿蒙与嵌入式开发:技术选择与职业发展分析

在当今快速发展的科技领域中,Java、鸿蒙和嵌入式开发代表着不同的技术方向和职业机遇。每个方向都有其独特的市场价值和发展前景,让我们深入分析这三个领域的特点、发展趋势和职业规划。 Java开发方向已经发展了二十多年,仍然在软件开发领域…

【mybatis】缓存

目录 1. mybatis的运行 1.1 引言 1.2 具体运行: 1.3 sqlSession 介绍local catch 2. 缓存 2.1 概念 2.2 使用缓存的原因 2.3 什么样的数据能使用缓存 3. Mybatis缓存 3.1 一级缓存 3.1.1 测试一级缓存 3.1.2 缓存失效的四种情况 $1 sqlSession不同 $…

前端成长之路:CSS元素显示模式

元素显示模式 网页中的标签非常的多,在不同的地方会使用到不同类型的标签,了解这些标签的特点可以更好的布局我们的网页。 元素显示模式就是元素(标签)按照什么方式进行显示,比如:div标签会自己独占一行&a…

Unity类银河战士恶魔城学习总结(P178 Archer s arrow 弓箭手的箭)

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址:https://www.udemy.com/course/2d-rpg-alexdev/ 本章节制作了一个弓箭手的箭 Arrow_Controller.cs 1.OnTriggerEnter2D方法 功能:检测箭矢与其他对象的碰撞。逻辑&#xff1…

机器学习周报(12.9-12.15)

文章目录 摘要Abstract 1 Swin Transformer1.1 输入1.2 Patch Partition1.3 Linear Embedding1.4 Patch Merging1.5 Swin Transformer Block1.6 代码总结 摘要 本篇博客介绍了采用类似于卷积核的移动窗口进行图像特征提取的Swin Transformer网络模型,这是一种基于T…