【因果推断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.mzph.cn/bicheng/32432.shtml

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

相关文章

【干货】Android中高级开发进阶必备资料(附:PDF+视频+源码笔记)

4、数据传输与序列化 5、Java虚拟机原理 6、高效IO 设计思想解读开源框架 随着互联网企业的不断发展,产品项目中的模块越来越多,用户体验要求也越来越高,想实现小步快跑、快速迭代的目的越来越难,插件化技术应用而生。如果没有…

大模型微调和RAG的应用场景

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

Android高工面试:分享两道阿里P6究极难度算法题,面试完我直接怀疑人生---

10亿数据内筛选最大的100个,要求速度要快。 最近阿里的一道面试题,其实基于多层博弈论,我想我刷过这题,我知道如何偷鸡的。我以为我在第二层,没想到我只在第一层。 第一层 于大顶堆的方式的方式筛选出数组内最​ 大的…

帆软使用总结-新建填报报表

1.界面设计 选择菜单[文件>新建普通报表] 2.分别把B3、C3设置为文本控件 3.选中D3,并设置为下拉控件 4.选择菜单[模板>报表填报属性] 5.选择菜单[模板>模板web属性] 2.效果演示

Vue-表格

需求 代码 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTE-8"> <meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width…

Git客户端安装步骤详解

git windows7 百度经验:jingyan.baidu.com 方法/步骤 1 从git官网下一个git安装包。 步骤阅读 2 点击git.exe安装程序&#xff0c;点击【next】 ![git的安装和配置](https://imgsa.baidu.com/exp/w500/sign7565f44ba58b87d65042ab1f37092860/21a4462309f790525e5b0144…

软件测试----用例篇(设计测试用例保姆级教程✅)

文章目录 前言一、测试用例概念 二、如何设计测试用例三、设计测试用例的方法3.1基于需求的设计方法3.2具体的设计方法等价类边界值正交法判定表法场景法错误猜测法 前言 在软件开发过程中&#xff0c;测试用例是至关重要的一环。它们帮助软件开发人员和测试人员确定软件是否按…

如何识别商业电子邮件诈骗

复制此链接到微信打开阅读全部已发布文章 不要关闭它标签&#xff01;我知道很少有词组比商业、电子邮件和妥协更无趣。 但这不是一篇无聊的文章&#xff1a;这是一篇关于电子邮件骗子的文章&#xff0c;根据联邦调查局的说法&#xff0c;他们每年通过诈骗人们赚取 260 亿美元…

AU音频重新混合音频,在 Adobe Audition 中无缝延长背景音乐,无缝缩短BGM

导入音频&#xff0c;选中音频&#xff0c;并且点 New Multitrack Session 的图标 设计文件名和存储路径&#xff0c;然后点 OK 点 Essential Sound 面板点 Music &#xff08;如果没有这个面板 点菜单栏 Windows > Essential Sound 调出来&#xff09; 点 Duration 展…

利用定时器1产生全双工软件串口

代码; /*《AVR专题精选》随书例程3.通信接口使用技巧项目&#xff1a;使用AVR定时器1和外中断实现全双工软件串口文件&#xff1a;softuart.c说明&#xff1a;软件串口驱动文件作者&#xff1a;邵子扬时间&#xff1a;2012年12月16日*/ #include "softuart.h"// 内部…

Pytorch调试出错记录

一、搭建环境&#xff1a; LINUX-64 1、 nvidia-smi &#xff1a;NVIDIA-SMI 470.63.01 Driver Version: 470.63.01 CUDA Version: 11.4 2、安装conda&#xff1a;下载最新版上传安装 3、安装pytorch&#xff08;安装成功&#xff0c;但可能报错&#xff09; : conda in…

软件功能测试和性能测试包括哪些测试内容?又有什么联系和区别?

软件功能测试和性能测试是保证软件质量和稳定性的重要手&#xff0c;无论是验证软件的功能正确性&#xff0c;还是评估软件在负载下的性能表现&#xff0c;这些测试都是必不可少的。 一、软件功能测试   软件功能测试是指对软件的各项功能进行验证和确认&#xff0c;确保软件…

【递归、搜索与回溯】floodfill算法一

floodfill算法一 1.floodfill算法简介2.图像渲染3.岛屿数量4.岛屿的最大面积 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&#x1f603; 1.floodfill算法…

【ATU Book - i.MX8系列 - OS】NXP i.MX Linux Desktop (Ubuntu) BSP 开发环境架设

一、概述 谈论嵌入式系统的开发环境&#xff0c;不得不提起近年来相当实用的 Yocto 建构工具。此工具拥有极为灵活的平台扩展性&#xff0c;广泛的软体套件与社群支持、多平台支援整合性&#xff0c;能够满足开发者特定需求和多种热门的嵌入式系统架设&#xff0c;已成为当今顶…

实战篇:GY-906红外测温模块 + 万年历(定时器计数中断版本) -STM32篇

本文章基于兆易创新GD32 MCU所提供的2.2.4版本库函数开发 向上代码兼容GD32F450ZGT6中使用 后续项目主要在下面该专栏中发布&#xff1a; https://blog.csdn.net/qq_62316532/category_12608431.html?spm1001.2014.3001.5482 感兴趣的点个关注收藏一下吧! 电机驱动开发可以跳转…

第10章 启动过程组 (制定项目章程)

第10章 启动过程组 9.1制定项目章程&#xff0c;在第三版教材第356~360页&#xff1b; 文字图片音频方式 视频12 第一个知识点&#xff1a;主要输出 1、项目章程&#xff08;重要知识点&#xff09; 项目目的 为了稳定与发展公司的客户群(抽象&#xff0c;非具体) 可测量的项目…

探索Agent AI智能体的未来

随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;Agent AI智能体正成为一种改变世界的新力量。这些智能体不仅在当前的技术领域中发挥着重要作用&#xff0c;而且在未来将以更深远的影响改变我们的生活、工作和社会结构。本文将探讨Agent AI智能体的现状、潜…

微信小程序-伪类选择器

一.伪类选择器 结构伪类常见书写方式&#xff1a; 第一类&#xff1a;找第几个孩子 1. :first-child 找第一个孩子2. :last-child 找最后一个孩子3. :nth-child()&#xff0c;正着找数字&#xff1a;写数字几就是找第几个孩子&#xff0c;2n或者even:找偶数2n1或者o…

“论微服务架构及其应用”写作框架,软考高级,系统架构设计师

论文真题 论微服务架构及其应用近年来&#xff0c;随着互联网行业的迅猛发展&#xff0c;公司或组织业务的不断扩张&#xff0c;需求的快速变化以及用户量的不断增加&#xff0c;传统的单块&#xff08;Monolithic&#xff09;软件架构面临着越来越多的挑战&#xff0c;已逐渐…