13.8 小结¶
这一章里,小率从“活动推荐规则写不完”出发,一路走到任务类型、泛化诊断、交叉验证、评估指标、特征工程和正则化。机器学习看似工具很多,但主线很朴素:用数据学规律,用验证检查规律能不能迁移到新样本。
13.8.1 一页速查图¶
13.8.2 核心知识地图¶
flowchart TD
A["问题能否从历史例子中学习"] --> B["数据和标签"]
B --> C["有标签:监督学习"]
B --> D["无标签:无监督学习"]
C --> E["训练模型"]
D --> E
E --> F["用验证集检查泛化"]
F --> G["诊断偏差与方差"]
G --> H["交叉验证降低切分运气"]
H --> I["用合适指标表达任务代价"]
I --> J["特征工程提升信号"]
J --> K["正则化控制复杂度"]
13.8.3 ML 基础速查表¶
| 概念 | 一句话 | 关键检查 |
|---|---|---|
| 机器学习 | 从例子中学习可泛化规则 | 新样本是否更准 |
| 泛化 | 新样本上的表现 | 是否只背了训练集 |
| 监督学习 | 训练数据含标签 \(y\) | 分类还是回归 |
| 无监督学习 | 训练数据无标签 | 分组是否可解释 |
| 偏差 | 平均预测离真实规律远 | 训练和验证都差 |
| 方差 | 对训练样本变化太敏感 | 训练好、验证差 |
| 交叉验证 | 多次轮流验证 | 切分是否防泄漏 |
| 评估指标 | 任务代价的数学表达 | 错哪种更贵 |
| 特征工程 | 把原始信息变成有效信号 | 是否在 CV 内处理 |
| 正则化 | 通过约束复杂度减少过拟合 | 惩罚是否过强 |
13.8.4 建模问题决策树¶
flowchart TD
A["训练时有目标列 y 吗"] -->|有| B["y 是类别还是数字"]
A -->|没有| C["想分组还是压缩维度"]
B -->|类别| D["分类:看 Precision / Recall / F1 / AUC"]
B -->|数字| E["回归:看 MAE / RMSE / R²"]
C -->|分组| F["聚类:检查簇稳定性和可解释性"]
C -->|压缩| G["降维:检查信息保留和可视化结构"]
D --> H["用交叉验证估计泛化"]
E --> H
F --> H
G --> H
H --> I["诊断偏差 / 方差"]
I --> J["改特征、调复杂度、加正则"]
13.8.5 最常见的三类翻车¶
第一类:只看训练集
训练集分数高,只能说明模型记住了旧题。是否真的学会,要看验证集、交叉验证或独立测试集。
第二类:用错指标
类别极不平衡时,准确率可能很好看却没用。先问哪种错误代价更高,再选 Precision、Recall、F1、AUC 或回归误差指标。
第三类:预处理泄漏
标准化、缺失填充、Target Encoding、特征选择,都必须放进训练折内部。先用全量数据预处理再交叉验证,会让结果过于乐观。
13.8.6 术语对照表 (Glossary)¶
| 中文 | English | 本章含义 |
|---|---|---|
| 机器学习 | Machine Learning | 从数据中学习可泛化规则 |
| 泛化 | Generalization | 在新样本上的表现 |
| 监督学习 | Supervised Learning | 训练数据含标签 |
| 无监督学习 | Unsupervised Learning | 训练数据无标签 |
| 分类 | Classification | 预测类别 |
| 回归 | Regression | 预测连续数值 |
| 偏差 | Bias | 系统性偏离真实规律 |
| 方差 | Variance | 对训练样本变化的敏感性 |
| 交叉验证 | Cross Validation | 多次切分估计泛化能力 |
| 混淆矩阵 | Confusion Matrix | 分类结果四格表 |
| 特征工程 | Feature Engineering | 构造和清洗模型输入变量 |
| 正则化 | Regularization | 通过约束复杂度减少过拟合 |
小率的笔记本
机器学习的主线不是“换更大的模型”,而是“让规律在新样本上站得住”。先分清任务类型,再用交叉验证和合适指标评估,最后用特征工程和正则化调节模型表现。
13.8.10 练一练¶
本章核心练习题汇总。建议先动笔再看参考答案。
练习 13.1.1
给定校园活动推荐任务,任务 \(T\)、经验 \(E\)、性能 \(P\) 分别可以是什么?
参考答案
\(T\) = 给新同学推荐合适活动;\(E\) = 历史兴趣、活动记录和选择;\(P\) = 推荐命中率、满意度、F1 等。
练习 13.2.1
判断:把同学按兴趣自动分群,但没有目标列。这属于哪种范式?
参考答案
无监督学习中的聚类。模型给出分组线索,分组含义需要人解释和验证。
练习 13.3.1
训练 F1 = 0.99,验证 F1 = 0.70,更像高偏差还是高方差?
参考答案
更像高方差,也就是过拟合。可以考虑加数据、降复杂度、增强正则、检查泄漏。
练习 13.4.1
同一位同学有 10 条历史记录,交叉验证时能随机拆开吗?
参考答案
不建议。应按同学分组,例如使用 GroupKFold,避免同一个人同时出现在训练和验证中。
练习 13.5.1
1000 人中只有 50 人会报名,模型全预测“不报名”。准确率是多少?这个模型有用吗?
参考答案
准确率是 95%,但模型没有找出任何会报名的人,Recall = 0,因此对寻找潜在成员的任务没有用。
练习 13.6.1
标准化应该在全量数据上先做完,再交叉验证吗?
参考答案
不应该。标准化参数必须只由训练折估计,最好放进 Pipeline,避免验证折信息泄漏。
练习 13.7.1
Ridge 和 Lasso 的主要区别是什么?
参考答案
Ridge 使用 L2 惩罚,通常让参数变小但不为 0;Lasso 使用 L1 惩罚,可能把部分参数压成 0,因此具有特征选择效果。
