监督学习实战:回归建模与模型选型
这本书在教你一件事:怎么判断一个模型"真的能用"。
先给你一个数字:R² = 0.987。
看起来是个好成绩。但如果我告诉你,把同一份数据换一种划分方式,同样的模型 R² 只有 0.964 —— 你该相信哪个?
答案:都不是。 你要先搞清楚那 0.023 的差值从哪来。这本书的大半篇幅,就是在做这件事。
这本书的独特之处
市面上大多数机器学习入门书是这样的顺序:
讲算法 → 写代码 → 看分数 → 分数高就"学会了"这本书是反过来的:
先做出一个"看起来很准"的模型
↓
然后亲手证明它是假的
↓
再老老实实重建一套可信的评估方法
↓
最后你剩下的分数,才是真的所以你会在这里看到大量这样的段落:
"这个写法跑出来 R² = 0.987,比正确做法高 0.023。 我们花一整章证明这 0.023 是假的 —— 它是模型把'答案'记住了。"
能亲手证伪自己的结果,是数据科学最重要的能力。
适合谁读
适合你,如果:
- 会 Python 基础(变量、循环、函数、列表字典)
- 会 pandas 的基本操作(
read_csv、选列、筛选、groupby) - 想真正理解机器学习在做什么,而不是调包
- 或者:你已经能跑通
sklearn,但对自己的分数没有信心
不太适合,如果:
- 你完全没写过 Python(建议先看 面向 AI 开发的 Python 快速入门)
- 你想学深度学习 / 神经网络(这本讲的是表格数据的经典机器学习)
- 你在找一本"算法推导"教材(这本重判断力,轻数学证明)
你会学到什么
按四个能力来组织,而不是按算法列表:
| 能力 | 具体表现 |
|---|---|
| 把问题变成 X / y | 知道哪一列不能当特征、为什么 X 必须是二维表 |
| 做可信的评估 | 会按实体划分、会算四个回归指标、会报告"均值 ± 标准差" |
| 选择合适的模型 | 说得清线性/树/森林/提升/高斯过程各治什么病、各要什么代价 |
| 诊断而不是瞎调 | 看学习曲线判断"该加数据还是换模型";认出泄漏、过拟合、欠拟合 |
一个贯穿全书的判断力训练
这本书反复教你问同一组问题:
这个分数可信吗?
├─ 划分方式对吗?(按行随机 → 泄漏)
├─ 报告的是一次结果还是一组结果?(单次划分 = 运气)
├─ 卡点在模型还是在特征?(四路横评只差 0.005,说明不在模型)
└─ 业务需要的是精度,还是"知道自己不确定"?最后一问会带你遇到一个反直觉的结论: 高斯过程(GPR)的 R² 只有 0.827,比随机森林的 0.965 低得多 —— 但在"要不要让这支设备退役"的决策里,它反而更值得推荐。 因为它会告诉你"这个预测我只敢 ±0.013,那个我不敢超过 ±0.109"。
精度不是唯一指标。 这是本书想留给你的最后一个观念。
主线项目
全书围绕同一张表展开:60 支电芯、21,239 行测量记录, 每行是一个 100 圈窗口的汇总(7 个特征 + 1 个标签)。
为什么用"设备退化"这个场景:它天然满足三个教学需求 ——
- 数据是时间序列的快照 → 同一实体的相邻行高度相似 → 完美演示划分泄漏;
- 标签有物理上限但测得有噪声 → 说明"R² 上不了 0.999"是数据的性质,不是模型不行;
- 业务上真的需要不确定性 → 让"GPR 的置信带"不是炫技,而是刚需。
你不懂电池也完全不影响阅读 —— 书里所有结论都是关于"建模方法"的, 物理背景只在数据说明里出现一次。
学习路径
| 部分 | 章 | 主题 | 你会拿走什么 |
|---|---|---|---|
| A 地基 | 01–08 | 环境、监督学习框架、特征与标签、线性回归、四个指标 | 能把一个问题变成 X/y 并算对指标 |
| B 划分与泄漏 | 09–12 | 按实体划分、划分泄漏、交叉验证、分组交叉验证 | ★ 一套可信的评估纪律 |
| C 模型 | 13–20 | 多特征、系数的读法、缩放与 Pipeline、树、森林、偏差方差、提升、特征重要性 | 说得清每个模型治什么病 |
| D 诊断 | 21–23 | 学习曲线、正则化、四路横评 | 会诊断,不再瞎调参 |
| E 不确定性与选型 | 24–27 | 高斯过程、置信带、模型选型的四个维度、❖ 阶段目标 | 能在业务场景里做选型决策 |
★ 标记的是最值得花时间的章节。 第 09–12 章是全书的重心 —— 如果你时间有限,至少把这四章读完。
四条读法
① 按顺序读(推荐):主线依赖前面的纪律,跳读容易错过"为什么这么划分"。
② 只读 B 部分 + 第 20 章:如果你已经在用 sklearn 但分数不稳定, 第 09–12 章(划分与泄漏)+ 第 20 章(特征重要性的三个陷阱)能立刻改善你的判断。
③ 当参考手册:每章的「常见坑」小节就是速查表。报错或数字不对时先来搜。
④ 只跑第 27 章:阶段目标章一条命令产出完整横评报告 —— 但先看代码再跑,否则你只会得到一堆数字。
每章的固定结构(知道这个能省很多时间)
┌─ 开头:这一章要解决什么 + 最容易踩的坑
├─ 概念讲解:是什么、为什么、和什么容易混
├─ 可运行示例:代码 + 真实输出 + 逐段解释
├─ 常见坑:报错信息长什么样、为什么、怎么改
├─ 练习:3 道题,答案默认折叠(先自己做!)
└─ 面向工程实践:这一章的知识在真实项目里用在哪关于练习答案:每道题的答案都放在折叠块里(像下面这样,点击展开)。 强烈建议:先自己在 demos/ 下敲一遍、跑出结果,再点开对照。 这本书的价值在于"你自己的判断有没有变准",抄答案得不到它。
配套数据包怎么用(重要)
本课程刻意不提供示例代码和练习答案的文件包 —— 只提供数据和环境工具。
为什么:机器学习每一步都很"轻",三五行代码就出结果。正因为轻, 只有结果是你自己跑出来的,你才会真的去质疑它。这本书的全部价值就是教你去质疑。
所以:代码在书里(每章都有完整代码 + 真实输出),你敲进 demos/ 里。
数据包下载:regression-model-selection-code.zip(约 400 KB)。
包里有:
code/
├── README.md 依赖说明 / 数据字段与特点 / 校验和 / 常见问题
├── requirements.txt
├── check_env.py 环境自检
└── data/battery/
├── soh_features.csv 特征表(21,239 行 × 9 列)
└── README.md 字段说明与数据特点(动手前读一遍)开始方式:
cd code
python check_env.py # 确认环境与数据都就位然后从第 03 章开始,自己建 demos/ 目录,把代码敲进去。
第 01 章会详细讲环境怎么装、数据怎么验、出错了怎么修。
纪律一:拿到数据先问"这一行是什么"
这份数据的每一行不是一支设备的快照,而是一支设备在某个时间窗口的汇总。
df.shape # (21239, 9) 多大规模?
df["cell_id"].nunique() # 60 多少支设备?
df.groupby("cell_id").size() # 每支多少行?→ 约 354 行第三行是关键:发现"每支设备有 354 行",你就该警觉 —— 这些行彼此相关,不能当成 21239 个独立样本。
这一个认知,直接决定了后面划分方式的对错。
为什么:几乎所有的"模型分数虚高"事故,根源都是 "把相关的数据当成了独立的样本"。
纪律二:报告的分数要能追溯
这本书要求你养成一个习惯:任何数字,都要能说清它是怎么来的。
❌ "模型 R² 大概 0.96。"
→ 哪份数据?什么划分?几个特征?一次还是交叉验证?
✅ "在按电芯划分(48 支训练 / 12 支测试)下,
随机森林(200 棵,random_state=42)测试集 R² = 0.96503,
7 个特征,训练 1.9 秒。"
→ 别人可以复现,也可以质疑。为什么重要:你会在第 09 章看到,仅仅改一个划分参数, 同一个模型的 R² 就能从 0.964 变成 0.987。报告里不提划分方式,那个分数就是没有意义的。
纪律三:先写下预期,再跑代码
这本书每一章几乎都有"看起来对但其实错"的写法。
我建议你在跑每章示例之前,先用注释写下你的预期:
# 我预期:把 soh 留在特征里,R² 会接近 1.0
# 因为:那就是把答案喂给模型了
# 实测:______先有预期、再看结果,你才会注意到"现实和直觉的差距" —— 而那个差距,就是这一章真正要教的东西。
直接跑代码的人只会看到数字;先写预期的人会看到自己思维的漏洞。
关于数据的重要声明
本书使用的全部是合成数据:
- 为教学构造的合成数据,不联网、不依赖任何外部数据集;
- 数据固定不变(校验和见数据包里的
data/battery/README.md), 同一份代码重复运行结果一致; - 真实设备的测量数据属于企业机密,本书全程不使用;
- 数据是理想化的:退化单调、无随机跳变、无工况切换。 只模拟了"每支设备固定的传感器零点偏置 + 缓慢漂移"。
三条必须记住的边界:
- 数据本身是"测量记录",不是"上帝视角" —— 所以 R² 天然上不了 0.999,那是数据的性质,不是模型不行;
- 标签也是测出来的,最大值 1.0017 —— "健康度"是估算量,不是真值;
- 方法可迁移,模型不可直接上线。 真实场景必须重新采集、重新标定。
三条纪律(贴在这里,随时回看)
① 按"实体"划分,不按行划分。看到 0.99 先怀疑泄漏。
② 报分数要带方差:R² = 0.9580 ± 0.0117,而不是 0.96。
③ 精度不是唯一指标:能说"我不确定"的模型,常常更值得用。准备好了就从第 01 章开始装环境。
如果你已经会 sklearn、只是想改善判断力,可以直接跳到 第 09 章 · 训练 / 测试划分 —— 但遇到看不懂的术语时记得回前面查。
目录
暂无章节