【因果推断python】51_去偏/正交机器学习3

目录

What is Non-Parametric About?


What is Non-Parametric About?

在我们继续之前,我只想强调一个常见的误解。当我们考虑使用非参数 Double-ML 模型来估计 CATE 时,我们似乎会得到一个非线性治疗效果。例如,让我们假设一个非常简单的数据生成过程(DGP),其中 discont 对销售额的影响是非线性的,但却是通过平方根函数产生的。

Sales_i=20+10*\sqrt{Discount_i}+e_i
治疗效果由该销售函数相对于治疗的导数给出。

 \frac{\partial Sales_i}{\partial Discount_i}=\frac{10}{2\sqrt{Discount_i}}

我们可以看到,治疗效果不是线性的。实际上,治疗效果会随着治疗次数的增加而减弱。这对 DGP 有很大的意义。起初,一点点折扣会使销售额大幅增加。但是,当我们给予的折扣太多时,多一个单位的折扣对销售额的影响就会越来越小,因为人们不会想买到无穷多。因此,折扣只在人们满足之前有效。

那么问题来了,非参数 ML 能否捕捉到治疗效果中的这种饱和行为?它能否从较小的折扣水平推断出,如果折扣更高,治疗效果会更低?答案是......可以这么说。为了更好地理解这一点,让我们生成类似上述 DGP 的数据。

np.random.seed(321)
n=5000
discount = np.random.gamma(2,10, n).reshape(-1,1)
discount.sort(axis=0) # for better ploting
sales = np.random.normal(20+10*np.sqrt(discount), 1)

如果我们绘制这个 DGP,就可以看到这些变量之间的平方根关系。

plt.plot(discount, 20 + 10*np.sqrt(discount))
plt.ylabel("Sales")
plt.xlabel("Discount");

现在,让我们对这些数据应用非参数双重/偏差 ML。

debias_m = LGBMRegressor(max_depth=3)
denoise_m = LGBMRegressor(max_depth=3)# orthogonalising step
discount_res =  discount.ravel() - cross_val_predict(debias_m, np.ones(discount.shape), discount.ravel(), cv=5)
sales_res =  sales.ravel() - cross_val_predict(denoise_m, np.ones(sales.shape), sales.ravel(), cv=5)# final, non parametric causal model
non_param = LGBMRegressor(max_depth=3)
w = discount_res ** 2 
y_star = sales_res / discount_resnon_param.fit(X=discount_res.reshape(-1,1), y=y_star.ravel(), sample_weight=w.ravel());

通过上述模型,我们可以得到 CATE 估计值。这里的问题是 CATE 不是线性的。随着治疗次数的增加,CATE 应该减少。我们要回答的问题是,非参数模型能否捕捉到这种非线性。

要正确回答这个问题,让我们记住双重/偏差 ML 对数据生成过程的基本假设是什么。这些假设可以从我们之前列出的等式中看出。

\tilde{Y}_i=\tau(X_i)\tilde{T}_i+e_i

也就是说,残差结果等于残差治疗乘以条件治疗效果。这意味着治疗对结果的影响是线性的。这里不存在非线性。上述模型表明, 如果我们将治疗从 1 增加到 10 或从 100 增加到 110, outcome将提高一个固定的 \tau(X_i)。这是一个简单的乘法。

那么,这是否意味着非参数模型无法捕捉治疗效果的非线性呢?也不尽然... 相反,Double/ML 找到了非线性 CATE 的局部线性近似值。换句话说,它找到的是在治疗水平上或治疗周围,结果相对于治疗的导数这相当于找到与治疗点上的结果函数相切的线的斜率。

这意味着,是的,非参数双 ML 会发现随着治疗量的增加,治疗效果会变小。但是,不,它不会发现非线性治疗效果,而是局部线性治疗效果。我们甚至可以将这些线性近似值与地面真实的非线性因果效应进行对比,事实上,它们是很好的近似值。

cate = non_param.predict(X=discount)plt.figure(figsize=(15,5))
plt.subplot(1,2,1)
plt.scatter(discount, sales)
plt.plot(discount, 20 + 10*np.sqrt(discount), label="Ground Truth", c="C1")
plt.title("Sales by Discount")
plt.xlabel("Discount")
plt.legend()plt.subplot(1,2,2)
plt.scatter(discount, cate, label="$\hat{\\tau}(x)$", c="C4")
plt.plot(discount, 5/np.sqrt(discount), label="Ground Truth", c="C2")
plt.title("CATE ($\partial$Sales) by Discount")
plt.xlabel("Discount")
plt.legend();

这听起来像是技术性问题,但却有非常实际的意义。例如,假设您在上面的例子中发现对某位顾客的处理效应为 2,这意味着如果您将折扣提高 1 个单位,您对该顾客的销售额就会增加 2 个单位。看到这个结果,你可能会想:"太好了!我会给这个单位很多折扣!毕竟,每增加 1 个单位的折扣,我就能获得 2 个单位的销售额"。然而,这是错误的结论。只有在这个折扣水平上,治疗效果才是 2。只要提高折扣,效果就会下降。例如,假设这位顾客只获得了 5 折,所以她的治疗效果很高。如果你看到了这个巨大的治疗效果,并以此为理由给这位顾客 20 折。但是,当你这样做时,效果可能会从 2 降到 0.5 左右。在治疗效果为 2 时,打 20 折是合理的,但在治疗效果为 0.5 时,打 20 折就不再有利可图了。

这意味着,在将非线性治疗效果推断到新的治疗水平时,您必须格外小心。否则,你最终可能会做出非常无利可图的决定。另一种说法是,当治疗效果不是线性的时候,即使是非参数的双重/偏差-ML 也很难做出反事实结果预测。它会试图将治疗效果(TE)从低治疗水平线性推断到高治疗水平,或反过来推断。由于非线性,这种推断很可能会出现偏差。

为了解决这个问题,有一个最终的想法。请记住,与我们之前看到的方法相比,这个方法的科学性要低得多。它可以归结为在应用正交化程序后使用 S-学习器,但我说得太快了。让我们接下来看看。

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

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

相关文章

手撕RPC——前言

手撕RPC——前言 一、RPC是什么?二、为什么会出现RPC三、RPC的原理3.1 RPC是如何做到透明化远程服务调用?3.2 如何实现传输消息的编解码? 一、RPC是什么? RPC(Remote Procedure Call,远程过程调用&#xff…

LabVIEW电路板故障诊断系统

基于LabVIEW软件开发的电路板故障诊断系统,涵盖功能测试、性能测试和通讯测试等多个方面。系统集成了多种硬件设备,包括NI PXI-1033机箱、NI PXI-4071数字万用表、NI PXI-4130电源模块、NI PXI-8512 CAN模块等,通过模块化设计实现了对电路板的…

稳态与敏态业务阶段

稳态业务就是比如你登录学校的图书馆教务处这些业务系统 用户数量和数据基本上不会发生太大的变化 业务系统的更新也不是很频繁,比较方便资源的采购 敏态业务就是比如我开发一个应用上线了,我不知道有多少用户和数量,无法预估 这就没办法…

Vue76-路由对浏览器历史记录的影响

一、push模式 默认是push 二、replace模式 替换当前记录! (当前指针指向的那一条记录) 三、小结

深度学习之数据集 Dataset总结

数据集 Dataset MindSpore提供了基于Pipeline的数据引擎,通过Dataset和Transforms实现高效的数据预处理。它提供了内置的文本、图像、音频等数据集加载接口,并提供了自定义数据集加载接口。此外,MindSpore的领域开发库也提供了大量的预加载数…

MYSQL 四、mysql进阶 3(存储引擎)

mysql中表使用了不同的存储引擎也就决定了我们底层文件系统中文件的相关物理结构。 为了管理方便,人们把连接管理、语法解析、查询优化这些并不涉及真实数据存储的功能划分为 Mysql Server的功能,把真实存取数据的功能划分为存储引擎的功能&…

SGPT论文阅读笔记

这是篇想要用GPT来提取sentence embedding的工作,提出了两个框架,一个是SGPT-BE,一个是SGPT-CE,分别代表了Bi-Encoder setting和Cross-Encoder setting。CE的意思是在做阅读理解任务时,document和query是一起送进去&am…

字节跳动+京东+360+网易+腾讯,那些年我们一起踩过算法与数据结构的坑!(1)

**二面:**已知一棵树的由根至叶子结点按层次输入的结点序列及每个结点的度(每层中自 左到右输入),试写出构造此树的孩子-兄弟链表的算法。 **三面主管面:**已知一棵二叉树的前序序列和中序序列分别存于两个一维数组中&…

利用竞争智慧与大型语言模型:假新闻检测的新突破

Explainable Fake News Detection With Large Language Model via Defense Among Competing Wisdom 论文地址: Explainable Fake News Detection with Large Language Model via Defense Among Competing Wisdom | Proceedings of the ACM on Web Conference 2024https://dl.…

React常用方法汇总【更新中】

文章目录 前言创建项目启动命令列表渲染父子组件传值useEffect 异步函数使用方法useEffect 异步函数清除方法控制组件显示隐藏axios 安装使用 前言 运行 react 需要先安装 node.js,具体安装步骤可以参考这篇文章 https://blog.csdn.net/weixin_43721000/article/de…

基于vue3 + ant-design 使用阿里图标库iconfont.cn

对于使用 iconfont.cn 的用户&#xff0c;通过设置 createFromIconfontCN 方法参数对象中的 scriptUrl 字段&#xff0c; 即可轻松地使用已有项目中的图标。 组件封装 IconFont <template><IconFont :type"iconType" /> </template><script se…

vscode配置vue格式化代码不管用

所有配置都配好了就是无法使用自己想要的vetur格式化代码 后台发现调整默认格式化代码的顺序就可以&#xff0c; 修改该后就可以了

ChatGPT Plus GPT-4o Claude 3 Opus合租拼车全新方式

无需自己搭建&#xff0c;登录即可用&#xff0c;国内直连访问&#xff0c;聚合多家最强大模型&#xff0c;随意选择使用。立即体验 datapipe.top 支持 OpenAI 最新 GPT-4o &#xff0c;获得快速高质量的对话&#xff0c;保证可用配额。支持多种大模型&#xff0c;GPT-4o &…

【漏洞复现】Rejetto HTTP File Server 远程代码执行漏洞 (CVE-2024-23692)

免责声明&#xff1a; 本文内容旨在提供有关特定漏洞或安全漏洞的信息&#xff0c;以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步&#xff0c;并非出于任何恶意目的。阅读者应该明白&#xff0c;在利用本文提到的漏洞信息或进行相关测…

[MQTT]Mosquitto的權限管理_使用者/密碼(pwfile)和訪問控制清單(aclfile)

延續Mosquitto的內網連接(intranet)和使用者/密碼權限設置文章&#xff0c;經解讀mosquitto官網文檔&#xff0c;在權限管理部分&#xff0c;除了設置使用者/密碼(pwfile)之外&#xff0c;還有訪問控制清單(Access Control List, aclfile)可以設置。經過測試&#xff0c;同時設…

C#实现音乐在线播放和下载——Windows程序设计作业3

1. 作业内容 编写一个C#程序&#xff0c;在作业二实现的本地播放功能的基础上&#xff0c;新增在线播放和在线下载功能&#xff0c;作业二博客地址&#xff1a;C#实现简单音乐文件解析播放——Windows程序设计作业2 2. 架构选择 考虑到需求中的界面友好和跨版本兼容性&#xf…

BookSim2 安装步骤教程 Network-on-Chips (NoCs) 片上网络模拟器 含视频

BookSim简介 BookSim2 一个用于Network-on-Chips (NoCs) 芯片上网络的周期精确模拟器。该模拟器的设计是为了实现网络组件的模拟灵活性和精确建模。 BookSim1 是一个通用的网络模拟器&#xff0c;并不专门针对片上环境。不支持在片上网络环境中提出的一些更先进的功能和拓扑…

网络通信架构

BS架构/CS架构 使用协议分别对应&#xff1a; TCP / HTTP 在计算机网络和软件开发中&#xff0c;CS架构&#xff08;Client-Server Architecture&#xff0c;客户端-服务器架构&#xff09;和BS架构&#xff08;Browser-Server Architecture&#xff0c;浏览器-服务器架构&am…

03-ES6新语法

1. ES6 函数 1.1 函数参数的扩展 1.1.1 默认参数 function fun(name,age17){console.log(name","age); } fn("张美丽",18); // "张美丽",18 fn("张美丽",""); // "张美丽" fn("张美丽"); // &…

直流电机三级串电阻启动

直流电动机在工农业生产中拥有广泛的应用&#xff0c;这主要得益于其调速范围广、调速平稳、过载能力强以及启动和制动转矩大的优点。为了降低起动电流和起动转矩&#xff0c;研究者们探索了直流电动机串电阻起动方法。这种方法通过在直流电动机电枢绕组中串入电阻&#xff0c;…