3. 机器学习基础
机器学习研究如何利用数据获得可泛化的预测或结构。入门阶段最重要的不是记住算法清单,而是建立完整实验观:数据从哪里来、模型学习什么、如何选择模型、怎样判断它对新数据有效。
3.1 问题的基本形式
给定输入
训练通过最小化经验风险选择参数:
损失函数指导参数学习,评价指标衡量任务表现。二者可能相同,也可能不同。例如分类模型常用交叉熵训练,却用准确率、F1 或 AUROC 评价。
3.2 数据划分
- 训练集:用于拟合参数;
- 验证集:用于选择超参数、模型与停止时机;
- 测试集:只用于最终、近似无偏的性能估计。
反复根据测试集调整模型会造成测试信息泄漏。此时测试集实际上已经变成验证集,最终数字会过于乐观。
数据泄漏
常见泄漏包括:
- 在划分前用全部数据计算归一化统计量;
- 同一用户、文档或时间序列的高度相似样本跨集合出现;
- 输入特征包含预测时不可能获得的未来信息;
- 先对全数据做特征选择,再交叉验证。
划分方式应匹配真实使用场景。时间数据通常按时间划分;同一患者或用户的数据应按主体分组划分。
3.3 欠拟合、过拟合与泛化
- 训练集和验证集都差:通常是欠拟合,可能需要更好特征、更强模型或更充分优化;
- 训练集很好而验证集明显较差:通常是过拟合;
- 两者都很好但线上失败:检查数据分布变化、泄漏或评价指标是否错位。
控制过拟合的方法包括正则化、更多数据、数据增强、降低模型复杂度和早停。不要看到过拟合就机械地增加正则项,先确认划分和实现没有问题。
3.4 分类指标
二分类可以从混淆矩阵理解:
| 预测正类 | 预测负类 | |
|---|---|---|
| 实际正类 | TP | FN |
| 实际负类 | FP | TN |
常见指标为:
类别极不均衡时,准确率可能具有误导性。根据错误成本选择指标:漏检代价高时更关注召回率,误报代价高时更关注精确率。
多分类还需区分 micro、macro 和 weighted 平均。Macro-F1 给每个类别相同权重,更容易暴露少数类问题。
3.5 监督学习
监督学习使用带标签样本。基础算法建议按“假设—训练—适用条件”理解:
线性与逻辑回归
线性模型可解释、训练快,是重要基线。逻辑回归通过 sigmoid 将线性输出转换为概率:
k 近邻
kNN 几乎没有显式训练过程,通过邻近样本投票或平均预测。它直观但预测成本高,并对距离尺度敏感,因此通常需要特征标准化。
决策树与集成方法
决策树通过特征划分数据,能够表达非线性关系。单棵树容易过拟合;随机森林通过多个有差异的树降低方差,梯度提升树则逐步纠正现有模型的错误。
支持向量机
SVM 寻找具有最大间隔的决策边界;核方法可以隐式处理非线性特征。它有助于理解间隔、正则化和核技巧,但在超大规模数据上训练成本可能较高。
3.6 无监督学习
无监督学习没有目标标签,常用于探索数据结构。
- 聚类:k-means、层次聚类等;
- 降维:PCA、t-SNE、UMAP 等;
- 密度估计与异常检测。
k-means 的“类别”只表示在选定距离和特征空间下的分组,不自动具有语义。PCA 寻找最大方差方向,适合压缩和去相关;t-SNE、UMAP 更常用于可视化,但图上的簇不能直接作为严格统计结论。
3.7 半监督学习
半监督学习同时使用少量有标签数据和大量无标签数据。常见思路包括:
- 伪标签:用当前模型给高置信无标签样本生成标签;
- 一致性正则:输入发生合理扰动后,预测应保持稳定;
- 图方法:相似样本之间传播标签。
错误伪标签可能被模型不断强化,因此需要置信度阈值、类别平衡和独立验证集。
3.8 标准实验流程
- 明确任务、数据单位与评价指标;
- 划分数据并锁定测试集;
- 建立简单基线;
- 只在训练集拟合预处理;
- 用验证集选择特征、模型和超参数;
- 固定方案后评估测试集;
- 报告均值、方差、错误案例和局限。
本章任务
选择一个公开表格数据集,分别训练逻辑回归、决策树和随机森林:
- 比较训练集与验证集指标;
- 绘制混淆矩阵;
- 解释最常见的错误类型;
- 人为制造一次数据泄漏并观察指标变化;
- 用一页表格总结模型性能、速度和可解释性。
推荐学习
- 李宏毅 Machine Learning 2017 Fall:覆盖回归、分类、梯度下降、半监督与无监督学习等主题
- scikit-learn User Guide:算法、预处理、模型选择与评价的官方文档