【因果推断python】38_预测模型1

2024-06-16 08:44

本文主要是介绍【因果推断python】38_预测模型1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

工业界中的机器学习


之前的部分涵盖了因果推理的核心。那里的技术是众所周知和成熟的。他们经受住了时间的考验。第一部分建立了我们可以依赖的坚实基础。用更专业的术语来说,第一部分侧重于定义什么是因果推理,哪些偏差会阻止相关性成为因果关系,调整这些偏差的多种方法(回归、匹配和倾向得分)和规范识别策略(工具变量、双重差分 和 断点回归)。总之,第一部分重点介绍了我们用来确定平均干预效果 E[Y_1-Y_0] 的标准技术。

当我们进入第二部分时,事情会变得有点不稳定。我们将介绍因果推理文献的最新发展、它与机器学习的关系以及行业中的应用。从这个意义上说,我们在学术严谨性与适用性和经验主义之间进行了权衡。第 II 部分中介绍的一些方法没有关于它们为什么起作用的可靠理论。尽管如此,当我们尝试它们时,它们似乎仍然有效。从这个意义上说,对于想要在日常工作中使用因果推理的行业从业者,而不是想要研究世界上基本因果关系的科学家,第二部分可能更有用。

第二部分的前几章将侧重于估计异质治疗效果。我们将从一个只关心平均治疗效果 E[Y_1-Y_0] 的世界转移到一个我们想知道不同单位对治疗有何不同反应的世界E[Y_1-Y_0|X]。这是个性化至关重要的世界。我们希望优先治疗那些治疗效果最有影响的人,我们不想治疗那些治疗对他们有害的人。从某种意义上说,我们也在从一个关于平均治疗效果的积极问题转向一个规范性问题:我们应该治疗谁?

这是大多数企业问自己的问题,尽管措辞略有不同:我应该给谁打折?我应该对贷款收取多少利率?我应该向该用户推荐什么项目?我应该向每位客户展示什么页面布局?这些都是治疗效果异质性问题,我们可以使用第二部分中提供的工具来回答。但在我们这样做之前,我只公平地介绍一下机器学习对行业的意义,因为这将成为我们稍后将用于因果推理的基本工具。

工业界中的机器学习

重点是谈谈我们在工业界中通常是如何使用机器学习的。如果您不熟悉机器学习,可以将本章视为机器学习速成课程。如果您以前从未使用过 ML,我强烈建议您至少学习基础知识,以充分利用即将发生的事情。但这并不意味着如果您已经精通机器学习,就应该跳过本章。我仍然认为你会从阅读中受益。与其他机器学习材料不同,这本书不会讨论决策树或神经网络等算法的来龙去脉。相反,它将专注于机器学习在现实世界中的应用

我想首先说明的是,为什么我们要在因果推理书中谈论机器学习?简短的回答是因为我认为理解因果关系的最佳方法之一是将其与机器学习带来的预测模型方法进行对比。长答案是双重的。首先,如果你已经读到本书的这一点,那么你很有可能已经熟悉机器学习。其次,即使你不是,鉴于这些主题目前的流行,你可能已经对它们是什么有了一些了解。唯一的问题是,在机器学习大肆宣传的情况下,我可能不得不带你回到现实,并用非常实用的术语解释它的真正作用。最后,因果推理的最新发展大量使用机器学习算法,所以也有。

非常直接,机器学习是一种快速、自动和良好预测的方法。这不是全部,但它涵盖了其中的 90%。它是在有监督的机器学习领域取得了大多数很酷的进步,如计算机视觉、自动驾驶汽车、语言翻译和诊断。请注意,起初,这些看起来不像是预测任务。语言翻译是如何预测的?这就是机器学习的美妙之处。我们可以通过预测解决比最初显而易见的问题更多的问题。在语言翻译的情况下,您可以将其构建为一个预测问题,即您向机器展示一个句子,并且它必须用另一种语言预测同一个句子。请注意,我不是在预测或预测未来的意义上使用预测这个词。预测只是从一个定义的输入映射到一个最初未知但同样定义良好且可观察的输出。

机器学习真正做的是学习这个映射函数,即使它是一个非常复杂的映射函数。底线是,如果您可以将问题描述为从输入到输出的映射,那么机器学习可能是解决该问题的不错选择。至于自动驾驶汽车,你可以认为它不是一个,而是多个复杂的预测问题:从汽车前部的传感器预测车轮的正确角度,从汽车周围的摄像头预测刹车的压力,根据 gps 数据预测加速器中的压力。解决这些(以及更多)预测问题是制造自动驾驶汽车的原因。

考虑 ML 的一种更具技术性的方式是估计(可能非常复杂)期望函数:

E[Y|X]

其中 Y 是您想知道的(翻译句子,诊断),而 X 是您已经知道的(输入句子,X 射线图像)。机器学习只是一种估计条件期望函数的方法。

好的……您现在了解预测如何比我们最初想象的更强大。自动驾驶汽车和语言翻译很酷,但它们相距甚远,除非你在谷歌或优步这样的大型科技公司工作。所以,为了让事情更相关,让我们来谈谈几乎每个公司都有的问题:客户获取(即获得新客户)。

从客户获取的角度来看,您通常需要做的是弄清楚谁是有利可图的客户。在这个问题中,每个客户都有获取成本(可能是营销成本、入职成本、运输成本……),并有望为公司带来正现金流。例如,假设您是一家互联网提供商或一家天然气公司。您的典型客户可能有一个看起来像这样的现金流。

每个条形代表您与客户关系中的一个金钱事件。例如,要立即获得客户,您需要投资于营销。然后,在某人决定与您开展业务后,您可能会产生某种入职成本(您必须向客户解释如何使用您的产品)或安装成本。只有这样,客户才开始产生每月收入。在某些时候,客户可能需要一些帮助,而您将承担维护费用。最后,如果客户决定终止合同,您可能也会为此承担一些最终成本。

要查看这是否是一个有利可图的客户,我们可以在所谓的级联图中重新排列条形图。希望现金事件的总和最终高于零线。

相反,客户很可能会产生比收入更多的成本。如果他或她很少使用你的产品并且有很高的维护需求,当我们堆积现金事件时,它们最终可能会低于零线。

当然,这种现金流可能更简单或更复杂,具体取决于业务类型。你可以用利率做时间折扣之类的事情,然后为此疯狂,但我认为这里的重点是正确的。

但是你能做些什么呢?好吧,如果你有很多盈利和非盈利客户的例子,你可以训练一个机器学习模型来识别它们。这样,您就可以将营销策略集中在只针对有利可图的客户身上。或者,如果您的合同允许,您可以在客户产生更多成本之前终止与客户的关系。本质上,您在这里所做的是将业务问题构建为预测问题,以便您可以通过机器学习解决它:您想要预测或识别有利可图和无利可图的客户,以便您只与有利可图的客户互动。

import pandas as pd
import numpy as np
from sklearn import ensemble
from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
from sklearn.metrics import r2_score
import seaborn as sns
from matplotlib import pyplot as plt
from matplotlib import style
style.use("ggplot")

例如,假设您有 10000 个客户的 30 天交易数据。 您还需要购买 cacq 的成本。 如果您进行在线营销,这可能是您为他们提出的出价,也可能是运输成本或您必须与客户进行的任何培训,以便他们可以使用您的产品。 此外,为了简单起见(这是一门速成课程,而不是关于客户评估的一个学期),让我们假设您可以完全控制与您开展业务的客户。 换句话说,即使客户想与您做生意,您也有权拒绝客户。 如果是这种情况,您现在的任务就是事先确定谁将获利,因此您可以选择只与他们互动。

transactions = pd.read_csv("data/customer_transactions.csv")
print(transactions.shape)
transactions.head()
(10000, 32)

我们现在需要做的是根据这个交易数据来区分好客户和坏客户。为了简单起见,我只总结所有交易和CACQ。请记住,这会带来很多细微差别,例如区分被流失的客户和那些在一次购买和下一次购买之间处于休息状态的客户。

然后,我将把这个总和(我称之为net_value)与客户特定的功能结合起来。由于我的目标是在决定与他们互动之前确定哪个客户将有利可图,因此您只能在获取期之前使用数据。在我们的例子中,这些功能是年龄,地区和收入,所有这些都可以在另一个csv文件中找到。

profitable = (transactions[["customer_id"]].assign(net_value = transactions.drop(columns="customer_id").sum(axis=1)))customer_features = (pd.read_csv("data/customer_features.csv").merge(profitable, on="customer_id"))customer_features.head()

好!我们的任务正变得越来越不抽象。我们希望从非盈利客户中识别出有利可图的客户(net_value >0)。让我们尝试不同的东西,看看哪一个更好。但在此之前,我们需要快速了解一下机器学习(如果你知道ML是如何工作的,请随意跳过)

这篇关于【因果推断python】38_预测模型1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1065990

相关文章

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

基于Python打造一个智能单词管理神器

《基于Python打造一个智能单词管理神器》这篇文章主要为大家详细介绍了如何使用Python打造一个智能单词管理神器,从查询到导出的一站式解决,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 项目概述:为什么需要这个工具2. 环境搭建与快速入门2.1 环境要求2.2 首次运行配置3. 核心功能使用指

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

利用Python打造一个Excel记账模板

《利用Python打造一个Excel记账模板》这篇文章主要为大家详细介绍了如何使用Python打造一个超实用的Excel记账模板,可以帮助大家高效管理财务,迈向财富自由之路,感兴趣的小伙伴快跟随小编一... 目录设置预算百分比超支标红预警记账模板功能介绍基础记账预算管理可视化分析摸鱼时间理财法碎片时间利用财

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Python位移操作和位运算的实现示例

《Python位移操作和位运算的实现示例》本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 位移操作1.1 左移操作 (<<)1.2 右移操作 (>>)注意事项:2. 位运算2.1

使用Python和Pyecharts创建交互式地图

《使用Python和Pyecharts创建交互式地图》在数据可视化领域,创建交互式地图是一种强大的方式,可以使受众能够以引人入胜且信息丰富的方式探索地理数据,下面我们看看如何使用Python和Pyec... 目录简介Pyecharts 简介创建上海地图代码说明运行结果总结简介在数据可视化领域,创建交互式地

利用python实现对excel文件进行加密

《利用python实现对excel文件进行加密》由于文件内容的私密性,需要对Excel文件进行加密,保护文件以免给第三方看到,本文将以Python语言为例,和大家讲讲如何对Excel文件进行加密,感兴... 目录前言方法一:使用pywin32库(仅限Windows)方法二:使用msoffcrypto-too