跳转至

13.8   小结

这一章里,小率从“活动推荐规则写不完”出发,一路走到任务类型、泛化诊断、交叉验证、评估指标、特征工程和正则化。机器学习看似工具很多,但主线很朴素:用数据学规律,用验证检查规律能不能迁移到新样本。


13.8.1   一页速查图

图 13.8.1 ML 基础速查


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,因此具有特征选择效果。