1. 机器学习期末复习笔记概述
作为计算机科学领域最具变革性的技术之一,机器学习已经成为现代技术栈的核心组成部分。这份复习笔记旨在帮助学习者系统梳理机器学习课程的核心知识体系,特别适合期末考试前的集中复习。不同于碎片化的网络资料,本笔记采用"概念树"结构组织内容,从基础数学原理延伸到最新算法实现,覆盖监督学习、无监督学习和强化学习三大范式。
我在过去三年辅导机器学习课程的过程中发现,学生在期末复习时普遍面临三个痛点:概念理解表面化、数学推导不连贯、代码实践与理论脱节。这份笔记针对性地设计了"三位一体"的学习路径:每个算法模块都包含直观解释、数学推导和NumPy实现三个层次,确保从理论到实践的平滑过渡。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心知识体系解析
2.1 数学基础强化
机器学习的数学基础可以归纳为四个关键支柱:
-
线性代数:重点掌握矩阵运算的几何意义。例如,矩阵乘法对应线性变换的组合,特征分解揭示了数据的主要变化方向。建议特别关注:
- 奇异值分解(SVD)在降维中的应用
- 正定矩阵在优化问题中的性质
- 矩阵求导的链式法则(尤其反向传播中的应用)
-
概率论:贝叶斯定理是理解生成模型的核心。需要熟练:
- 多元高斯分布的性质
- 最大似然估计与最大后验估计的差异
- 指数族分布的通用形式
-
优化理论:梯度下降的收敛条件常被忽视。关键点包括:
- 学习率与收敛速度的关系
- 凸函数与非凸函数的优化特性对比
- 约束优化中的KKT条件
-
信息论:交叉熵的实际计算常出现数值稳定性问题。建议掌握:
- KL散度与交叉熵的关联
- 信息增益在决策树中的计算技巧
- 互信息在特征选择中的应用
实践提示:使用Jupyter Notebook建立公式推导-代码验证的闭环。例如,手动推导逻辑回归的梯度表达式后,立即用NumPy实现验证。
2.2 监督学习深度剖析
2.2.1 线性模型进阶
超越基础的线性回归,需要理解:
- 正则化路径分析:L1正则化如何产生稀疏解
python复制# Lasso路径可视化 from sklearn.linear_model import lasso_path alphas, coefs, _ = lasso_path(X, y) plt.plot(alphas, coefs.T) - 多分类扩展:One-vs-Rest与Multinomial的差异
- 鲁棒回归:Huber损失对异常值的处理机制
2.2.2 决策树与集成方法
常考重点包括:
-
分裂准则对比:
准则 公式 适用场景 信息增益 IG = H(D) - Σ|Dᵥ|/|D| H(Dᵥ) 分类任务 基尼指数 Gini = 1 - Σpᵢ² 计算效率高 方差减少 Var(y) - Σ|Dᵥ|/|D| Var(yᵥ) 回归任务 -
随机森林的两种随机性:
- 数据层面的Bootstrap采样
- 特征层面的随机子空间
-
GBDT的梯度视角:
- 将Boosting理解为梯度下降
- 损失函数的选择与Hessian矩阵的关系
2.3 无监督学习关键点
2.3.1 聚类算法
- K-means的EM解释:E步对应样本分配,M步更新聚类中心
- 谱聚类:拉普拉斯矩阵的特征分解实际作用
- 密度聚类:参数ε和MinPts的联合调参技巧
2.3.2 降维技术
PCA的SVD实现往往比协方差矩阵分解更稳定:
python复制# 基于SVD的PCA实现
U, s, Vt = np.linalg.svd(X_centered)
components = Vt[:k]
2.4 神经网络与深度学习
2.4.1 反向传播的数值验证
用中心差分法验证梯度计算:
python复制def numerical_gradient(f, x, eps=1e-5):
grad = np.zeros_like(x)
for i in range(x.size):
tmp = x[i]
x[i] = tmp + eps
fxh1 = f(x)
x[i] = tmp - eps
fxh2 = f(x)
grad[i] = (fxh1 - fxh2) / (2*eps)
x[i] = tmp
return grad
2.4.2 常见问题解决方案
| 问题现象 | 可能原因 | 解决策略 |
|---|---|---|
| 梯度爆炸 | 初始化不当 | Xavier初始化 |
| 死神经元 | ReLU缺陷 | LeakyReLU |
| 训练震荡 | 学习率过大 | 学习率衰减 |
3. 模型评估与优化
3.1 评估指标陷阱
- 类别不平衡时的准确率陷阱:采用F1-score或AUC-ROC
- 回归问题的尺度敏感性:R²比分更鲁棒
- 聚类评估的复杂性:轮廓系数与调整Rand指数
3.2 超参数优化实战
贝叶斯优化比网格搜索更高效:
python复制from skopt import BayesSearchCV
opt = BayesSearchCV(
SVC(),
{'C': (1e-6, 1e+6, 'log-uniform')},
n_iter=32
)
opt.fit(X_train, y_train)
4. 高频考点与解题技巧
4.1 推导题常见模式
-
逻辑回归梯度推导:
- 从sigmoid函数导数开始
- 链式法则应用要点
- 向量化表示技巧
-
SVM对偶问题转换:
- 拉格朗日函数构建
- KKT条件的应用
- 核技巧的数学基础
4.2 编程题实现要点
- 避免循环:多用NumPy广播机制
python复制# 低效实现 for i in range(n): for j in range(m): dist[i,j] = np.sqrt((X[i]-Y[j])**2) # 高效实现 dist = np.sqrt((X[:,None]-Y[None,:])**2) - 数值稳定技巧:
- log(1+exp(x))的实现
- softmax的减最大值技巧
5. 复习策略与资源推荐
5.1 高效复习路线图
-
诊断阶段(1天):
- 通过往年试题定位薄弱环节
- 建立知识漏洞清单
-
攻坚阶段(3天):
- 按模块突破核心算法
- 推导+实现双轨并行
-
模拟阶段(2天):
- 限时完成模拟试题
- 错题归因分析
5.2 优质资源索引
-
可视化工具:
- TensorFlow Playground(理解神经网络)
- MLU-Explain(决策过程可视化)
-
代码库:
- scikit-learn源码重点阅读(特别是_base.py)
- CS229的Python实现合集
我在实际教学中发现,最有效的复习方法是"费曼技巧"的变体:尝试向虚拟听众讲解某个算法,当遇到表述不清的地方就是需要重点强化的知识点。建议将每个核心算法整理成5分钟的口述摘要,录音后回放检查知识盲点。
