卷 II · 立题CH 08工位 08/24

Step 2.3–2.4:探索,与那张数据质量清单

工位 STEP 2.3 / 2.4 探索数据 · 验证数据质量 10% 的另一半 评分员在找:图不是配图,是发现——每张图配一句「所以我在 Step 3 要做什么」。以及一张按问题类型列出的质量清单,不是一句「数据质量良好」。

这一章的核心是一个态度转变:探索不是「画几张图让报告好看」,而是主动去找麻烦。你在 2.3 找到的每一个麻烦,都会变成 2.4 清单上的一行,再变成 Step 3 里的一个具体动作,最后在 Step 8 里变成一句「因为我们在 3.2 做了 X,所以这里的结果可信」。找不到麻烦的探索报告,说明探索得不够。

Step 2.3Step 2.4相关矩阵Pearson vs Spearman提案自检

三种图,各回答一个问题

2.3 只需要三类图就够了,前提是每一类都真的在回答问题:

回答什么要看的东西
单变量分布(直方图/箱线图)这一列自己长什么样?偏态、多峰、边界堆积(大量值卡在 0 或 100)、离群点
相关矩阵(热力图)列与列之间、列与目标之间有关系吗?与目标强相关的列(有用)、列之间强相关(共线性隐患)、与目标相关度异常高的列(泄漏嫌疑)
散点图(自变量 vs 目标)这个关系是什么形状直线/曲线/喇叭形(异方差)/分层(有隐藏分组)

下面这台探索台在示例数据上真的算了这三类图——三个标签页各切一次:

第一个发现:Pearson 和 Spearman 差了 0.2

切到「相关矩阵」标签页,在 Pearson 和 Spearman 之间来回切一次,看 gdp_pcu5mr 那一格:

相关系数它衡量什么
Pearson r−0.674直线关系的强度
Spearman ρ−0.872单调关系的强度(只看排序)

Spearman 明显更高,意味着关系很强、但不是直线。切到散点图看一眼就明白了:点云是弯的——人均 GDP 从 200 涨到 1 000 时死亡率暴跌,从 5 000 涨到 15 000 时几乎不动。这在发展指标里是常识(边际效应递减),在数据上就表现为这两个系数的差距。

这一个观察直接产生了 Step 3.3 的一个动作:构造 log_gdp = log₁₀(gdp_pc)。第 11 章会验证:取完对数后 Pearson 从 −0.674 变成 −0.864,几乎追上了 Spearman,同时偏度从 3.39 掉到 0.02

◆ 一个万能的 2.3 写法:每张图配一句「所以」

把每张图的图注写成两句:第一句陈述看到了什么,第二句写「因此在 Step X 我们将……」。

图 2.3-4 人均 GDP 与 5 岁以下死亡率的散点图(n = 480)

观察:两者呈明显负相关,但关系非线性——点云在低收入端陡降、
在高收入端趋平。Pearson r = −0.674,而 Spearman ρ = −0.872,
两者相差 0.198,进一步支持「单调但非线性」的判断。
因此:在 Step 3.3 构造 log₁₀(人均 GDP) 作为附加特征,并在
Step 6 比较使用原始值与对数值的模型表现(见表 6.2-1)。

这样的图注写三四个,2.3 就满分了。它证明的不是你会画图,是你会读图。

第二个发现:那个和目标相关 0.9998 的列

相关矩阵最重要的用途之一,是当泄漏探测器。示例数据里有一列 rate_reported(卫生局上报的死亡率),它和目标 u5mr 的相关系数是 0.9998;另有一列 deaths_registered(登记死亡数),相关 0.953

任何单列与目标的相关系数超过 0.95,先假设它是泄漏,再去查它的定义。这两列都是「同一件事的另一种记录」——你在预测的东西已经躺在特征里了。第 13 章会把它留在模型里跑一遍,看看会发生什么(准确率 98.6%,AUC 0.999,零误报,而模型什么都没学到)。

在 2.3 就抓住它,成本是零;在 Step 8 才发现,你要重跑整条链。

第三个发现:一列纯噪声

相关矩阵里 spend(卫生支出占 GDP 比)那一列全是接近 0 的数(与目标 −0.096)。这是我故意放进示例数据的无关列,作用是让你看清「无关列」在后面每一步留下的痕迹:

  • 第 12 章 PCA:它会独占一个主成分(PC2,解释 14.2% 的方差,载荷 0.999 全压在它身上)——因为它和谁都不相关,所以只能自己成一个方向。「解释方差高」不等于「有用」。
  • 第 15 章决策树:深度放到 3 以上时,树会拿它劈一刀,训练准确率因此从 0.878 涨到 0.905,测试准确率从 0.861 掉到 0.799。这就是过拟合的现场。

真实数据里也一定有这样的列。2.3 的相关矩阵是你第一次、也是最便宜的一次识别它们的机会。

2.4:六类质量问题,一张清单

作业说明对 2.4 的要求只有四个字「verify the data quality」,但它是 Step 3 的施工图。按问题类型分六类列表,每类写:发现了什么、多少、怎么处理、在哪一节做。

类型示例数据里的情况处置去哪
① 缺失doctors 36 格(7.4%)、literacy 55 格(11.3%)分列决定填补策略;literacy 疑非随机,用分组填补3.2 / 第 9 章
② 哨兵值vaccine 有 5 行 = 999(超出 0–100)先转成真缺失,再按 ① 处理3.2 / 第 9 章
③ 量纲/录入错gdp_pc 4 行超中位数 100 倍判为多打三个零,除以 1000(不是删3.2 / 第 10 章
④ 重复7 行除 id 外全字段一致保留第一条,记录去掉几条3.2 / 第 10 章
⑤ 不一致region 大小写/空格 128 处;record_date 两种格式 94 处规范化为标准形式3.2 / 3.5 / 第 10 章
⑥ 异常值(真实极值)清洗后 gdp_pc 仍有 18 个 IQR 异常(3.8%)保留,但在 Step 4 考虑对数变换;建模时报告对结果的影响3.3 / 4.1 / 第 10–11 章
⑦ 泄漏嫌疑rate_reported(r=0.9998)、deaths_registered(r=0.953)从特征集中排除,并说明理由3.1 / 第 13 章

注意第 ③ 类和第 ⑥ 类的处置方式相反:录入错要修,真实极值要留。区分它们靠的不是统计判据,是领域知识——「人均 GDP 八百万美元」不可能,「某个富裕沿海地区人均 16 000 美元」完全可能。这个判断过程写出来,就是 2.4 的分。

⚠ 一句会被扣分的话:「数据质量良好,无需清洗」

如果你的 2.4 写出了这句话,会发生两件事:一是评分员知道你没认真看(任何真实数据都有问题);二是你在 Step 3(15% 的分)里将无话可写——Step 3 的分是靠「你处理了什么」拿的,2.4 找不到问题,Step 3 就没有素材。

如果你的数据真的很干净(比如某些教学数据集),那就主动制造检查记录:列出你检查过的每一项(缺失率、取值域、重复、类别一致性、时间连续性、目标泄漏),逐项写「检查方法 + 结果:无异常」。「我检查了六项,都正常」和「数据质量良好」是完全不同的两句话。

⇄ 2.3–2.4 在三条产线上怎么做
ISASOSASBDAS
分布图Histogram / Distribution 节点df.hist()、Tableau抽样后 toPandas() 再画
相关矩阵Statistics 节点(Correlations)df.corr() + sns.heatmapCorrelation.corr(vecDF)pyspark.ml.stat
散点Plot 节点matplotlib / Tableau抽样后画
质量检查Data Audit 节点一次全给isna()value_counts()duplicated()agg + countDistinct + groupBy().count()

BDAS 的一个实操要点:Spark 上画图要先 .sample().toPandas(),直接 toPandas() 会把整个数据集拉回 driver 内存——这是新手在 EC2 上把 driver 打爆的头号原因。报告里写一句「可视化基于 5% 分层抽样,n = X」,既避免了爆内存又是一个专业细节。

▣ 本章交付物 —— 报告里放什么

1. Step 2.3(一页半):3–5 张图,每张配「观察 + 因此」两句式图注。至少包含一张相关矩阵和一张目标 vs 关键特征的散点。

2. Step 2.4(一页):上面那张七类清单表(发现 / 数量 / 处置 / 去哪一节)。数量必须是具体数字。

3. 一句泄漏声明:「列 X、Y 与目标变量相关系数分别为 0.9998 与 0.953,经核对其定义与目标同源,已从特征集中排除(见 3.1)。」

✎ 提案(Iteration 1)提交前自检 —— 卷 II 到此结束

逐条勾一遍,全过再交:

  • 1.1 有 SDG 编号与原文指标;有决策者与决策动作;有现状基线;有业务侧成功判据。
  • 1.2 五格齐全:资源盘点/要求+编号假设+约束/风险与应对成对/术语表(含泄漏列点名)/成本收益(编号假设+算式+量级结论)。
  • 1.3 分析单元、目标变量与阈值来源、任务类型、输出形态、模型侧判据(含「必须优于基线」)。
  • 1.4 甘特表+关键路径+缓冲+工具技术初评+迭代计划。
  • 2.1 URL/下载日期/许可/行列数/粒度/选列理由/多源拼接与匹配率。
  • 2.2 机器统计表 手写数据字典(含单位与合法范围);类别列与时间列各一段。
  • 2.3 3–5 张图,每张有「观察 + 因此」。
  • 2.4 七类清单,数量具体,每类指向 Step 3 的某一节。
  • 格式:所有图表编号(图 2.3-1、表 2.2-1),正文里被引用过;APA 引用至少 3 条(Fayyad、CRISP-DM、数据来源)。
  • 文件:原始数据副本已存、命名带日期;报告 PDF 命名含姓名与迭代号。

这一章的一句话

探索不是配图,是主动找麻烦:Pearson 与 Spearman 差 0.2 意味着关系是弯的(去构造对数列),单列与目标相关 0.9998 意味着泄漏(去排除它),一列与谁都不相关意味着它将来会骗过你的 PCA 和决策树——找到的每个麻烦都要变成 2.4 清单上的一行,并指向 Step 3 的某一节。

提案交完,进入卷 III:Step 3–4。20% 的分,60% 的工时,以及这门课最隐蔽的一个坑。下一章从缺失值开始——六种做法,各跑一遍给你看代价。