把结果读成一句人话(以及为什么必须画图)
Step 8.3 只有三个词:interpret the results。它是全课最短的要求,也是最容易写错的一节——因为写错的方式不是「写得不好」,而是写出一句听起来很专业、其实站不住脚的话。这一章用两个实验说明这有多容易发生:一次是统计量骗你,一次是回归系数骗你。
实验一:四份统计量完全相同的数据
1973 年,统计学家 F. J. Anscombe 造了四组数据,每组 11 个点。它们的均值、标准差、相关系数、回归线、R² 全部相同。下面这台把它们画出来,并当场算了那些统计量:
| 数据集 | x 均值 | y 均值 | 相关 r | 回归线 | 但它其实是 |
|---|---|---|---|---|---|
| I | 9.00 | 7.50 | 0.816 | y = 3.0 + 0.5x | 正常的线性关系+噪声 |
| II | 9.00 | 7.50 | 0.816 | y = 3.0 + 0.5x | 一条完美的抛物线 |
| III | 9.00 | 7.50 | 0.816 | y = 3.0 + 0.5x | 一条完美直线 + 一个离群点 |
| IV | 9.00 | 7.50 | 0.816 | y = 3.0 + 0.5x | x 只有两个取值,整条回归线由一个点决定 |
如果你只报统计量,这四份数据的报告会一字不差:「x 与 y 存在较强正相关(r = 0.816),线性回归显示 x 每增加 1 单位,y 增加 0.5 单位。」
而这句话对第 II、III、IV 组都是错的:II 组的关系是二次的,III 组的相关完全由一个离群点撑起,IV 组更极端——去掉那个 x=19 的点,剩下 10 个点的 x 全是 8,相关系数无法定义。
这就是 Step 8.2 为什么单独占一条(visualize the data, results, models and patterns):可视化不是给报告配图,它是一种检验手段。你在第 8 章那个散点图里看到「点云是弯的」,就是这种检验的成果——它直接导致了第 11 章的对数变换。
- 目标 vs 每个重要特征的散点图。看形状(直线?弯的?分层?),看有没有单点撑起整条关系。
- 回归的残差图(预测值 vs 残差)。理想是一团没有形状的云。如果呈喇叭形 → 异方差;如果有弯曲趋势 → 你漏了一个非线性项。这一张图能让 8.4 的「结果可靠性」讨论立刻有内容。
- 分类的概率分布图(按真实类别分开画预测概率的直方图)。两个峰分得开 → 模型有信心;重叠严重 → 阈值怎么定都会有大量错分。它比 ROC 更直观地解释「为什么召回和精确率不能兼得」。
实验二:同一列数据,两个符号
现在换一种被骗的方式。下面这台对示例数据里的每个数值列做了三件事:算它与目标的相关系数、单独放进回归模型看系数、七列一起放进去看系数:
| 列 | 与 u5mr 的相关 r | 单独入模的系数 | 七列一起入模的系数 | 标准化后(每 1 个标准差) |
|---|---|---|---|---|
| 每千人医生数 | −0.748 | −45.7 | +2.496 | +0.59 |
| 人均 GDP | −0.674 | −0.006499 | +0.0007032 | +1.06 |
| 清洁水覆盖率 | −0.829 | −1.255 | −0.4336 | −4.17 |
| 疫苗覆盖率 | −0.778 | −1.231 | −0.3273 | −3.01 |
看第一行:医生密度与死亡率的相关系数是 −0.748(医生越多,死亡率越低),单独进模型的系数是 −45.7(同一个方向)。但七列一起放进去,它的系数变成了 +2.496 —— 正的。
如果你照着这个系数写解释,会写出:「模型显示增加医生密度会提高儿童死亡率。」这句话会毁掉整份报告的可信度,而它完全是「照着输出写」的结果。
为什么会这样:共线性
第 12 章已经给出了线索:七个特征的第一主成分独占 70% 的方差,说明它们讲的是同一件事——人均 GDP 高的地方,医生多、水干净、识字率高。相关矩阵里这些列之间普遍在 0.7 以上。
当 GDP、清洁水、识字率、城镇化率已经把「发展水平」这件事解释掉之后,剩给医生密度的只是残差里的一点边角——而那点边角的方向可以是任意的。它甚至可能捕捉到一个反向机制:医生多的地方也可能是因为那里病人多、疾病负担重。
正确的写法:
8.3 解释(节选) 在单变量层面,医生密度与 5 岁以下死亡率呈显著负相关 (r = −0.748)。但在纳入全部七个特征的多元回归中,其偏回归 系数变为正(+2.50)。这一符号反转是共线性的典型表现:七个 特征的第一主成分已解释 70.0% 的总方差(见 4.1),说明它们 共同刻画同一潜在维度「综合发展水平」。当经济与基础设施变量 已进入模型后,医生密度的偏效应不再具有独立的解释意义。 因此本报告的解释限定如下: · 本模型用于预测与排序,不用于因果推断; · 单变量层面的相关性可用于描述(「医生稀少的地区风险更高」), 但不可解读为「增加医生将降低死亡率」这一因果主张; · 若需回答后者,应采用第 14 章所述的增量响应建模或准实验设计 (见 9.4 未来增强)。
上表第三列里,人均 GDP 的系数是 +0.0007,医生密度是 +2.496。看起来医生密度的影响大了三千倍——其实完全没有可比性,因为一个的单位是「每 1 美元」,另一个是「每 1 人/千人」。
要比大小,就看标准化系数(第四列:系数 × 该列标准差,含义是「该列变化 1 个标准差时目标变化多少」)。这时才看得出真正最有力的两列是清洁水覆盖率(−4.17)和疫苗覆盖率(−3.01)。
报告里给标准化系数还有一个额外好处:它天然对应「相对重要性」,可以和决策树的特征重要度并排比较——两个来自完全不同算法的排序如果一致,你的结论就有了双重证据。
8.3 的四句话模板
把 Step 8.3 写成四句话,每句一个层次。这个结构能防住绝大多数解释错误:
| 层次 | 句式 | 本例 |
|---|---|---|
| ① 事实 | 模型输出是什么 | 「模型在测试集上召回 0.967、精确率 0.678(阈值 0.15);前 20% 名单覆盖 45.9% 的未达标地区,提升度 2.36。」 |
| ② 模式 | 它抓到了什么结构 | 「风险主要由人均 GDP 划出的一条门槛决定(约 1 200 美元);门槛之上,疫苗覆盖率是否达到 71% 成为区分因素。」 |
| ③ 业务含义 | 决策者该怎么做 | 「贫困地区需基础投入,仅提高疫苗覆盖不足以达标;中等收入地区的边际收益集中在疫苗服务上。名额建议全部投向前两个等分,第三等分起停止。」 |
| ④ 边界 | 这个结论在哪里不成立 | 「本模型不支持因果推断(共线性见上);训练数据为 2015–2023 年 6 个地区,外推至未观测地区需按地区分组交叉验证重估;若统计口径变化,需重新校准阈值。」 |
第 ④ 句是很多人不敢写的,但它恰恰是加分项。「Critical Thinking」那条毕业生能力(LO 里 4、5 都指向它)要的就是这个:你知道自己的结论到哪里为止。一份没有局限性讨论的报告,读起来像推销;有局限性讨论的,读起来像研究。
8.5 迭代:把回头的痕迹留下来
第 2 章已经讲过这一节的价值,这里给一个具体的、可以照抄的写法——它把这本书前面几章的发现串成了一条链:
8.5 Iteration 本项目在解释阶段共触发三次回溯: 第一次(→ Step 3.1):2.3 的相关矩阵显示 rate_reported 与目标 相关系数达 0.9998。返回 3.1 核对其定义,确认为目标变量的同源 记录,予以排除。排除前的模型准确率为 0.986、AUC 0.999,属 目标泄漏所致的虚高。 第二次(→ Step 3.2):首轮采用全局中位数填补 literacy,模型 在低识字率地区的召回偏低。检查发现该列缺失非随机(缺失组的 人均 GDP 系统性更低),改为按 region 分组填补,RMSE 由 6.42 降至 6.40,召回改善(见表 8.4-2)。 第三次(→ Step 6.3):初始树深度取默认值,训练准确率 0.905 而测试准确率仅 0.799。扫描深度 1–8 后发现深度 2 已达最佳测试 表现(0.861),深度 3 起开始过拟合(树在与目标近乎无关的 spend 列上分裂)。最终采用深度 2。 本报告呈现的是第三轮结果;前两轮指标见附录 B。
这一段有三个特点值得模仿:每次回溯都写清「谁触发的 → 回到哪一步 → 改了什么 → 指标怎么变」;三次回溯覆盖了三个不同的步骤(3.1、3.2、6.3);并且诚实地把第一轮那个更好看的 0.986 写出来并解释为什么不要它。
1. Step 8.2:三张诊断图(特征散点、残差图或概率分布图、ROC 或增益图),每张配「观察 + 因此」的图注。
2. Step 8.3:四句话模板(事实 → 模式 → 业务含义 → 边界),约 250 字。
3. 共线性声明(若出现符号翻转):上面那段模板。附标准化系数表,并与树的特征重要度并排比较。
4. Step 8.4:基线对比、指标选择理由(第 18 章)、代价敏感性(第 18 章)、稳定性检查(第 17 章的方差)、局限性清单。
5. Step 8.5:迭代记录,每次一段四要素。至少写一次,最好三次。
这一章的一句话
四份统计量完全相同的数据长得完全不同(所以必须画图),而同一列数据单独入模系数 −45.7、七列一起入模变成 +2.5(所以不能照着系数写因果)——Step 8.3 按「事实 → 模式 → 业务含义 → 边界」四句话写,第四句最不敢写,也最值分。
下一章是 Step 9:假设这个模型真的要用起来。谁来用、多久重训、怎么发现它坏了——而「坏了」的方式可能会让你意外:准确率几乎没掉,精确率掉了 12.7 个百分点。