收益:
- 能够使用适当的图表(直方图、箱线图、散点图)探索变量的分布、中心、分布和异常。
- 能够正确解释相关性并将其与散点图一起读取,而不会将其与因果关系混淆
- 能够理解汇总统计数据可能会产生误导(Anscombe 课程)并提出确定建模方向的假设。
在建立模型之前,有必要了解数据。正如医生不会在没有检查患者的情况下开药一样,数据科学家不会在没有“检查”数据的情况下建立模型。这种检查称为探索性数据分析(简称EDA):它是通过视觉和图形方式发现数据的分布、关系、惊喜和陷阱的阶段。 EDA 的目的是生成假设、捕获错误并确定建模方向。人工智能在这个阶段是一个非常强大的助手:它建议哪种图表合适,编写代码,解释分布。但一个人可以根据他/她的领域知识来决定他看到的模式是真实的还是巧合。
EDA 寻找什么?
EDA 寻求四个问题的答案。分布:每个变量如何分布——是对称的、倾斜的还是双峰的?集中趋势和分布:平均值、中位数、标准差是多少?关系:变量之间如何相关?异常:是否存在意外的值、差距、分组?这四个问题决定了哪个功能可以工作以及哪个模型合适。
让我们定义一些基本概念。直方图是将数值变量的值划分为区间并显示每个区间中有多少个观测值的图表;这是查看分布的最快方法。偏度是分布向一个方向的偏移;收入等变量向右倾斜(大多数较低,少数非常高)。箱线图一目了然地显示中位数、四分位数和异常值。散点图显示两个数值变量与点云的关系。
相关性:有关系但要小心
相关性——衡量两个变量如何共同变化的指标; -1 到 +1 之间的数字 — 是 EDA 最常用和最容易被误解的工具。 +1表示完美的同增,-1表示完美的反比关系,0表示没有线性关系。有两个大陷阱。首先,著名的规则:相关性不是因果性。窒息病例随着冰淇淋销量的增加而增加;不是因为一个导致另一个,而是因为夏天(隐藏的第三个变量)触发了两者。其次,相关性仅衡量线性关系;它可能表明存在很强但接近 0 的曲线关系。因此,在查看相关性时,请务必同时查看散点图。
注意:当AI给出相关数时,它可能会陷入“A增加B”之类的因果语言。这很危险。相关性仅表示共同变动;只有经验、领域知识和仔细的推理才能确定原因。
安斯科姆四重奏:为什么不只看数字
统计学中有一个著名的例子:安斯科姆四重奏。四个不同的数据集具有几乎相同的均值、相同的方差和相同的相关性(0.82);但当绘制成图表时,它们看起来完全不同——一条是直线,一条是曲线,一条是由单个异常值拉动的云。教训很明确:汇总统计数据具有误导性,必须查看图表。人工智能可以为你提供平均值和相关性,但在没有看到图表的情况下相信这些数字就会陷入安斯科姆陷阱。
下表总结了哪个图表适合哪个问题:
问题
合适的图形
显示什么
单个变量的分布
直方图/KDE
形状、偏度、顶点数
中心值和异常值
箱线图
中位数、四分位数、异常值
两个数的关系
散点图
方向、强度、曲率
品类比较
条形图
组间差异
随着时间的推移而改变
折线图
趋势、季节性
多元关系
相关热图
一般关系矩阵
辛普森悖论:聚合数据可能会说谎
EDA 中需要注意的一个偷偷摸摸的陷阱是辛普森悖论:当所有数据一起检查时,一种模式可能显示一个方向,但当数据被划分为有意义的子组时,模式可能会显示相反的方向。经典例子:大学中女性申请者的整体录取率似乎低于男性;但从院系来看,大多数院系女性的录取率高于男性。从哪里?女性申请竞争更激烈(录取率更低)的部门;组合后的数字存储这个隐藏变量。这个教训很明确:在查看总数或平均值时,请务必检查该数字在分解为有意义的子组(段、周期、通道)时是否讲述了相同的故事。当人工智能给你一个综合费率时,询问“当你细分它时它仍然有效”会尽早发现大多数误导性的结果。
三个迷你箱子
案例1——两座隐山。一位分析师发现顾客的平均年龄为 41 岁,并将其描述为“中年人群”。但直方图显示了两个峰值:22-28 岁和 55-62 岁年龄组。平均41分实际上并不能代表任何人。教训:在相信均值之前先绘制分布图。
情况 2 — 虚假相关。一个团队发现“广告支出”和“销售额”之间的相关性为 0.78,并将预算增加了一倍。然而,引发这两者的都是季节性活动。在非活动期间,相关性下降至 0.10。 34万里拉的额外广告并没有带来预期的回报。教训:将相关性误认为因果关系的代价是高昂的。
案例 3——孤独的逆向投资者所画的界限。房地产分析显示平方英尺与价格之间存在密切关系 (r=0.80)。当绘制散点图时,几乎整个关系都是由一栋价值 1200 万里拉的豪华别墅创造的;当该点被移除时,相关性下降至 0.31。教训:始终阅读相关性和散点图。
四个可复制模板
1)自动EDA总结:
我有熊猫 df。编写代码生成:(1) df.info() 和 df.describe(),(2) 每个数字列的直方图,(3) 每个分类列的计数。不评论,只生成发现代码;我解释这些模式。
2)相关性+视觉(注意因果关系):
编写代码来绘制数字列的相关矩阵和热图。还绘制 3 个最高相关对的散点图。在输出中添加注释行,提醒您相关性并不意味着因果关系。不要做出因果断言。
3)分布诊断:
对于“收入_tl”列:编写生成直方图、箱线图、偏度值和中值/均值比较的代码。我将解释分布是否倾斜;只需给出代码即可。
4)段比较:
按“渠道”(网络/移动)比较客户:编写代码,生成每个渠道的平均金额、中位数金额、订单数和金额分布的箱线图。建议哪种测试适合两个通道之间差异的统计显着性,但决定由我决定。
弱提示/强提示
弱提示:
在这些数据中找到一些有趣的东西。
“有趣”没有定义;人工智能看不到数据,因此它要么编造数据,要么做出一般性陈述。没有方向,没有变数,没有目的。
强力提示:
您的角色:EDA 助理。 df 列:年龄(整数)、收入_tl(浮点)、城市(类别)、渠道(网络/移动)、金额(浮点)。目的:发现影响“量”的因素。任务:(1) 绘制金额分布的代码,(2) 金额与年龄和收入_tl 之间的分布图,(3) 渠道细分中金额的箱线图。建立因果关系;只需生成发现代码,我就会解释该模式。
这里,“因果关系”的目的、变数和界限是明确的。
常见错误
- 仅依靠汇总统计数据。正如安斯科姆四重奏所示,相同的均值隐藏着截然不同的分布;见图表。
- 将相关性误认为因果关系。合作并不意味着其中一方会导致另一方;谨防隐藏变量。
- 在没有散点图的情况下查看相关性。单个异常值或曲线会误导数字。
- 用平均值总结双峰/偏态分布。平均值可能不能代表任何人。
- 跳过 EDA 直接进入模型。无法识别的数据意味着盲目的模型。
提示:对于每个新数据集,前 30 分钟只绘制图表:每个数字的直方图、重要对的散点图、类别条形图。这 30 分钟可以防止未来几天出现建模错误。
综上所述
EDA 是在构建模型之前了解数据的阶段,并寻求四个问题的答案:分布、中心分布、关系和异常。汇总统计数据可能会产生误导;看图表是必须的(Anscombe 讲座)。相关性是一个强大的工具,但因果关系不是,而且绝对应该与散点图结合起来阅读。人工智能是建议图形和编写代码的强大加速器;但人们用他们的领域知识来解释他们看到的模式是真实的还是巧合。
应用任务
选择一个数据集,然后进行 EDA:提取至少三个数值变量的直方图、两对变量的散点图以及相关热图。找到至少一个“惊喜”(例如具有两个峰值的分布、虚假相关的候选者、由单个异常值吸引的关系)并用一句话解释它。写作时不做任何因果断言。
清单
- [ ] 我是否绘制了每个数值变量的分布图?
- [ ] 我是否查看了与散点图的相关性?
- [ ] 我是否将因果关系和相关关系分开了?
- [ ] 我没有注意到偏斜或双峰分布并盲目相信均值吗?
- [ ] 我是否从我的 EDA 研究结果中得出了至少一个建模方面/假设?