简介:这份资料面向东南大学网络空间安全学院修读模式识别课程的学生,汇集了课后作业答案与期末真题回忆版,适合用来对照作业查漏补缺、把握考试重点。据描述,该课程考试范围约九成来自做过的作业变式,因此作业答案的参考价值远高于教材本身,尤其适合平时跟PPT自学、需要靠作业突击复习的同学。压缩包共814个文件,约118.24MB,其中400个bmp与390个pgm图像文件对应课程实验与作业中的数据集样本,16个pptx为课件讲义,另有少量m脚本、docx文档及嵌套zip,覆盖从数据读取到算法实现的完整流程。目前已有868人学习下载。借助作业答案可逐题核对推导与代码实现,配合真题回忆版能快速锁定高频考点与题型变化,m脚本与图像数据也可直接复现实验,帮助在有限复习时间内抓住这门课量少却关键的核心内容。
1. 模式识别期末复习地图:从作业答案到真题回忆的完整脉络
模式识别这门课,很多人学到一半会有种错觉:课上讲的都是贝叶斯、判别函数、聚类这些听起来很规整的东西,可一到作业和考试,题目就像换了一副面孔。这份资料把作业答案和考试真题回忆版放在一起,恰好补上了从“听懂”到“做对”之间那段最容易被忽略的路。它适合正在系统学模式识别、准备期末的人,也适合已经过了一遍教材、想快速查漏补缺的人。梳理下来会发现,这门课真正的难点不在公式本身,而在“拿到一道题,你知不知道该用哪套决策逻辑去套”。下面按知识模块把整张地图铺开,重点、易错点、复习清单依次落地。
2. 贝叶斯决策与概率密度估计:先验、后验与似然的三角关系
2.1 贝叶斯决策的核心公式与三种判决规则
模式识别的第一条主线是贝叶斯决策。它的底层逻辑很朴素:给定一个样本 x,你要判断它属于哪一类,靠的是后验概率 P(ωᵢ|x)。而贝叶斯公式把后验拆成了先验和类条件概率的乘积:
# 贝叶斯决策的最小计算骨架 # prior: 各类先验概率 P(w_i) # likelihood: 类条件概率密度 p(x|w_i) # evidence: 全概率 p(x) = sum(prior[i] * likelihood[i]) posterior = (prior * likelihood) / evidence # 判决:取 posterior 最大的那个类别 decision = argmax(posterior)这段代码里,prior来自训练集中各类的占比,likelihood来自你对类条件分布的建模,evidence对每个类都一样,所以实际判决时只需要比较分子。参数上最容易改的是先验:如果题目给了“某类先验为 0.8”,那后验会被先验强烈拉扯,判决边界随之偏移。
三种判决规则要分清:最小错误率贝叶斯决策看的是后验最大;最小风险贝叶斯决策引入损失矩阵,把“判错的代价”量化进去;而 Neyman-Pearson 准则是在限定某一类错误率的前提下,让另一类错误率最小。考试里常把这三者混在一起出题,关键看题目给的是损失矩阵、错误率上限,还是直接给后验。
2.2 概率密度估计:参数方法与无参数方法的取舍
类条件概率密度 p(x|ωᵢ) 不会凭空出现,要么假设它服从某种分布再估参数,要么直接用无参数方法拟合。参数方法里,高斯分布是绝对主角,因为均值和协方差矩阵一估,整个密度就定了。最大似然估计和贝叶斯估计的区别在于:前者把参数当固定未知量,后者把参数也当随机变量,多了一层先验。
无参数方法里,直方图最直观但维度一高就崩;Parzen 窗用核函数平滑,核宽 h 是命门,h 太小曲线毛刺,h 太大又糊成一团;k 近邻则是固定 k 让窗自适应。梳理下来会发现,考试喜欢考“给定样本,写出 Parzen 窗估计表达式”或者“比较两种无参数方法的优缺点”,而不是让你真去算积分。
注意:高斯假设下,如果协方差矩阵不可逆,密度函数会直接失效。考场上遇到协方差行列式为零,先检查是不是样本数少于维度,或者特征之间完全线性相关。
3. 判别函数与线性分类器:从几何边界到感知机收敛
3.1 线性判别函数的几何意义与增广形式
线性判别函数 g(x) = wᵀx + w₀ 把特征空间切成两半,决策面 g(x)=0 是一个超平面。w 是法向量,决定超平面的方向;w₀ 是偏置,决定它离原点多远。增广形式把 w₀ 吸收进权重向量,样本也补一个 1,这样 g(x)=aᵀy 写起来更统一。
多类情形下,判别函数可以是一对多、一对一,也可以是线性机器。一对多就是每个类跟其余所有类比,容易遇到“多个类同时胜出”的死区;一对一则是每两类之间划一条边界,最后投票。考试里常给一组二维点,让你写出判别函数并画出决策面,这时候先算 w 和 w₀,再找 g(x)=0 的两个截距点就能画线。
3.2 感知机与最小平方误差:两种训练思路的差别
感知机准则只关心“有没有分对”,错分样本才更新权重,更新规则是 w ← w + ρ·y,其中 y 是错分样本的增广向量,ρ 是学习率。它的收敛前提是样本线性可分,一旦不可分就会震荡。血泪经验是:学习率设太大,权重会来回跳;设太小,迭代次数爆炸。
最小平方误差准则(MSE)则把“分对”变成“逼近目标值”,让 aᵀy 尽量接近某个正数 b。它不要求线性可分,解出来的是伪逆解,但可能把原本能分开的样本也判错。两者的核心差别在于:感知机是错误驱动,MSE 是误差驱动。题目问“哪种方法适合线性不可分数据”,答案通常指向 MSE 或带松弛变量的变体。
| 方法 | 收敛条件 | 更新依据 | 典型问题 |
|---|---|---|---|
| 感知机准则 | 线性可分 | 错分样本 | 不可分时震荡 |
| 最小平方误差 | 无要求 | 全部样本误差 | 可能牺牲可分性 |
| Ho-Kashyap | 无要求 | 误差+边距 | 参数调节复杂 |
3.3 易漏点:判别函数章节最容易翻车的三处
第一处是增广向量的符号。补 1 还是补 -1,取决于你把偏置放在哪一侧,一旦符号搞反,整个决策面方向就错了。第二处是学习率与迭代次数的关系,很多人只写“更新权重”却不写停止条件,考试扣分就在这。第三处是多类扩展时,一对多和一对一的结果可能不一致,题目如果没指定策略,要先说明你用的是哪种,再往下算。
4. 特征选择与降维:别让维度成为黑匣子
4.1 特征选择的三种搜索策略
特征选择是从原始特征里挑一个子集,不改变物理含义。穷举法在特征数少时可行,但特征一多就组合爆炸。分支定界法利用单调性剪枝,能在保证最优的前提下少搜一些。顺序前进和顺序后退则是贪心:前者每次加一个最好的,后者每次删一个最差的,缺点是一旦选错就无法回头。
考试里常考“用顺序前进法从 5 个特征中选 3 个”,步骤要写清楚:先选单独判据最高的那个,再在剩余特征里找与已选特征组合后判据最高的,依次类推。判据通常用类间距离、相关性或互信息。
4.2 主成分分析与 Fisher 判别:两种降维的出发点
PCA 是无监督的,目标是让投影后的方差最大,换句话说,它保留的是数据本身的散布结构,不管类别标签。Fisher 判别分析是有监督的,目标是让类间散度与类内散度的比值最大,投影后同类挤在一起、异类拉得开。
# Fisher 线性判别的方向向量计算 # Sw: 类内散度矩阵, Sb: 类间散度矩阵 import numpy as np w = np.linalg.inv(Sw) @ (m1 - m2) # m1, m2 为两类均值 # 若 Sw 不可逆,需先做正则化或降维参数说明:Sw由各类样本围绕各自均值的散布累加得到,Sb由类均值围绕总均值的散布得到。np.linalg.inv(Sw)要求 Sw 可逆,样本数少于维度时这一步会直接报错,实际处理时常用伪逆或先做 PCA 降维。
提示:PCA 降维后如果再接分类器,主成分个数不能只看方差贡献率,还要看分类效果。方差大的方向未必对分类有用,这是最容易忽略的一点。
4.3 易错点:降维与选择的常见混淆
最容易错的是把特征选择和特征提取混为一谈。选择是挑原特征,提取是造新特征。PCA 和 Fisher 都属于提取,不是选择。另一个坑是 PCA 之前要不要标准化:如果各特征量纲差很多,不标准化会让大方差特征主导主成分,结果失真。还有 Fisher 中 Sw 奇异时的处理,很多人直接跳过,其实题目往往就考这一步。
5. 聚类与近邻法:无监督与懒惰学习的复习重点
5.1 聚类算法:K-means、层次与密度
K-means 是最常考的聚类算法,核心是“分配—更新”交替:先把每个样本分给最近的簇心,再用簇内均值更新簇心,直到簇心不再移动。它的缺点是 k 要预先指定,且对初始簇心敏感,容易陷入局部最优。层次聚类分凝聚和分裂两种,凝聚式从每个样本一个簇开始,每次合并最近的簇,最终形成树状图,切在不同高度就得到不同数量的簇。密度聚类则能发现任意形状的簇,但参数敏感。
考试里 K-means 常考手算一轮迭代,步骤是:给定初始簇心,算每个样本到各簇心的距离,分配,再算新簇心。注意距离用欧氏距离时,平方和展开后交叉项会简化计算。
5.2 近邻法:k 值选择与距离度量
最近邻法把训练样本全存下来,来一个测试样本就找最近的训练样本,属于懒惰学习。k 近邻则是找 k 个最近邻投票。k=1 时决策边界复杂,容易过拟合;k 增大边界变平滑,但太大又会欠拟合。距离度量除了欧氏距离,还有曼哈顿距离、切比雪夫距离,题目如果没指定,默认欧氏。
| 距离类型 | 公式要点 | 适用场景 |
|---|---|---|
| 欧氏距离 | 平方和开根 | 连续特征,默认选择 |
| 曼哈顿距离 | 绝对值和 | 高维稀疏,抗异常值 |
| 马氏距离 | 考虑协方差 | 特征相关性强 |
5.3 易漏点:聚类评价与近邻的边界情况
聚类没有标签,评价指标容易漏。外部指标如调整兰德指数需要真实标签,内部指标如轮廓系数只看簇内紧致和簇间分离。考试若问“如何评价聚类结果”,要先说清有没有真实标签。近邻法里,如果出现距离相同的情况,投票平局怎么处理,很多人不写,其实题目可能就埋在这里。另外,近邻法计算量大,考“如何加速”时,KD 树和球树是标准答案。
6. 复习清单与查漏补缺:从真题回忆反推重点
6.1 按题型归类的复习优先级
把作业答案和真题回忆放在一起看,题型大致分四类:公式推导、手算迭代、算法比较、概念辨析。公式推导集中在贝叶斯和 Fisher;手算迭代集中在感知机、K-means、Parzen 窗;算法比较集中在参数与非参数、PCA 与 Fisher、K-means 与层次聚类;概念辨析则爱考“判别函数与决策面的关系”“先验与后验的区别”。
复习时建议按这个顺序走:先把贝叶斯公式和三种判决规则默写一遍,再手推一遍 Fisher 方向向量,然后手算一轮 K-means 和感知机更新,最后把易混淆概念列成对照表。每做完一类,回到真题回忆里找对应题目验证。
6.2 查漏补缺的具体做法
准备一张 A4 纸,左边写模块名,右边写“我能默写的公式”和“我常错的步骤”。默写不出来的,立刻回教材对应章节,只读那一节,读完马上合上书再默一遍。手算错的,把错误步骤单独抄下来,标注是符号错、公式错还是计算错。概念混淆的,用一句话写清区别,比如“PCA 看方差,Fisher 看类间类内比”。
注意:真题回忆版的价值在于题型和考点分布,不在于答案本身。回忆版里模糊的题目,要回到作业答案里找同类题,用作业的解法去套,而不是死记回忆版的只言片语。
6.3 一个可复用的复习节奏
我自己的习惯是:考前一周,每天只攻一个模块,上午默写公式,下午手算两道题,晚上把当天错的点写进一张“后悔药清单”。第二天开始前,先花十分钟把前一天的清单过一遍,再进入新模块。这样滚动下来,到考前最后一天,清单上剩下的就是真正没掌握的,集中突破即可。
从那以后我每次复习模式识别,都强制走一遍“默写—手算—对照真题”的流程,不再只是翻书看公式。希望这份梳理能帮到你,把作业答案和真题回忆真正用成一张能走通的地图。
本文还有配套的精品资源,点击获取