简介:这份PDF资料是电子科技大学机器学习课程的期末考试复习材料,面向正在备考该课程的学生以及希望系统梳理机器学习基础的学习者。内容围绕课程核心考点展开,涵盖梯度下降、模型评估与交叉验证、过拟合、线性回归、决策树、朴素贝叶斯、MP模型、K-means、PCA、SVM、CNN等知识点,并附有简答题与计算题方向,如互信息、SVM优化目标与约束、PCA信号重构推导、K-means流程与目标函数等。资源包内共1个PDF文件,约1008KB,体积轻便,适合打印或移动端随时翻阅。目前已有6458人学习下载,说明其在校内备考群体中具有一定参考价值。读者可借助它快速定位高频考点、对照课堂笔记查漏补缺,并通过计算题与简答题线索把握复习重点,提升期末应试效率。
1. 机器学习期末考到底在考什么:从一道“手推梯度”题说起
电子科技大学机器学习期末考试,这门课的期末卷子有个很明显的特征:它不考你调包调得多溜,而是考你能不能把算法背后的数学链条自己走一遍。我见过太多人平时作业用 sklearn 三行搞定,一到考场面对“请推导逻辑回归的梯度更新公式并说明学习率的影响”就彻底卡住。这门考试真正筛选的是:你能否在没有框架辅助的情况下,手写损失函数、手推参数更新、手算一轮迭代,并且说清楚每一步为什么这么做。适合正在准备这门考试的同学,也适合想检验自己机器学习基础是否扎实的从业者。下面我按备考的实际路径,把这件事拆开讲透。
2. 先搞清楚卷面结构:哪些章节是必拿分,哪些是拉分项
2.1 从历年题型反推复习优先级
机器学习期末卷面通常分四块:概念简答、公式推导、手算迭代、算法设计。概念简答考的是定义和区别,比如“偏差与方差的区别”“生成模型与判别模型的分界”;公式推导集中在感知机、逻辑回归、SVM、EM算法这几块;手算迭代一般给一个小数据集,让你跑一两轮梯度下降或K-means;算法设计则是给一个场景,让你选模型并说明理由。
复习优先级我一般这样排:公式推导 > 手算迭代 > 概念简答 > 算法设计。原因很直接——推导和手算是硬功夫,会就是会,不会编不出来;概念简答可以靠理解加记忆;算法设计有套路,练几道就有感觉。如果你时间紧,先把逻辑回归和SVM的推导吃透,这两块几乎年年出现。
2.2 一张表看清各算法的考频与考法
| 算法 | 考频 | 主要考法 | 易错点 |
|---|---|---|---|
| 感知机 | 中 | 更新规则推导、收敛性说明 | 误分类点判定条件 |
| 逻辑回归 | 高 | 损失函数推导、梯度计算 | sigmoid导数、链式法则 |
| SVM | 高 | 对偶问题、KKT条件、核函数 | 拉格朗日乘子符号 |
| 决策树 | 中 | 信息增益/基尼指数计算 | 熵的单位、对数底数 |
| K-means | 高 | 手算一轮迭代、收敛判断 | 初始中心选择影响 |
| EM算法 | 中高 | E步M步推导、高斯混合 | 隐变量含义 |
| 神经网络 | 中 | 反向传播手算 | 链式法则逐层展开 |
这张表不是让你按顺序背,而是让你知道时间该往哪投。逻辑回归和SVM的推导必须能默写,K-means的手算必须能独立跑通,EM算法至少要把E步和M步在简单例子上走一遍。
2.3 概念题怎么答才不丢分
概念简答最容易犯的错是“只给定义不给对比”。比如问“判别模型和生成模型的区别”,你只写“生成模型建模联合概率,判别模型建模条件概率”只能拿一半分。完整的答法要包含三层:定义、数学表达、典型例子、适用场景。我一般会这样组织:先说生成模型估计P(x,y)再通过贝叶斯求P(y|x),判别模型直接估计P(y|x)或决策边界;然后各举两个例子;最后说生成模型在数据少时有用、判别模型在分类精度上通常更好。
注意:概念题答题时,能画图就画图。比如决策树的划分边界、SVM的间隔示意图,画出来比写三行字都管用。
3. 公式推导怎么练:从逻辑回归到SVM的手推路径
3.1 逻辑回归梯度推导的完整链条
逻辑回归是推导题的“必考款”。题目通常给一个二分类数据集,让你写出对数似然函数,然后求梯度。标准流程是这样的:
import numpy as np # 模拟数据:3个样本,2个特征 X = np.array([[1, 2], [2, 1], [3, 3]]) y = np.array([0, 0, 1]) w = np.zeros(2) b = 0 def sigmoid(z): return 1 / (1 + np.exp(-z)) # 前向计算 for i in range(len(X)): z = np.dot(w, X[i]) + b y_hat = sigmoid(z) # 对数似然贡献 ll = y[i] * np.log(y_hat) + (1 - y[i]) * np.log(1 - y_hat) print(f"样本{i}: z={z:.4f}, y_hat={y_hat:.4f}, ll={ll:.4f}") # 梯度计算(对w) grad = np.zeros(2) for i in range(len(X)): z = np.dot(w, X[i]) + b y_hat = sigmoid(z) grad += (y_hat - y[i]) * X[i] print("梯度:", grad)这段代码的逻辑是:先算每个样本的线性输出z,再过sigmoid得到预测概率,然后算对数似然。梯度那部分,对w的偏导是(y_hat - y) * x,这是推导的结果,不是猜的。参数说明:w是权重向量,b是偏置,学习率在更新时用。考试时你不需要写代码,但你要能把这个循环里的每一步用数学符号写出来。
推导的关键节点有三个:一是sigmoid函数的导数σ'(z) = σ(z)(1-σ(z)),这个必须记住;二是对数似然的展开,把连乘变连加;三是对w求偏导时链式法则的展开。很多人卡在第二步,忘了对数把乘积变加法。
3.2 SVM对偶问题的推导要点
SVM的推导比逻辑回归长,但套路固定。原始问题是min 1/2 ||w||^2 s.t. y_i(w·x_i + b) >= 1。构造拉格朗日函数,对w和b求偏导令零,得到w = Σ α_i y_i x_i和Σ α_i y_i = 0,代回得到对偶问题:max Σ α_i - 1/2 ΣΣ α_i α_j y_i y_j x_i·x_j,约束是α_i >= 0且Σ α_i y_i = 0。
考试时最容易错的是拉格朗日乘子的符号。我一般记法是:原始是min,约束是>=,拉格朗日函数写成L = 1/2||w||^2 - Σ α_i [y_i(w·x_i+b) - 1],减号对应约束方向。KKT条件里α_i [y_i(w·x_i+b) - 1] = 0,说明只有支持向量上的α_i非零。
3.3 手算迭代题的固定套路
手算迭代题通常给3到5个二维点,让你跑一轮梯度下降或K-means。以K-means为例,步骤是:选初始中心、算每个点到中心的距离、重新分配、更新中心、判断收敛。我建议在草稿纸上画个坐标图,把点标出来,这样分配的时候不容易错。
# K-means一轮迭代手算模拟 points = np.array([[1,1], [2,1], [4,3], [5,4]]) centers = np.array([[1,1], [5,4]]) # 初始中心 # 分配步骤 labels = [] for p in points: d0 = np.linalg.norm(p - centers[0]) d1 = np.linalg.norm(p - centers[1]) labels.append(0 if d0 < d1 else 1) print("分配结果:", labels) # 更新步骤 new_centers = [] for k in [0, 1]: cluster = points[np.array(labels) == k] new_centers.append(cluster.mean(axis=0)) print("新中心:", np.array(new_centers))这段代码对应考试里的手算过程。参数说明:points是数据点,centers是初始中心,labels是分配结果。考试时你要把距离计算写出来,比如点(2,1)到中心(1,1)的距离是1,到(5,4)的距离是√18,所以分到第一类。更新中心时取均值,第一类三个点的均值是(7/3, 5/3)。
提示:手算迭代题一定要写清楚每一步的计算过程,哪怕结果算错了,步骤分也能拿不少。
4. 避坑指南:期末考场上最容易翻车的五个地方
4.1 混淆损失函数和代价函数
现象:题目问“逻辑回归的损失函数”,有人写成交叉熵,有人写成对数似然,然后自己绕晕。原因:损失函数是单个样本的,代价函数是整个数据集的平均或总和。解决:答题时先写单样本损失,再写总代价,标明求和范围。我一般写“单样本损失为 -[y log y_hat + (1-y) log(1-y_hat)],总代价为所有样本损失之和”。
4.2 梯度下降更新时忘记同步更新
现象:手算一轮梯度下降,更新w之后用新的w去算下一个样本的梯度。原因:批量梯度下降要求所有参数用同一轮的梯度更新。解决:先把所有样本的梯度累加,最后统一更新。考试时可以在草稿纸上分两栏,左边算梯度,右边最后更新。
4.3 SVM对偶问题约束条件写错
现象:把Σ α_i y_i = 0写成Σ α_i = 0。原因:对b求偏导得到的是Σ α_i y_i = 0,y_i不能丢。解决:记口诀“对w求导得w的表达式,对b求导得α和y的乘积和为零”。写完后检查一遍y_i有没有漏。
4.4 EM算法E步和M步搞反
现象:在E步去更新参数,在M步去算隐变量后验。原因:E步是求期望,固定参数算隐变量分布;M步是最大化,固定隐变量分布更新参数。解决:记“E固定参数算分布,M固定分布算参数”。做题时先写清楚当前参数值,再写E步得到的后验概率,最后写M步的更新公式。
4.5 决策树信息增益计算出错
现象:信息增益算出来是负数,或者和答案差很多。原因:熵的计算用了log2还是ln没统一,或者条件熵的权重加错了。解决:统一用log2,单位是比特;条件熵按特征取值加权,权重是该取值的样本占比。算完后检查信息增益是否非负,如果是负数说明算错了。
5. 从会做题到能讲清楚:用费曼技巧检验复习效果
5.1 把推导讲给空气听
我备考时有个习惯:合上书,对着白纸把逻辑回归的推导从头写到尾,每一步都问自己“为什么可以这样”。如果某一步卡住了,说明那里就是漏洞。比如写到“对w求偏导”时,我会问自己:为什么sigmoid的导数能提出来?因为链式法则。为什么对数似然里y=0的项消失了?因为y乘以log(y_hat)在y=0时为零。这种自问自答能逼出很多平时忽略的细节。
5.2 用一张白纸复现整个算法流程
拿SVM举例,我会在一张白纸上按顺序写:原始问题、拉格朗日函数、对偶问题、KKT条件、支持向量含义、核函数作用。写完后对照课本检查符号和约束。这个过程比反复看书有效得多,因为看书是输入,写出来是输出,考试考的是输出。
5.3 找一道综合题限时模拟
最后一周我会找一道综合题,比如“给一个非线性可分数据集,设计一个分类方案”,要求自己写出:数据预处理、模型选择理由、损失函数、优化方法、评估指标。限时30分钟,写完对照答案找差距。这种题考的是串联能力,比单点推导更接近真实考试的综合题。
5.4 考前一天只看错题和推导框架
考前一天不要再刷新题,把之前做错的推导题重写一遍,重点看符号和约束条件。然后把每个算法的推导框架默写一遍:逻辑回归是“似然→对数→梯度”,SVM是“原始→拉格朗日→对偶→KKT”,EM是“E步后验→M步更新”。框架对了,细节就算有偏差也能拿大部分分。
希望帮到你。
本文还有配套的精品资源,点击获取