首页 > 编程语言 >【Python实战因果推断】51_因果推理概论1

【Python实战因果推断】51_因果推理概论1

时间:2024-07-24 19:56:40浏览次数:13  
标签:学习 机器 Python 51 因果性 相关性 推断 因果

目录

What Is Causal Inference?

Why We Do Causal Inference

Machine Learning and Causal Inference


What Is Causal Inference?

因果关系可能在你的认知中是一片危险的知识领域,你被告诫要避免涉足。你的统计学老师可能反复强调过,“相关性不等于因果性”,混淆两者可能会让你在学术界遭到排斥,至少也会遭受严厉批评。但问题在于:有时候,相关性确实意味着因果性。

我们人类对此深有体会,因为显然,我们天生倾向于将相关性视为因果性。当你决定不再喝第四杯酒时,你正确地推断出那会让你第二天状态不佳。你的判断基于过往经验:那些饮酒过度的夜晚,你醒来时头痛欲裂;那些只喝一杯酒,甚至滴酒未沾的夜晚,一切如常。你从中领悟到,饮酒与宿醉之间不仅仅是简单的关联,它们之间存在某种必然联系。你从这种关联中推断出了因果关系。

然而,你的统计学老师的警告确实有其道理。因果关系是个棘手的概念。我小时候曾两次尝试炸鱿鱼,结果每次都以糟糕的体验告终,这让我误以为自己对鱿鱼(以及蛤蜊、章鱼和其他海洋无脊椎动物)过敏。直到20多年后,我才再次鼓起勇气品尝它。这一次,不仅味道美妙,而且完全没有任何不良反应。在这个例子中,我错误地将相关性当成了因果性。虽然这次误解仅剥夺了我几年间享受美味海鲜的机会,但将相关性误认为因果性的后果有时会严重得多。如果你涉足股票市场,或许经历过在股价大幅上涨前投入资金,或者在市场崩溃前及时抽身的情况。这很可能让你产生一种错觉,感觉自己能准确把握市场的时机。如果你能抵抗住这种诱惑,那真是明智之举。但许多人却难以自拔,他们坚信自己的直觉与股市的波动之间存在因果联系。在某些情况下,这种信念会驱使他们做出越来越冒险的赌注,最终几乎血本无归。

简而言之,相关性指的是两个数量或随机变量共同变动的现象,而因果性则指一个变量的变化引起另一个变量变化的关系。例如,你可以观察一个国家获得诺贝尔奖的数量与人均巧克力消费量之间的相关性,即便这些变量可能同步变化,但认为其中一个直接导致另一个发生改变的想法却是荒谬的。理解为什么相关性并不意味着因果性相对容易,但将两者等同起来则完全是另一回事。因果推断是科学领域中的一个重要分支,它致力于从相关性中推断因果关系,并探究两者何时以及为何会产生差异。

Why We Do Causal Inference

因果推断不仅仅是为了单纯地理解现实,它往往带有规范性的成分。你推断出过量饮酒会导致头痛,是因为你想要改变饮酒习惯以避免疼痛。你所在的公司想知道营销成本是否能促进收入增长,因为如果确实如此,管理者就可以将其作为杠杆来增加利润。一般来说,你想要了解因果关系,以便能够对原因进行干预,从而带来期望的效果。如果将因果推断应用于产业界,它主要成为决策科学的一个分支。

将涵盖因果推断中专注于理解干预措施影响的部分。如果你的商品价格设定不同,结果会如何?如果你从低糖饮食转变为低脂饮食,会有什么变化?如果银行提高了客户的信用额度,对银行的利润空间会有什么影响?政府应该给每个在校学生提供平板电脑以提高他们的阅读测试成绩,还是应该建造传统的图书馆?结婚对个人财务有益吗,还是已婚夫妇更富有只是因为有钱人更容易从一开始就吸引到伴侣?这些问题都是实际的,它们源自于你想要在商业或生活中做出改变的愿望,以便让自己过得更好。

Machine Learning and Causal Inference

如果你深入探究想要通过因果推断回答的问题类型,你会发现它们大多属于“如果...会怎样”的类型。很遗憾由我来说,但机器学习(ML)在回答这类问题上表现得很糟糕。

机器学习在回答预测问题上非常出色。正如Ajay Agrawal、Joshua Gans和Avi Goldfarb在《Prediction Machines》(哈佛商业评论出版社)一书中所述,“新一波人工智能实际上并未给我们带来智能,而是带来了智能的一个关键组成部分——预测。”你可以用机器学习做各种美妙的事情,唯一的前提是将问题构架为预测问题。想要从英语翻译成葡萄牙语?那就构建一个机器学习模型,当给定英语句子时预测出葡萄牙语句子。想要识别面部?那就创建一个机器学习模型,预测图片子区域中是否存在人脸。

然而,机器学习并非万能药。在严格边界内,它可以表现出奇迹,但如果数据稍微偏离模型熟悉的情况,就可能惨败。再次引用《Prediction Machines》中的例子,“在许多行业中,低价与低销量相关联。例如,在酒店业,非旅游旺季的价格较低,而在需求最高、酒店满员时价格较高。基于这些数据,一个天真的预测可能会建议,提高价格会带来更多的房间销售。”

机器学习利用变量间的关联来进行相互预测。只要你不改变它用于预测的变量,它就能工作得异常出色。但这完全违背了大多数涉及干预的决策中使用预测型机器学习的目的。

大多数数据科学家熟知大量机器学习知识,但对因果推断知之甚少,这导致了大量机器学习模型在不适用于手头任务的情况下被部署。公司的主要目标之一通常是增加销售额或使用量。然而,仅仅预测销售额的机器学习模型很多时候对这一目的毫无用处,甚至有害。这个模型甚至可能得出一些荒谬的结论,比如在高价格与高销量相关联的例子中。然而,你可能会惊讶于有多少公司在目标与预测无关的情况下实施预测型机器学习模型。

这并不意味着机器学习在因果推断中完全无用。它只是意味着,当天真地应用时,它往往弊大于利。但如果你从不同的角度看待机器学习,将其视为强大的模型工具箱而非纯粹的预测机器,你就会开始看到它们如何与因果推断的目标相连接。

标签:学习,机器,Python,51,因果性,相关性,推断,因果
From: https://blog.csdn.net/qq_32146369/article/details/139584514

相关文章

  • 【Python实战因果推断】53_因果推理概论3
    目录CausalModelsCausalModels因果模型是一系列分配机制的集合,我们用符号来表示。在这个机制里,我使用u来代表模型外部的变量,也就是说,我不关心它们是如何生成的。而其他的变量则是我非常关注的,因此它们被纳入了模型之中。最后,存在函数f,用来描述一个变量如何映射到另一个......
  • 【Python实战因果推断】52_因果推理概论2
    目录AssociationandCausationTheTreatmentandtheOutcomeTheFundamentalProblemofCausalInferenceAssociationandCausation直观上,你大概明白为什么相关性并不等于因果性。如果有人告诉你顶级咨询能促使你的业务改善,你难免会持怀疑态度。你怎么能确定是咨询......
  • Python类与面向对象编程
    大家好!今天我们将探讨Python中的类及其在面向对象编程(OOP)中的应用。面向对象编程是一种编程范式,它使用“对象”来模拟现实世界的事务,使代码更加结构化和易于维护。在这篇文章中,我们将详细了解类和实例的概念、'self'关键字的作用、魔法函数的定义以及构造函数和析构函数的用......
  • Python基础入门(六)
    Python基础入门(六)一、本节目标掌握文件的概念和操作:文本文件、CSV文件综合案例:奖励富翁系统、汽车租聘系统二、文件介绍文件是计算机中用于存储数据的一种载体,一般存储在磁盘上文件通过以一定的格式和结构存储数据,可以包含文本、图像、音频、视频等各种类型的信息文件在......
  • Python 中 eval 与 exec 的相同点和不同点
    相同点在Python中,eval和exec都可以用来执行动态生成(dynamicallygenerated)的代码。两者在Python3中的函数声明基本相同,如下所示:eval(expression[,globals[,locals]])exec(object[,globals[,locals]])其中,输入参数中,globals必须是字典(dict)类型,表示全局空间的变量,......
  • Python获取list中指定元素索引的两种方法
    在平时开发过程中,经常遇到需要在数据中获取特定的元素的信息,如到达目的地最近的车站,橱窗里面最贵的物品等等。怎么办?看下面方法一:利用数组自身的特性list.index(target),其中a是你的目标list,target是你需要的下标对应的值li=[10,8,9,26,72,6,28]print(li.index(8))但是,......
  • Python模块重载的五种方法
    1.环境准备新建一个foo文件夹,其下包含一个bar.py文件$treefoofoo└──bar.py0directories,1filebar.py的内容非常简单,只写了个print语句print("successfultobeimported")只要bar.py被导入一次,就被执行一次print2.禁止重复导入'由于有sys.module......
  • Python打印类的属性
    一、使用__dict__打印类的属性classPerson:def__init__(self,name,age):self.name=nameself.age=ageperson=Person("Tom",18)print(person.__dict__)使用__dict__方法可以直接打印出类的属性及其对应的值。上述代码中,我们首先定义了一个P......
  • 什么是Python中的闭包与装饰器
    1.闭包闭包(Closure)是指在一个函数内部定义的函数,并且这个内部函数可以访问其外部函数作用域中定义的变量。在Python中,闭包是一个强大且灵活的编程工具,可以实现许多有趣和实用的功能。让我们通过一个简单的示例来说明闭包的基本概念:defouter_function(x):definner_f......
  • Python-无ABI文件打包EVM合约方法名及参数方法
    #pipinstalleth-abiimporteth_abi#pipinstallsafe-pysha3fromsha3importkeccak_256defkeccak_256_hash(data:str)->bytes: k=keccak_256() k.update(data.encode()) returnk.digest()defpack_abi_data(method:str=None,params:list=No......