简介这份《机器学习期末复习题.pdf》面向高校学生与备考机器学习课程的读者用于系统梳理期末考点、检验知识掌握程度。内容覆盖监督学习与无监督学习、概率分布与共轭先验、朴素贝叶斯分类器、决策函数、线性分类方法、支持向量机、集成学习、决策树、过拟合与正则化等核心章节题型以单选为主并配有解析思路便于对照复习。资源包共1个文件为PDF格式大小约4.83MB结构紧凑适合打印或平板阅读。目前已有13523人学习下载热度较高。读者可借助题库快速定位薄弱知识点理解SVM核函数与软间隔参数、Bagging与Boosting差异、决策树划分指标、KL散度与密度聚类等易错内容适合期末冲刺与查漏补缺。1. 从一份 85 题单选加 40 题多选的题库说起这份机器学习期末复习题到底怎么用期末前一周实验室里最常见的场景是几个人围着一份 PDF 题库从第一题开始往下刷刷到 SVM 那几题开始卡壳翻回教材又找不到对应章节最后干脆背答案。这份《机器学习期末复习题.pdf》就是典型的这种材料——85 道单选题、40 道多选题、12 道简答题覆盖监督与无监督学习、贝叶斯决策、线性分类、SVM、集成学习、聚类、降维、神经网络、概率图模型这些机器学习课程的核心考点。它不教你从零推导公式但能帮你快速定位「哪个知识点我其实没搞懂」。适合两类人一是期末冲刺想查漏补缺的二是面试前想快速过一遍基础概念的。关键在于别把它当背诵材料而是当诊断工具用。2. 把题库拆成知识模块从监督/无监督到概率图模型的映射方法2.1 先做一次模块归类别按题号顺序刷拿到题库直接从头做到尾效率其实很低。原因是题目顺序并不完全按知识模块排列中间会穿插不同章节的内容。我一般会先按考点把题目归到几个大类里再逐类攻克。这份题库大致可以分成下面这些模块模块涉及题号单选核心考点学习范式分类1, 2, 67, 84监督 vs 无监督 vs 分类 vs 聚类概率分布与贝叶斯3, 4, 5, 6, 7, 69共轭分布、朴素贝叶斯、决策函数线性分类与回归8, 9, 10, 11, 12, 29, 30, 31感知机、Logistic、LDA、正则化SVM13, 14, 15, 16, 17, 18, 26, 27, 65最大间隔、对偶、核函数、软间隔决策树与集成学习19, 20, 21, 22, 23, 24, 25, 53, 70, 72信息增益、Bagging、Boosting、随机森林聚类34, 35, 58, 82K-Means、密度聚类、GMM、EM降维与特征选择36, 37, 63, 74PCA、LDA、SVD、特征选择神经网络与深度学习41, 47, 51, 52, 54, 55, 57, 60, 61, 62, 64, 79, 80, 81激活函数、梯度下降、CNN、RNN、GRU/LSTM概率图模型39, 40, 44, 45, 75, 77马尔可夫毯、HMM、维特比算法模型评估与过拟合38, 48, 49, 50, 59, 66, 73偏差方差、正则化、Precision/Recall归类之后你会发现SVM 和神经网络这两块题目最多也最容易出错。先集中火力把这两块吃透再去处理其他模块整体效率会高很多。2.2 用错题反查知识盲区而不是直接看答案归类完之后我的做法是先做一遍但做的时候不翻答案把不确定的题目标记出来。做完之后统计每个模块的错误率错误率高的模块就是需要重点复习的。比如你在 SVM 那块错了 5 题以上说明对偶问题和核函数的理解还不到位这时候应该回去翻教材对应的推导而不是把答案背下来。具体操作上可以用一个简单的表格来跟踪# 错题追踪表按模块统计错误率 modules { SVM: {total: 9, wrong: 0}, 神经网络: {total: 14, wrong: 0}, 集成学习: {total: 10, wrong: 0}, 聚类: {total: 4, wrong: 0}, 概率图模型: {total: 6, wrong: 0}, } # 做完一遍后填入错误数计算错误率 for name, info in modules.items(): rate info[wrong] / info[total] * 100 print(f{name}: 错误率 {rate:.1f}%)这段代码没什么技术含量但它的作用是让你把注意力放在「哪个模块弱」而不是「哪道题对了」。错误率超过 30% 的模块建议先看教材对应章节再回来重做。2.3 多选题是区分度最高的部分别跳过很多人刷题只做单选多选题直接跳过。但从这份题库来看多选题覆盖的知识点更综合比如第 32 题考各算法的损失函数对应关系第 33 题考正则化的多种形式第 40 题考 Bagging 和 Boosting 在偏差方差上的区别。这些题目如果只靠单选的知识点去应付很容易漏选。我的建议是多选题至少做两遍。第一遍按直觉选第二遍对照教材确认每个选项为什么对、为什么错。比如第 22 题问 SVM 欠拟合时怎么改进答案是增大 C 和增大 gamma这两个参数的方向如果记反了考试时就会丢分。3. 高频考点逐个拆SVM 对偶、K-Means 迭代与 CNN 参数计算的手算流程3.1 SVM 对偶问题与支持向量的判定题库里第 13 到 18 题、第 26、27、65 题都是 SVM 相关。核心考点有三个最大间隔分类的几何意义、对偶问题的形式、支持向量的定义。以第 65 题为例两个样本点正样本 (0, -1)负样本 (2, 3)求线性 SVM 的分类面方程。这道题需要手算。步骤是这样的import numpy as np # 正样本 x1 (0, -1), 标签 y1 1 # 负样本 x2 (2, 3), 标签 y2 -1 x1 np.array([0, -1]) x2 np.array([2, 3]) y1, y2 1, -1 # 对于线性 SVM决策面 w^T x b 0 # 支持向量满足 y_i (w^T x_i b) 1 # 两点的中点在分类面上w^T (x1x2)/2 b 0 # 且 w 方向与 (x1 - x2) 平行 # 计算 w 的方向 w x1 - x2 # 或者 x2 - x1方向相反但分类面相同 print(w 方向:, w) # [-2, -4] # 归一化后 w (-1, -2) 或 (1, 2) # 代入支持向量条件求 b # 取 w (-1, -2)则 w^T x1 b 1 0 2 b 1 b -1 # 验证w^T x2 b -2 - 6 - 1 -9不满足 -1 的条件 # 需要重新缩放 # 正确做法设 w (a, b)满足 # w^T x1 b 1 -b b 1 (这里变量名冲突换符号) # 设 w (w1, w2) # w1*0 w2*(-1) b0 1 -w2 b0 1 # w1*2 w2*3 b0 -1 2*w1 3*w2 b0 -1 # 且 w1/w2 (0-2)/(-1-3) -2/-4 1/2 w2 2*w1 # 代入-2*w1 b0 1 # 2*w1 6*w1 b0 -1 8*w1 b0 -1 # 两式相减10*w1 -2 w1 -0.2, w2 -0.4, b0 1 2*(-0.2) 0.6 # 乘以 -5 化简w (1, 2), b -3 # 分类面x 2y - 3 0 print(分类面方程: x 2y 3)这段推导的关键在于两个样本点恰好都是支持向量所以它们都满足 ( y_i(w^T x_i b) 1 )。再加上 ( w ) 的方向与两点连线平行三个方程解三个未知数。最终答案是 ( x 2y 3 )对应选项 C。参数说明这里的 ( w ) 是法向量决定分类面的方向( b ) 是偏置决定分类面的位置。支持向量就是恰好落在间隔边界上的点它们决定了最终的分类面。3.2 K-Means 手算迭代过程第 82 题是一道典型的 K-Means 手算题。给定两个初始种子点 A(-1, 1) 和 B(2, 1)其余点有 (0,0)、(0,2)、(1,1)、(3,2)、(6,0)、(6,2)问最终种子点移动次数和各类点数。手算流程如下import numpy as np # 初始种子点 centers np.array([[-1, 1], [2, 1]]) points np.array([[0, 0], [0, 2], [1, 1], [3, 2], [6, 0], [6, 2]]) def assign_points(centers, points): 将每个点分配给最近的聚类中心 labels [] for p in points: dists [np.linalg.norm(p - c) for c in centers] labels.append(np.argmin(dists)) return np.array(labels) def update_centers(centers, points, labels): 按坐标平均更新聚类中心 new_centers [] for i in range(len(centers)): cluster_points points[labels i] if len(cluster_points) 0: new_centers.append(cluster_points.mean(axis0)) else: new_centers.append(centers[i]) return np.array(new_centers) # 第一轮迭代 labels assign_points(centers, points) print(第一轮分配:, labels) new_centers update_centers(centers, points, labels) print(第一轮新中心:, new_centers) # 继续迭代直到收敛 for iteration in range(10): labels assign_points(new_centers, points) updated update_centers(new_centers, points, labels) if np.allclose(updated, new_centers): print(f第 {iteration2} 轮收敛) break new_centers updated print(f第 {iteration2} 轮中心:, new_centers) print(最终中心:, new_centers) print(最终分配:, labels)运行这段代码可以验证种子点 A 移动 2 次种子点 B 移动 2 次属于 A 的点有 3 个不含 A 本身属于 B 的点有 3 个不含 B 本身。答案是 A。参数说明K-Means 的核心参数是聚类数 K 和初始中心的选择。初始中心不同最终结果可能不同这也是第 58 题强调的「初始值不同最终结果可能不同」。距离度量默认用欧氏距离如果换成余弦距离或曼哈顿距离聚类结果也会变化。3.3 CNN 卷积层输出尺度与参数量计算第 11 题简答题要求计算卷积层的输出尺度和参数量。输入是 3 个 32×32 的特征图10 个 5×5 的卷积核Stride1Padding2。计算公式# 输出尺度公式H_out (H_in 2*pad - kernel_size) / stride 1 H_in 32 pad 2 kernel 5 stride 1 H_out (H_in 2 * pad - kernel) / stride 1 print(f输出尺度: {int(H_out)}x{int(H_out)}) # 32x32 # 参数量公式(kernel_h * kernel_w * in_channels 1) * out_channels in_channels 3 out_channels 10 params (kernel * kernel * in_channels 1) * out_channels print(f卷积层参数: {params}) # (5*5*31)*10 760输出尺度是 32×32因为 padding2 恰好补偿了 5×5 卷积核带来的尺寸缩减。参数量是 760其中 5×5×3 是每个卷积核的权重数加 1 是偏置项乘以 10 是 10 个卷积核。这里容易踩的坑是偏置项不要漏掉。很多人算参数量时只算权重忘了每个卷积核还有一个偏置参数。另外如果输入是多通道的卷积核的深度必须等于输入通道数这一点在计算时不能搞错。4. 避坑与排查题库里那些容易记反、算错、理解偏的考点4.1 现象把 L1 和 L2 正则化的效果记反原因L1 产生稀疏解、L2 防止过拟合但不会产生稀疏解这两个结论在选择题里经常互换选项来迷惑人。第 56 题问「哪些正则项会让不少 coefficient 为 0」答案是 L0-norm 和 L1-norm不包括 L2-norm。解决记住一个直观理解——L1 的约束区域是菱形顶点在坐标轴上所以最优解容易落在顶点处产生稀疏L2 的约束区域是圆形没有尖角所以解不会恰好落在坐标轴上。第 78 题也考了 L1L2 同时使用的效果可以做特征选择并一定程度上防止过拟合。4.2 现象混淆 Bagging 和 Boosting 的偏差方差特性原因第 40 题多选问集成学习中哪些说法正确答案是 Bagging 降低方差、Boosting 降低偏差。很多人记成反过来。解决Bagging 是并行训练多个基分类器然后投票通过平均来降低方差Boosting 是串行训练每一步关注前一步分错的样本通过逐步减小偏差来提升整体性能。第 23 题考 Bagging 的特点Bootstrap 采样第 24 题考 Boosting 的特点分类器按顺序训练、预测时比重不同这两题的选项设计就是用来区分这两个概念的。4.3 现象K-Means 和 K-NN 搞混原因名字里都有 K但一个是聚类无监督一个是分类监督。第 84 题问「哪个不是分类模型」答案是 K 均值第 28 题问 K-NN 在什么情况下效果好答案是样本较少但典型性较好。解决K-Means 是聚类算法没有标签目标是找到 K 个簇K-NN 是分类算法有标签根据最近的 K 个邻居来投票决定类别。第 67 题也考了「哪个是无监督学习算法」答案是 K-Means 聚类。4.4 现象SVM 软间隔参数 C 的方向搞反原因第 26 题问 C 很小时会怎样答案是会发生误分类第 27 题问 C 趋于无穷时会怎样答案是只要最佳分类超平面存在就能全部正确分类。C 越大对误分类的惩罚越大间隔越窄C 越小允许更多误分类间隔越宽。解决把 C 理解为「对错误的容忍度」——C 大 不容忍错误 硬间隔倾向C 小 容忍错误 软间隔倾向。第 22 题问 SVM 欠拟合时怎么改进答案是增大 C 和增大 gamma因为欠拟合说明模型太简单需要增大复杂度。4.5 现象神经网络激活函数与梯度消失的关系记不清原因第 52 题问哪个激活函数会导致梯度消失答案是 Tanh第 55 题问哪个引入了非线性答案是 ReLU第 64 题问哪个不能做激活函数答案是 y2x线性函数。解决Sigmoid 和 Tanh 在输入较大或较小时梯度趋近于 0会导致梯度消失ReLU 在正区间梯度恒为 1不会消失但在负区间梯度为 0可能导致神经元死亡。第 10 题简答题也考了梯度消失的原因和解决方案用 ReLU 替换 Sigmoid。5. 从刷题到真懂用简答题反推知识框架的进阶用法简答题是这份题库里最容易被低估的部分。很多人觉得简答题就是背答案但其实简答题的答案里包含了完整的推导逻辑用好了可以帮你把零散的选择题知识点串成体系。我的做法是先不看答案自己写一遍然后对照答案找差距。比如第 3 题要求手算 K-Means 的迭代过程如果你能独立算出来说明对 K-Means 的理解已经到位了如果算不出来说明只是记住了「K-Means 是聚类算法」这个结论但没掌握具体流程。再比如第 11 题的卷积层计算如果你能独立写出公式并算出结果那 CNN 参数计算这块就没问题了。第 12 题问随机森林为什么比决策树 Bagging 快答案的关键在于「随机森林只需随机考察一个属性子集」这个点在选择题第 53 题里也有对应——增加决策树深度可能导致过拟合但增加树的数量不会。下面这张表是我整理的简答题与选择题的对应关系可以用来交叉验证简答题对应选择题核心知识点第 1 题 LDA 分类思想第 12 题类内距离最小、类间距离最大第 2 题 SVM 对噪声敏感第 16 题支持向量决定决策边界第 3 题 K-Means 手算第 82 题迭代过程与收敛条件第 5 题 标准化处理第 9 题、第 71 题树模型不需要归一化第 9 题 学习率影响第 47 题梯度下降步骤第 10 题 梯度消失第 52 题Tanh 导致梯度消失第 11 题 CNN 参数计算第 57 题、第 60 题卷积核与特征图第 12 题 随机森林速度第 25 题、第 53 题Bagging 与随机森林最后说一个我自己的习惯每次复习完一个模块我会合上题库拿一张白纸把这个模块的核心概念、公式、典型算法流程默写一遍。写不出来的地方就是没真正掌握的地方。这份题库的价值不在于题目本身而在于它能帮你快速定位到那些「以为自己会了但其实不会」的知识点。从那以后我每次复习任何一门课都强制走一遍「归类 → 做题 → 反查 → 默写」这个流程比单纯刷题效率高得多。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?