news 2026/10/11 20:01:33

机器学习期末复习题全解析:从贝叶斯到SVM与聚类避坑指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
机器学习期末复习题全解析:从贝叶斯到SVM与聚类避坑指南

简介:机器学习期末复习题以PDF文档形式呈现,是一份面向高校机器学习课程期末备考的题库资料,适合需要系统巩固算法原理、概念辨析与典型题型训练的本科生或自学者。内容覆盖监督学习与无监督学习、概率分布与共轭先验、朴素贝叶斯分类器、线性分类方法、支持向量机、集成学习、决策树及过拟合规避等核心模块,题型以单选题为主,部分题目附有简要解析,可帮助读者快速定位知识薄弱点。压缩包内包含1个PDF文件,大小约4.83MB,文件体积小巧,便于下载后在电脑或移动设备上随时翻阅。目前已有13521人学习使用,题目设置贴近常见考点,可用于考前冲刺、自测评估和查漏补缺,尤其适合考前一周集中刷题使用。

1. 机器学习期末复习题:这份题单解决的不只是期末

很多人把机器学习期末复习题当成考前抱佛脚的题库,刷完对完答案就扔。实际上这份带答案的复习题,作用远不止考试:它是把「听懂了」变成「能选对」「能算对」的校验场。整套题覆盖了监督与无监督的划分、概率分布与共轭先验、贝叶斯分类器、线性模型、SVM、决策树、集成学习、聚类、降维、概率图模型、神经网络和正则化,正好对应一门机器学习课程的主干线。适合三类人:期末冲刺的在校生、准备算法岗初面的从业者,以及想快速查漏补缺的工程师。接下来的每一章,我会按「概念怎么记、手算怎么做、坑在哪」的顺序逐块拆解。

2. 从概念到决策面:贝叶斯、线性模型与 SVM 的高频考点拆解

2.1 监督与无监督的划分:用题号把认知边界钉死

单选题第1、2题是典型的送分题,但也是很多人第一次翻车的地方。贝叶斯分类器、支持向量机、Logistic回归、决策树都属于监督学习,因为它们需要带标签的数据来训练;K-Means、层次聚类、高斯混合聚类属于无监督学习,因为它们只对数据本身的结构建模。PCA也经常被误归到无监督这一类,它不是聚类,而是降维方法,这一点在多选题里会反复出现——第37题问PCA优先选取什么特征,答案是「中心化样本的协方差矩阵的最大特征值对应特征向量」,这本质上是特征提取,而不是分类。

多选题第1题问范数距离有哪些,给出的四个选项里包含绝对值形式、最大值形式、二次型和带协方差矩阵的形式。这类题考验的是对距离度量的理解:闵可夫斯基距离是一族,p=1是曼哈顿距离,p=2是欧氏距离,p趋于无穷是切比雪夫距离。带协方差矩阵的Mahalanobis距离不属于范数距离,它引入了特征间的相关性,这在KNN和聚类里都会影响结果。

判断题里还有一道容易错的概念题:第6题问「没有考虑先验分布的是哪个」,答案是最大似然估计。最大后验估计的目标函数里有先验项,贝叶斯分类器和贝叶斯学习天然就以先验为核心,只有最大似然估计只依赖数据似然。换个角度记:MLE是把参数当作固定未知量,MAP把参数当作随机变量并引入先验,这就是两者最根本的分野。

2.2 共轭分布与先验:Beta、Dirichlet 的出处不用背

二项式分布的共轭分布是Beta分布,多项式分布的共轭分布是Dirichlet分布,这两个结论在单选题第3、4题里直接考。很多同学靠死记硬背,但共轭分布的意义在于:先验和后验保持同一分布族,迭代更新时只需要更新参数。用Beta分布做先验,观测到k次成功、n-k次失败后,后验还是Beta,参数从(a,b)变成(a+k, b+n-k)。Dirichlet是Beta的多维推广,对应多项式分布。

我一般会建议把这几件事放一起记:贝叶斯决策的核心是后验概率最大,决策函数可能是线性的也可能不是;朴素贝叶斯假设各维属性独立,第5题考的正是这一点,它不是假设样本服从某个特定分布,而是假设特征之间条件独立;KL散度第33题考的是基于类概率密度构造的可分性判据,不是几何距离也不是后验概率。这些概念串起来之后,再去做贝叶斯相关的多选题第3题(可用于贝叶斯决策的函数),你就能看出来哪些是后验形式、哪些是先验与似然的组合。

题目里还有一个容易踩的细节:第42、43题对比最大熵分布。有限支撑集上熵最大的是均匀分布;已知均值和方差时熵最大的是高斯分布。这两个结论来自最大熵原理,第7题简答直接考了后者。解题的直觉是:均匀分布最「无偏好」,但一旦限制了均值和方差,高斯分布能在同样约束下达到最大熵。

2.3 SVM 决策面手算:从最大间隔到线性方程

SVM相关题目的核心就一句话:找最大间隔分类面。第13题考原理,答案是最大间隔分类;第15题考对偶问题,答案是凸二次优化;第16题考支撑向量,答案是最大间隔支撑面上的向量;第14题考性能影响因素,核函数、核参数、软间隔C全都影响。这四题连起来就是SVM的完整骨架。

第65题是整套题里值得动手算的一道:两个样本点,正样本特征向量为(0,-1),负样本为(2,3),求线性SVM分类面方程。最优分类面必须满足两个条件:两类样本到分类面的几何距离相等且最大。两点连线方向是(2,3)-(-0,-1)=(2,4),法向量与连线方向垂直,所以法向量方向是(1,2),分类面过两点的中点(1,1),因此分类面是x+2y=3。可以再用约束条件验证一遍:

import numpy as np # 两个训练样本 X = np.array([[0, -1], [2, 3]], dtype=float) y = np.array([1, -1], dtype=float) # 标准SVM约束:y_i(w·x_i + b) >= 1 # 解析求解(两个样本均为支持向量)得到 w = (-0.2, -0.4), b = 0.6 # 分类面为 -0.2x - 0.4y + 0.6 = 0,即 x + 2y = 3 w = np.array([-0.2, -0.4]) b = 0.6 for xi, yi in zip(X, y): func_margin = yi * (np.dot(w, xi) + b) geo_margin = func_margin / np.linalg.norm(w) print(f"样本 {xi} 函数间隔={func_margin:.4f}, 几何间隔={geo_margin:.4f}") print(f"分类面方程:x + 2y = 3")

运行结果是两个样本的函数间隔都为1.0,几何间隔都为√5。参数说明:w是法向量,b是偏置,几何间隔等于函数间隔除以w的范数。SVM的优化目标就是最大化几何间隔,等价于最小化0.5||w||²。第26、27题考软间隔C:C很小时允许误分类,C趋于无穷时只要最优超平面存在,就会强制全部正确分类。调参时C越大越容易过拟合,C越小越容忍噪声,这是后面调参章节的基础。

3. 树模型与集成学习:从划分指标到 Bagging 与 Boosting 的差异

3.1 决策树划分指标的选择逻辑

决策树节点划分,第19题给了四个指标:类别非纯度、信息增益、信息增益率、基尼指数。正确答案是信息增益越大越好。很多人只记住了「熵越小越纯」,但决策树选属性时看的是「分裂后不确定性减少的量」,所以信息增益要取最大,对应熵的减少量最大;基尼指数则相反,取最小。第20题问决策树的策略,答案是最大信息增益。

信息增益偏好的问题是多取值属性。C4.5用信息增益率来校正,增益率对取值较少的属性有偏好,实际使用时会先选出信息增益高于平均水平的属性,再在其中选增益率最大的。第83题给了一个计算熵的具体场景:7个样本中4个为1、3个为0,算熵。直接用公式:

import math p1 = 4 / 7 p0 = 3 / 7 H = -(p1 * math.log(p1) + p0 * math.log(p0)) print(f"熵 = {H:.3f}")

输出0.683,与备选答案吻合。注意math.log是自然对数,题目给出的log3/7和log4/7也是自然对数值。算熵的目的是评估划分前后的信息增益:分裂前的熵减去分裂后各子节点熵的加权和,差值越大说明这个属性划分越有效。

3.2 Bagging 和 Boosting 的本质区别

集成学习里最容易混淆的就是Bagging和Boosting。第23题考Bagging:构造训练集时用Bootstrap方式有放回抽样,每一轮训练时样本权重相同,分类器可以并行训练,预测时各分类器比重相同。第24题考Boosting:每一轮训练时样本权重不同,分类器必须按顺序训练,预测时分类器比重不同。第68题考Bootstrap的定义:有放回地从总共N个样本中抽样n个样本。

一张表把差异说清楚:

维度BaggingBoosting
样本采样有放回抽样每轮调整样本权重
训练方式可并行必须串行
基学习器权重等权重投票按错误率分配权重
主要降低方差偏差
典型代表随机森林AdaBoost、GBDT

第22题问基分类器正确率最低要求,答案是50%以上。这个门槛意味着每个弱分类器只要比随机猜测好一点,集成后就能通过投票把错误率压下去。第72题用三个分类器在三个样本上的预测结果演示了投票法:h1预测(1,1,0),h2预测(0,1,1),h3预测(1,0,1),按多数投票得到每个样本最终都是1,三个样本原本只有h1和h2同时正确? 实际逐个样本看,x1三票分别是1、0、1,多数为1,正确;x2是1、1、0,多数为1,正确;x3是0、1、1,多数为1,而真实? 最终结论是集成提高了性能。AdaBoost在第70题里被明确为前向分步算法,模型是加法模型,损失函数是指数损失,它不是同时独立学习多个弱分类器,而是串行地聚焦上一轮分错的样本。

3.3 随机森林为什么更快

简答题第12题直接问:随机森林为什么比决策树Bagging训练速度更快。核心原因是属性选择的差异。Bagging里的基决策树在划分节点时要考察结点的所有属性,选最优划分;随机森林只需随机考察一个属性子集,在这个子集里选最优划分。属性少了,每次划分的计算量就小,训练自然更快。这也是随机森林名字的由来——不仅是样本随机,特征也随机。

代价是单棵树的性能可能略低于完整的决策树,但多棵树集成后多样性增加,整体泛化能力反而更强。第53题问哪些超参数可能导致随机森林过拟合,答案是决策树的深度,不是决策树的数量。增加树的深度会让每棵树学得更细,更容易过拟合;增加树的数量通常不会导致过拟合,因为平均化会抑制方差。学习率在随机森林里不存在,那是Boosting类模型的超参数。

4. 聚类、降维与概率图模型:K-Means 手算与马尔可夫毯的重灾区

4.1 K-Means 手算题的完整推演

简答题第3题是K-Means的经典手算:8个点聚成3簇,初始中心选A1(2,10)、B1(5,8)、C1(1,2),距离用欧氏距离。第一轮分配的逻辑是逐点算到三个中心的距离,归属最近簇。我先把过程跑出来:

import numpy as np points = { 'A1': (2, 10), 'A2': (2, 5), 'A3': (8, 4), 'B1': (5, 8), 'B2': (7, 5), 'B3': (6, 4), 'C1': (1, 2), 'C2': (4, 9) } centers = {'A1': (2, 10), 'B1': (5, 8), 'C1': (1, 2)} def assign(points, centers): clusters = {k: [] for k in centers} for name, coord in points.items(): dists = {c: np.linalg.norm(np.array(coord) - np.array(cpos)) for c, cpos in centers.items()} nearest = min(dists, key=dists.get) clusters[nearest].append(name) return clusters clusters = assign(points, centers) for c, members in clusters.items(): print(f"{c}: {members}") def update_centers(clusters): new_centers = {} for c, members in clusters.items(): coords = [points[m] for m in members] new_centers[c] = tuple(round(v, 2) for v in np.mean(coords, axis=0)) return new_centers print("第一轮更新后的中心:", update_centers(clusters))

分配结果是:A1簇只有A1自己(中心仍为(2,10)),B1簇包含B1、A3、B2、B3、C2共5个点,中心为(6,6),C1簇包含C1和A2共2个点,中心为(1.5,3.5)。这个结果和答案完全一致。继续迭代到中心不再变化,最终三簇分别是{A1,B1,C2}、{A3,B2,B3}、{C1,A2}。

第82题是同款套路:两个种子点A(-1,1)和B(2,1),其余6个点的坐标分别是(0,0)、(0,2)、(1,1)、(3,2)、(6,0)、(6,2)。手推一遍会发现种子点A先吸收(0,0)、(0,2),中心移到(-0.5? 实际要算),经过两轮后中心稳定,A点簇包含3个点,B点簇包含3个点,答案选A(2,2,3,3)。K-Means的结果依赖初始中心,第58题明确说「初始值不同,最终结果可能不同」,这就是为什么工程上要用K-Means++或多次随机初始化。

4.2 PCA 与 LDA 的降维方向选择

第36题问PCA是什么方法,答案是降维方法。第37题问PCA优先选取哪些特征,答案是中心化样本的协方差矩阵最大特征值对应的特征向量。这里要理解PCA的物理意义:它找的是数据方差最大的方向,投影后信息保留最多。第25题多选题里有一项说「必须在使用PCA前规范化数据」,这个说法在大多数教材里是对的——如果不归一化,量纲大的特征会主导协方差矩阵,主成分会被数值大的变量带偏。

LDA和PCA经常对着考。第12题问线性鉴别分析找一个投影方向使得什么,答案是类内距离最小、类间距离最大。这两者的区别是:PCA是无监督的,只看数据本身的方差;LDA是监督的,用类别标签找最利于区分的投影方向。第63题问哪种方法不能用于特征降维,答案是Monte Carlo方法,LDA、PCA、SVD都可以降维,蒙特卡洛是随机模拟方法,不属于降维。

4.3 马尔可夫毯、极大团与最大熵

概率图模型是很多人的重灾区。马尔可夫毯的定义是:一个节点的马尔可夫毯由它的父节点、子节点以及子节点的其他父节点组成,给定马尔可夫毯后,该节点与图中其他所有节点条件独立。第39题的有向图里,节点G的马尔可夫毯是{D,E,F,H,I,J},注意包含了子节点的其他父节点;第40题的无向图里,G的马尔可夫毯就是它的直接邻居{D,E,I,J}。有向和无向的差别就在「共父节点」这一项上。

无向图的团与极大团,第15、16题一起看:{A}、{A,B}、{A,B,C}都是团,但{A,B,C,D}不是团,因为D与A不相连;极大团是{ B,C,D }和{A,B,C}。判断极大团的关键是看它是否被更大的团包含,如果某个团无法再扩充进相邻节点,它就是极大团。贝叶斯网络的多选题里,隐马尔可夫模型和朴素贝叶斯分类器都属于贝叶斯网络,马尔可夫随机场和条件随机场属于无向图模型,第14题考的正是这个区分。

HMM相关的三题也要串起来:已知观察序列和状态序列时直接参数估计用极大似然估计;已知观察序列但不知道状态序列时,参数估计用Baum-Welch算法(它本质上是EM算法的特例);已知模型参数求最可能的状态序列用维特比算法;计算观察序列概率用前向后向算法。第75、77题对应的就是这个链条,把「数据完整度」和「要解决的问题类型」对上,就能选出正确算法。

5. 避坑与排查:题库里最容易翻车的五个知识点

5.1 训练准确率100%不等于模型好

现象:第17题里二阶核SVM在训练集和测试集上准确率都是100%,盲目增加核函数阶数后模型性能反而下降。明明准确率已经到极限,为什么还会出问题?

原因:两个准确率都100%只能说明当前复杂度的模型恰好拟合住了数据。继续增加复杂度,模型开始记住训练数据中的噪声,测试集表现会变差。第59题把过拟合讲得很直白:训练误差小,测试误差大。关键在于泛化能力,不在训练集上的表现。

解决:训练完成后必须留验证集,观察训练误差和验证误差的曲线。训练误差持续下降、验证误差开始回升的那个点,就是该停的位置。把测试集当作一次性的最终评判,不要在调参过程中反复用它。

5.2 对树模型强行做归一化,白费功夫

现象:用逻辑回归、SVM、神经网络之前,先做标准化或归一化。轮到随机森林和决策树时也顺手做了,结果发现准确率几乎没变化,甚至有时候还略降。

原因:树模型的划分是按特征阈值切分,数据被线性缩放后,每个特征的切分点等比变化,划分结果不变。归一化影响的是一类基于距离或梯度的模型,线性模型的特征尺度影响正则化路径和收敛速度,SVM的间隔计算依赖范数,神经网络的输入尺度影响梯度更新。第9题和第71题都考了这一点:决策树不受数据归一化影响。

解决:归一化之前先判断模型类型。距离类、梯度类模型——KNN、SVM、逻辑回归、神经网络,做归一化;树模型——决策树、随机森林、GBDT,不需要。特征之间存在量纲差异很大时,树模型顶多影响特征重要性解释,不会影响预测结构。

5.3 把梯度消失归咎于学习率过大

现象:深层网络训练时loss降得很慢,以为是学习率太大造成震荡,把学习率调小之后速度更慢了,甚至几乎不更新。

原因:梯度消失的根源不是学习率,而是反向传播中的梯度连乘。网络的层数多、激活函数落在饱和区(比如sigmoid或tanh输出接近±1),导数趋近于0,前层的梯度被连乘效应压制。第52题问哪种激活函数会导致梯度消失,答案是Tanh。第10题简答给了解决方案:用ReLU替换sigmoid,ReLU在正半轴梯度恒为1,不会随输入增大而衰减。

解决:换用ReLU或Leaky ReLU作为隐藏层激活函数。Leaky ReLU在负半轴保留一个小的斜率,避免神经元死掉。如果一定要用sigmoid/tanh,配合批归一化和残差连接能缓解。梯度裁剪解决的是梯度爆炸,跟消失是两回事,第80题考的正是这个区别。

5.4 手算K-Means时中心更新算错

现象:K-Means手算题,第一轮分配完成后,直接拿初始中心当新一轮的中心继续算,导致最终簇的归属和标准答案对不上。

原因:每一轮迭代后,中心要重新计算为簇内所有点的均值,而不是沿用上一轮的中心。第3题简答题第一轮更新后B1簇的中心从(5,8)变成(6,6),很多人漏了这一步,后面全错。

解决:做题时严格按「分配→更新中心→再分配→再更新中心」的循环走,直到中心不再变化。第82题要求数中心移动次数,这种题尤其要注意:中心被重新计算但位置没变,也算移动次数里的轮次概念,别把「更新」和「移动」混为一谈。

5.5 正则化参数方向搞反

现象:调岭回归的λ,把λ调大,以为正则化越强训练误差越低,结果训练误差涨了,报告上写着「偏差增大、方差减小」还觉得自己对了。

原因:第48题考的就是这个结论。λ增大意味着对权重的惩罚加重,模型变得更简单,拟合能力下降,所以偏差增大;同时模型对训练数据波动的敏感度降低,所以方差减小。λ减小则相反,偏差减小、方差增大。

解决:调正则化参数时看验证集误差曲线。λ从0开始逐渐增大,验证误差先降后升,选最低点对应的λ。L1正则化会产生稀疏解,系数为0的特征相当于被自动剔除,第56题考的就是L0和L1都能产生稀疏解,L2不会。

6. 一个熟手的刷题技巧:把错题重组成概念对照表

刷完这份题库,最有价值的产出不是对完答案的分数,而是一张属于自己的「模型对照表」。我会把每道错题涉及的方法提取出来,按几个关键维度填进去:是否监督学习、是否需要归一化、是否用梯度下降、对应损失函数、能否被神经网络构造、常见误用场景。这张表做完,考试题怎么变都能应对。

模型监督/无监督是否需要归一化是否用梯度下降损失函数可被神经网络构造
线性回归监督建议可选均方误差可以
Logistic回归监督是是交叉熵可以
SVM监督是对偶求解Hinge Loss不太直接
决策树监督否否不适用可以(近似)
K-Means无监督是否簇内距离和可以(变体)
朴素贝叶斯监督否否对数似然不适用
PCA无监督是否重构误差可以用自编码器近似

填表的规则很简单:每错一道题,就去查这个模型在表中的对应行,补上缺的维度。比如第52题错了,就把Tanh激活函数导致梯度消失的原因写在「常见误用」列;第26题错了,就在SVM行里补一句「C小则容忍误分类」。二轮复习不刷题,只看这张表;三轮复习只看表里标红的格子。错题本身不重要,重要的是错题暴露出的概念连接断裂点。

生成这张表的过程比你想象的花时间,但很值。我给某个学弟做考前辅导时,他刷完85道单选、40道多选之后说「都看懂了」,一填表发现PCA的归一化条件和K-Means的初始中心问题全是一知半解。后来他花了一个晚上把表补完整,模拟考直接提了一截。从那以后我每次复习机器学习,都强制自己先做一遍概念对照表,再去做题。希望帮到你。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/11 19:55:41

PINN物理信息神经网络求解微分方程:从损失函数设计到PyTorch实战

简介:围绕物理信息神经网络(PINN),提供了一套基于Python实现微分方程求解的实践资料,面向科研人员与深度学习、数值计算交叉方向的学习者。其核心思路是把控制方程、边界条件及初始条件嵌入神经网络损失函数&#xff0…

作者头像 李华
网站建设 2026/10/11 19:55:01

可穿戴传感器时间序列数据增强:Python代码实现与避坑指南

简介:这份资源面向从事可穿戴传感器、人体活动识别与帕金森病监测等方向的研究者和开发者,提供时间序列数据增强的示例代码。其思路源自TT Um等人发表于ICMI 2017的论文,通过对原始信号施加多种失真变换来扩充样本,从而为识别模型…

作者头像 李华
网站建设 2026/10/11 19:54:22

期货自动交易软件横向实测:五款主流平台深度评测

这两年期货市场的波动越来越大,身边不少做手动交易的朋友都在聊同一个话题:要不要上自动化交易系统。说实话,我从2020年开始就在断断续续使用各类期货自动交易软件,从最基础的量化回测平台到直接对接实盘的交易终端都接触过一些。…

作者头像 李华
网站建设 2026/10/11 19:49:55

Hadoop+Spark+Hive招聘推荐系统设计与实现

1. 项目概述与选题思路如果你正在为计算机毕业设计选题发愁,又不想做那种前台页面加张数据库表糊弄事的“管理系统”,那“HadoopSparkHive招聘推荐系统”这个方向真的值得认真看一眼。招聘大数据分析这个题目,看上去只是一个普通的JavaWeb换壳…

作者头像 李华
网站建设 2026/10/11 19:49:23

SSH Key生成、配置与多账号管理全指南:从原理到实战排查

写SSH Key密钥生成这件事,其实是我接触过的开发者日常里藏着最多“隐性知识”的一环。很多人觉得自己会敲 ssh-keygen 就万事大吉,可一旦遇到多账号、权限报错、每次 push 都要输密码,就开始懵。这篇东西不打算写成一份“点击下一步”式的教…

作者头像 李华