适用试卷:
MA6514 2022-2023 Semester 2MA6514 2024-2025 Semester 2MA6514 2025-2026 Semester 1本文只讲三类内容:
- 需要算式子的题
- 需要推公式或解释公式的题
- 需要读代码、写伪代码、说明算法步骤的题
本文不展开 Q1 那类纯概念/论述题。
0. 先补最小基础
如果你是零基础,先把下面 5 个东西看懂,后面的题会顺很多。
0.1 向量、矩阵、矩阵乘法
向量:一串数,比如 $x=[x_1,x_2]^T$。
矩阵:把很多数排成表格,比如
$$W = \begin{bmatrix} w_{11} & w_{12} \\ w_{21} & w_{22} \end{bmatrix}$$矩阵乘法 W @ x:本质上就是“每一行和向量做一次乘加”。
例子:
$$\begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix} \times \begin{bmatrix} 5 \\ 6 \end{bmatrix} = \begin{bmatrix} 17 \\ 39 \end{bmatrix}$$这件事会在神经网络、PCA、线性模型里反复出现。
0.2 均值、方差、协方差
均值:平均值
$$\bar{x}=\frac{1}{n}\sum_{i=1}^n x_i$$方差:一个变量自己波动有多大
$$\mathrm{Var}(x)=\frac{1}{n-1}\sum_{i=1}^n (x_i-\bar{x})^2$$协方差:两个变量是否“一起变大/一起变小”
$$\mathrm{Cov}(x,y)=\frac{1}{n-1}\sum_{i=1}^n (x_i-\bar{x})(y_i-\bar{y})$$PCA 的核心就是“找出协方差最大的方向”。
0.3 特征值、特征向量、主成分
PCA 会把原始特征重新组合成新的坐标轴,这些新的坐标轴叫 主成分。
- 特征向量:方向
- 特征值:这个方向上有多少信息量
如果第一主成分解释了 83% 的方差,意思就是:数据里 83% 的变化都集中在第一条方向上。
0.4 损失函数、梯度、参数更新
损失函数:衡量预测错得多不多。
梯度:告诉你“往哪个方向改参数,损失降得最快”。
梯度下降:
$$\theta \leftarrow \theta - \alpha \nabla_\theta L(\theta)$$这里:
- $\theta$ 是参数
- $L(\theta)$ 是损失
- $\alpha$ 是学习率
神经网络、DQN、很多优化题本质上都在做这件事。
0.5 先验、似然、后验
贝叶斯题里最重要的是这三样:
- 先验:看数据前,你原本相信参数大概长什么样
- 似然:如果参数取某个值,现在这些数据出现的概率有多大
- 后验:综合先验和数据后,对参数的新看法
贝叶斯公式:
$$p(\theta|D)=\frac{p(D|\theta)p(\theta)}{p(D)}$$读 PyMC 代码时,就把每一行往这三件事上套。
1. 2022-2023 Semester 2 计算题详解
这一年最像“传统考试题”:PCA、SVM、Bayesian 回归、神经网络前向传播都很典型。
1.1 PCA 作者鉴定题
题目在考什么
给你一个“文章词频矩阵”,问你如何用 PCA 判断三篇文章是否可能出自同一作者。
它考的不是文学,而是:
- 你会不会把文本变成数值矩阵
- 你会不会做 PCA
- 你会不会解释“83% 和 16% 方差”这种结果
第一步:把文章变成矩阵
假设有 3 篇文章,词汇表里选了 5 个高频词,那么每篇文章都能变成一个词频向量:
$$x^{(1)}=[3, 10, 2, 0, 4],\quad x^{(2)}=[4, 11, 1, 1, 5],\quad x^{(3)}=[3, 9, 2, 0, 4]$$把它们排在一起,就得到矩阵 $X$。
直觉:如果同一个作者有稳定的用词习惯,那么这些向量会比较接近。
第二步:中心化和标准化
PCA 之前通常要先做:
- 每列减去均值
- 如果各列量纲差很多,再除以标准差
公式:
$$z_{ij}=\frac{x_{ij}-\bar{x}_j}{s_j}$$为什么要这样做?
- 某些词天生出现次数特别多,不处理会“霸占方差”
- PCA 对尺度非常敏感
第三步:算协方差矩阵
标准化后计算:
$$\Sigma=\frac{1}{n-1}X^TX$$这里 $\Sigma$ 告诉你:
- 哪些词经常一起变化
- 哪些方向包含最多信息
第四步:特征值分解,得到主成分
$$\Sigma=V\Lambda V^T$$其中:
- $V$ 里每一列是一个主成分方向
- $\Lambda$ 对角线上的值是对应特征值
特征值越大,说明这个方向越重要。
第五步:看 83% 和 16% 到底是什么意思
如果题目说:
- PC1 解释 83% 方差
- PC2 解释 16% 方差
那就说明:
$$83\%+16\%=99\%$$前两主成分已经保留了 99% 的信息,二维图基本够用了。
这时你的结论应该是:
- 如果三篇文章在 PC1-PC2 平面上非常接近,说明文风相近
- 若接近到几乎重合,可以说“存在共同作者的可能”
- PC1 是主要风格差异
- PC2 是次要差异,比如题材、时间、主题
Scree Plot 怎么写
Scree Plot 的横轴是主成分编号,纵轴是特征值或解释方差占比。
考试里最标准的说法:
- 画出每个主成分的解释率
- 找“肘部”
- 或者直接看累计方差是否达到 95%
这题的考场模板
可以直接写:
先将每篇文章转为词频向量,并对词频矩阵做中心化/标准化。
然后计算协方差矩阵并做特征值分解,得到主成分。
若前两主成分解释 83% 和 16% 的方差,则二维表示已保留 99% 信息。
若三篇文章在前两主成分空间中聚集,则说明它们的用词风格高度相似,
因此可推断存在共同作者的可能。
易错点
- 把“相关”写成“同一作者已经被证明”。
- 忘记先标准化。
- 只写结论,不解释 83% 和 16% 的含义。
1.2 三样本 SVM + RBF 核题
题目在考什么
这题一般会给 3 个样本点、类别标签、RBF 核,让你:
- 写对偶问题
- 写约束
- 加入拉格朗日乘子
- 写决策边界
它不一定要求你把数值完全算出来,但一定要求你把结构写对。
第一步:先知道 SVM 想干嘛
SVM 想找一条分类边界,让正负样本分得开,而且“间隔最大”。
原始形式是:
$$\min \frac{1}{2}\|w\|^2$$约束是:
$$y_i(w^Tx_i+b)\ge 1$$但用了核函数后,考试更常考 对偶形式。
第二步:RBF 核是什么
RBF 核写作:
$$k(x_i,x_j)=\exp(-\gamma\|x_i-x_j\|^2)$$它的直觉非常简单:
- 两个点越近,$\|x_i-x_j\|^2$ 越小
- 指数结果越接近 1
- 核值越大,表示这两个点“越像”
如果题目先让你算核矩阵,步骤就是:
- 先算每对样本的平方距离 $\|x_i-x_j\|^2$
- 代入 $k(x_i,x_j)=\exp(-\gamma\|x_i-x_j\|^2)$
- 组成矩阵 $K$
第三步:写对偶目标函数
标准答案:
$$\max_{\alpha}\; \sum_{i=1}^{3}\alpha_i -\frac{1}{2}\sum_{i=1}^{3}\sum_{j=1}^{3}\alpha_i\alpha_j y_i y_j k(x_i,x_j)$$约束:
$$\alpha_i\ge 0,\qquad \sum_{i=1}^{3}\alpha_i y_i=0$$你要记住,千万别漏掉:
- $y_i y_j$
- 核函数 $k(x_i,x_j)$
- 等式约束 $\sum \alpha_i y_i=0$
第四步:加入等式约束乘子
如果题目说“引入新的拉格朗日函数”,就写:
$$\mathcal{L}(\alpha,\delta)= \sum_i \alpha_i -\frac{1}{2}\sum_i\sum_j \alpha_i\alpha_j y_i y_j k(x_i,x_j) +\delta\sum_i \alpha_i y_i$$这里 $\delta$ 就是等式约束的乘子。
第五步:写分类边界
最终分类函数:
$$f(x)=\operatorname{sign}\left(\sum_i \alpha_i y_i k(x_i,x)+b\right)$$含义:
- 每个训练点都在“投票”
- 但真正有用的是支持向量
- 支持向量对应 $\alpha_i>0$
这题怎么从零理解
你可以把它想成:
- RBF 核先帮你衡量“新点和每个旧点有多像”
- 每个旧点按自己的标签和权重 $\alpha_i$ 投票
- 最后把所有票加起来,再加偏置 $b$
- 正数判一类,负数判另一类
考场模板
For the RBF-kernel SVM, first compute the kernel matrix
K_ij = exp(-gamma ||x_i - x_j||^2).
Then the dual problem ismax sum alpha_i - 1/2 sum_i sum_j alpha_i alpha_j y_i y_j K_ij,
subject toalpha_i >= 0andsum alpha_i y_i = 0.
Introducing the equality-constraint multiplierdeltagives the new Lagrangian.
The final decision boundary isf(x) = sign(sum_i alpha_i y_i k(x_i, x) + b).
Only support vectors withalpha_i > 0affect the boundary.
易错点
- 把核函数写成 $\|x_i-x_j\|$,漏掉指数。
- 忘记
sign(...)。 - 忘记支持向量只对应 $\alpha_i>0$。
1.3 PyMC 贝叶斯回归代码题
题目在考什么
题面通常给一段 PyMC 代码,让你逐行解释:
- 哪一行是先验
- 哪一行是似然
- 哪一行是确定性变量
- 为什么
sigma常用HalfNormal sample(2000)在干什么
先把模型写成数学式
最常见的是线性回归:
$$\alpha \sim \mathcal{N}(0,10^2)$$$$\beta \sim \mathcal{N}(0,10^2)$$$$\sigma \sim \text{HalfNormal}(1)$$$$\mu_i=\alpha+\beta x_i$$$$y_i \sim \mathcal{N}(\mu_i,\sigma^2)$$这 5 行就是整段 PyMC 代码的数学本质。
逐行解释的套路
pm.Normal('alpha', ...)- 截距先验
pm.Normal('beta', ...)- 斜率先验
pm.HalfNormal('sigma', ...)- 噪声标准差先验
- 因为标准差不能为负
pm.Deterministic('mu', alpha + beta*x)- 线性预测值
- 它不是随机采样,而是公式算出来的中间量
pm.Normal('y_obs', mu=mu, sigma=sigma, observed=y)- 似然
- 一旦有
observed=y,就表示“把真实数据接进来了”
pm.sample(2000)- 从后验分布采样
- 不是训练 2000 次梯度下降
为什么这是“计算题”
因为老师其实在考你:能否把“代码”翻译回“概率图模型/数学表达式”。
考场最稳写法
alphaandbetaare priors for the intercept and slope.sigmauses aHalfNormalprior because a standard deviation must be positive.mu = alpha + beta*xis a deterministic linear predictor.observed=yturns the Normal node into the likelihood term.pm.sample(2000)draws posterior samples and is used to estimate uncertainty.
易错点
- 说
mu是噪声项,这是错的。 - 说
sample(2000)是“训练 2000 个 epoch”,这是错的。 - 忘记
observed=...是把节点变成似然。
1.4 2-3-2 神经网络前向传播 + MSE
题目在考什么
这一题非常典型:
- 给输入向量 $X$
- 给两层权重矩阵 $W^{(1)}, W^{(2)}$
- 让你算隐藏层输出
- 再算最终输出
- 最后算 MSE
网络结构怎么读
“2-3-2” 的意思是:
- 输入层 2 个数
- 隐藏层 3 个神经元
- 输出层 2 个神经元
第一步:输入进隐藏层
$$z^{(1)}=W^{(1)}X$$$$o^{(1)}=\sigma(z^{(1)})$$这里:
- $z^{(1)}$ 是线性组合结果
- $o^{(1)}$ 是过了激活函数后的隐藏层输出
第二步:隐藏层进输出层
$$z^{(2)}=W^{(2)}o^{(1)}$$$$o^{(2)}=\sigma(z^{(2)})$$这时 $o^{(2)}$ 就是预测值 $\hat{y}$。
第三步:算 MSE
如果题目给真实标签
$$y=[1,0]$$预测值
$$\hat{y}=[0.475,0.505]$$那么:
$$\mathrm{MSE}=\frac{1}{2}\left[(1-0.475)^2+(0-0.505)^2\right]$$先分别平方:
$$(1-0.475)^2=0.525^2=0.275625$$$$(0-0.505)^2=0.255025$$相加:
$$0.275625+0.255025=0.53065$$再乘 $\frac{1}{2}$:
$$\mathrm{MSE}=0.265325 \approx 0.2653$$这题的真正套路
老师想看你是否会按固定顺序做:
- 矩阵乘法
- Sigmoid
- 再做一次矩阵乘法
- 再做一次 Sigmoid
- 代入损失函数
只要顺序对,基本就对。
Sigmoid 为什么老出现
$$\sigma(x)=\frac{1}{1+e^{-x}}$$作用是把任意实数压到 $(0,1)$ 之间。
易错点
- 把矩阵维度乘反。
- 忘记先过激活函数再传下一层。
- 算 MSE 时漏掉平方。
- 把 $\frac{1}{2}$ 忘掉。
2. 2024-2025 Semester 2 计算题详解
这一年更像“方法综合题”:PCA、SVD、LASSO、EM、Bayesian、RL 都放在一起考。
2.1 PCA + Scree Plot + SVD
题目在考什么
这一组题通常会连着问:
- PCA 在作者鉴定里有什么用
- Scree Plot 怎么选主成分
- 特征值分解和 SVD 有什么关系
PCA 的基本流程
还是那 6 步:
- 形成矩阵 $X$
- 中心化/标准化
- 算协方差矩阵
- 特征值分解
- 选主成分个数
- 投影到低维空间
投影公式:
$$Z = X V_k$$这里 $V_k$ 是前 $k$ 个主成分方向。
Scree Plot 怎么选 $k$
有两种最常见写法:
- 肘部法:曲线突然变平的位置
- 累计方差法:选累计解释率达到 90% 或 95% 的最小 $k$
例如解释率是:
$$[0.60,\,0.22,\,0.10,\,0.05,\,0.03]$$累计就是:
$$[0.60,\,0.82,\,0.92,\,0.97,\,1.00]$$如果阈值是 95%,那就选前 4 个主成分。
特征值分解和 SVD 到底是什么关系
PCA 常写:
$$\Sigma = V\Lambda V^T$$SVD 常写:
$$X=U\Sigma_x V^T$$如果数据已经中心化,那么:
$$X^TX = V\Sigma_x^2 V^T$$于是:
$$\lambda_i=\frac{\sigma_i^2}{n-1}$$也就是说:
- SVD 里的右奇异向量 $V$,就是 PCA 的主方向
- 奇异值平方再除以 $n-1$,就是 PCA 的特征值
为什么老师喜欢问 SVD
因为实际计算里,SVD 通常比直接对协方差矩阵做特征值分解更稳定。
易错点
- 把
explained variance ratio写成原始特征值。 - 忘记“先中心化再做 PCA”。
- 说 SVD 只能用于方阵,这是错的。
2.2 Kernel Trick、LASSO 与降维
Kernel Trick 要会写什么
标准写法:
$$k(x,x')=\phi(x)^T\phi(x')$$意思是:
- 我不显式地把 $x$ 映射成高维向量 $\phi(x)$
- 我只直接算映射后内积
这样就能在“隐式高维空间”里做线性分类,但计算仍然发生在原空间。
为什么这样有用
原本数据在线性空间里分不开, 经过隐式映射后,可能就能分开。
LASSO 为什么也常和 PCA 一起考
因为两者都和“降维”有关,但方式完全不同。
- PCA:造新特征
- LASSO:删旧特征
LASSO 目标函数:
$$\min_\beta \|y-X\beta\|^2 + \lambda \|\beta\|_1$$这里的 $\|\beta\|_1=\sum_j |\beta_j|$。
为什么 LASSO 会把系数压成 0
因为 L1 正则的几何约束是“菱形”,优化时很容易碰到坐标轴角点,于是某些系数正好变成 0。
这就叫 特征选择。
这组题怎么答
PCA is a feature-extraction method because it builds new components.
LASSO is a feature-selection method because it keeps the original variables
but drives some coefficients exactly to zero.
The kernel trick computesphi(x)^T phi(x')implicitly throughk(x,x'),
which makes nonlinear SVM classification computationally feasible.
2.3 ANN 反向传播链式求导
题目在考什么
老师通常不会让你把整张网络全推完,而是让你写出输出层某个权重的梯度链:
$$\frac{\partial L}{\partial w} = \frac{\partial L}{\partial o} \cdot \frac{\partial o}{\partial z} \cdot \frac{\partial z}{\partial w}$$这 3 项各是什么意思
- $\frac{\partial L}{\partial o}$
- 预测错了多少
- $\frac{\partial o}{\partial z}$
- 激活函数本身的斜率
- $\frac{\partial z}{\partial w}$
- 这个权重前面接的输入值
所以可以把梯度记成一句话:
梯度 = 误差 × 局部导数 × 输入
如果输出层是 Sigmoid + MSE
Sigmoid 导数:
$$\sigma'(z)=\sigma(z)(1-\sigma(z))$$若输出为 $o$、标签为 $y$、上一层输出为 $h_j$,则单个权重梯度常写成:
$$\frac{\partial L}{\partial w_j} =(o-y)\,o(1-o)\,h_j$$有些教材写成负号形式,本质一样,只是把误差项写法不同。
这题怎么从零理解
如果模型预测偏大,那么要把权重往“减小输出”的方向推。 梯度就是告诉你推多大。
易错点
- 把链式法则写反顺序。
- 忘记 Sigmoid 的导数是 $o(1-o)$。
- 把上一层输入写丢。
2.4 K-Means、EM 与 MAR 缺失值填补
先分清 K-Means 和 EM
K-Means 的核心是:
$$\min \sum_{i=1}^{n}\sum_{k=1}^{K} r_{ik}\|x_i-\mu_k\|^2$$这里 $r_{ik}$ 只有 0 或 1,表示“第 $i$ 个点属于哪一簇”。
所以 K-Means 是 硬分配。
EM 处理高斯混合模型时,用的是“责任度”:
$$\gamma_{ik}=P(z_i=k|x_i,\theta)$$它是一个概率,可以是 0.2、0.7、0.1 这种。
所以 EM 是 软分配。
EM 两步要背熟
E-step:
- 用当前参数估计隐变量/缺失值的条件期望
M-step:
- 把 E-step 的结果当作“加权完整数据”
- 重新更新参数
MAR 缺失值填补怎么讲
MAR = Missing At Random,意思是:
- 缺失和“已观测变量”有关
- 但在给定这些已观测变量后,不再依赖缺失值本身
EM 填补步骤:
- 先给参数一个初值
- E-step:估计缺失值的期望
- M-step:用补后的完整数据更新参数
- 重复直到收敛
为什么 EM 比直接删样本好
因为删样本会:
- 浪费信息
- 增大方差
- 可能引入偏差
EM 会更充分利用已观测到的数据结构。
考场一句话模板
K-Means performs hard assignment and updates only the cluster centroids.
EM performs soft assignment through posterior responsibilities and then updates
mixture weights, means, and covariances.
For MAR missing data, EM alternates between estimating the missing part in the
E-step and re-estimating model parameters in the M-step until convergence.
2.5 航运 PyMC 模型、Negative Binomial 与 divergence
PyMC 模型题怎么答
这部分和 2022 年的 Bayes 回归代码题思路一致,但多了两个常见追问:
- 为什么可能要用 Negative Binomial
- sampling divergence 是什么
Negative Binomial 为什么适合计数数据
如果你的响应变量是“每月集装箱数量”“故障次数”这类计数, Poisson 常常太严格,因为它要求:
$$\mathrm{Var}(Y)=\mathbb{E}(Y)$$但现实中经常出现:
$$\mathrm{Var}(Y)>\mathbb{E}(Y)$$这叫 过度离散。
Negative Binomial 可以允许更大的方差,所以更灵活。
一个常见记忆方式是:
- 一个参数管均值
- 一个参数管离散程度
divergence 是什么
MCMC,特别是 HMC/NUTS,在采样时要沿着后验分布“走路”。
如果后验分布很尖、尺度差太大、几何形状太怪, 算法一步迈太大,就可能“走崩”,这就叫 divergence。
遇到 divergence 怎么答
可以直接列 4 个常见处理办法:
- 增大
target_accept - 增大
tune - 重参数化
- 收紧先验或缩放数据
易错点
- 说 divergence 说明模型“一定错了”。不一定,但说明采样不可靠。
- 说 Negative Binomial 是“专门做分类”的,这是错的,它是计数模型。
2.6 DQN 与 SARSA
题目在考什么
这一组题一般会给:
- DQN 伪代码
- SARSA 更新式
- 问经验回放、目标网络、学习方式差异
先看 SARSA
SARSA 更新式:
$$Q(s,a)\leftarrow Q(s,a)+\alpha\left[r+\gamma Q(s',a')-Q(s,a)\right]$$这里的逻辑是:
- 当前在状态 $s$ 采取动作 $a$
- 得到奖励 $r$
- 到达新状态 $s'$
- 在新状态里又实际选了动作 $a'$
- 用这个“实际下一步动作”的价值来更新
所以 SARSA 是 on-policy。
再看 DQN
DQN 目标值:
$$y=r+\gamma \max_{a'}Q_{\theta^-}(s',a')$$损失函数:
$$L(\theta)=\frac{1}{n}\sum_i \left(y_i-Q_\theta(s_i,a_i)\right)^2$$更新:
$$\theta\leftarrow \theta-\alpha \nabla_\theta L(\theta)$$经验回放为什么重要
经验回放就是把过往经历
$$(s,a,r,s')$$先存起来,再随机抽样训练。
好处:
- 打破样本时间相关性
- 提高数据利用率
- 训练更稳定
目标网络为什么重要
如果你一边更新主网络,一边又拿它自己生成目标值, 目标会不停晃,训练容易不稳。
所以 DQN 用一个较慢更新的目标网络 $Q_{\theta^-}$。
DQN 和 SARSA 的一句话差异
- SARSA:拿“真正采取的下一动作”更新,偏保守
- DQN:拿“估计最优动作”的值更新,偏向最优控制
3. 2025-2026 Semester 1 计算题详解
这一年非常贴近应用:预测性维护、K-Fold、混合模型、异常检测、迷宫强化学习。
3.1 Pandas + PCA 做缺失值处理与 95% 方差保留
题目在考什么
这题表面上是写伪代码,实际上同时考:
- 你会不会用 Pandas 处理表格
- 你知不知道什么时候该标准化
- 你会不会用 PCA 的累计方差阈值
最稳的处理顺序
先做表格层面处理:
- 读入数据
- 统一列名
- 删除明显错误行
- 对数值列做初步缺失值填补
然后才进入 PCA:
- 标准化
- 拟合 PCA
- 保留累计方差至少 95% 的最少主成分
伪代码骨架:
X = df[num_cols].fillna(df[num_cols].median())
X = StandardScaler().fit_transform(X)
pca = PCA(n_components=0.95)
X_pca = pca.fit_transform(X)
为什么要先 fillna 再 PCA
因为普通 PCA 不能直接处理 NaN。
为什么要标准化
温度、功率、转速、振动的量纲完全不同。 如果不标准化,大数值的特征会主导主成分。
n_components=0.95 到底是什么意思
不是“保留 0.95 个主成分”,而是:
自动选出累计解释率达到 95% 以上的最少主成分数
例如解释率为:
$$[0.58,0.23,0.11,0.05,0.03]$$累计为:
$$[0.58,0.81,0.92,0.97,1.00]$$于是要选前 4 个。
这题为什么会问“哪些传感器最关键”
因为做完 PCA 后,老师想看你会不会解释“载荷矩阵”。
在预测性维护里,通常最关键的是:
- 轴承温度
- 主轴转速
- 功率
- 三轴振动
因为它们最直接反映:
- 摩擦
- 热异常
- 负载变化
- 机械松动或失衡
3.2 K-Fold 交叉验证
题目在考什么
这一题常见的问法是:
- K-Fold 怎么做
- 在参数调优里有什么用
- 回归里用什么评分
- 怎么看模型泛化能力
从零开始理解
如果你把数据只切一次训练/测试, 结果可能碰巧好,也可能碰巧差。
K-Fold 的想法是:
- 把数据分成 $K$ 份
- 每次拿 1 份验证,剩下 $K-1$ 份训练
- 一共轮流做 $K$ 次
- 最后平均
平均分公式:
$$\mathrm{CV\ score}=\frac{1}{K}\sum_{k=1}^{K}\mathrm{score}_k$$举个 5-Fold 例子
如果 5 次验证的 $R^2$ 分别是:
$$[0.81, 0.79, 0.83, 0.80, 0.78]$$平均是:
$$\frac{0.81+0.79+0.83+0.80+0.78}{5}=0.802$$这说明模型表现比较稳定。
如何用来判断过拟合
如果:
- 训练分数很高
- K-Fold 平均验证分数明显低
那通常说明过拟合。
如果:
- 各折分数接近
- 平均验证分数和测试分数也接近
那说明泛化较好。
回归常见评分
- MSE
- RMSE
- MAE
- $R^2$
易错点
- 以为 K-Fold 会“把测试集也拿去训练”。正式流程里,测试集应最后再用。
- 只写“分成 K 份”,不写“轮流验证并求平均”。
3.3 Mercer 定理与核函数合法性
题目在考什么
这一题看起来抽象,其实就考一句话:
什么时候一个函数真的可以拿来当核函数?
标准答案
对任意有限样本集 $\{x_1,\dots,x_n\}$, 如果由
$$K_{ij}=k(x_i,x_j)$$构成的 Gram 矩阵 $K$ 总是 半正定,那么这个 $k$ 就是合法核函数。
什么叫半正定
最常见记法:
$$z^T K z \ge 0 \quad \text{for all } z$$零基础直觉就是:
- 这个矩阵不会产生“负的平方长度”
- 所以它真的像某个高维空间里的内积
为什么这件事重要
因为只有这样,我们才能说:
$$k(x,x')=\phi(x)^T\phi(x')$$也就是:核函数等价于“先映射,再做内积”。
一个很小的 2x2 直觉例子
如果只有两个样本,核矩阵是:
$$K = \begin{bmatrix} k(x_1,x_1) & k(x_1,x_2) \\ k(x_2,x_1) & k(x_2,x_2) \end{bmatrix}$$要它半正定,至少要满足:
- 对角线非负
- 行列式不小于 0
也就是:
$$k(x_1,x_1)k(x_2,x_2)-k(x_1,x_2)^2 \ge 0$$这个形式本质上就在保证“相似度定义没有自相矛盾”。
3.4 Dirichlet + Normal Mixture 贝叶斯混合模型
题目在考什么
这一题一般是设备状态或航运状态建模:
- 正常
- 警告
- 故障
单一正态分布往往不够,所以用混合模型。
先看模型结构
混合权重:
$$p=(p_1,\dots,p_K)\sim \mathrm{Dirichlet}(\alpha)$$要求:
$$p_k\ge 0,\qquad \sum_{k=1}^K p_k=1$$观测模型:
$$p(y)=\sum_{k=1}^{K}p_k\,\mathcal{N}(y|\mu_k,\sigma_k^2)$$Dirichlet 在这里到底干嘛
它不是在管观测值本身,而是在管:
每个成分各占多大比例
也就是混合权重的先验。
如果 $\alpha=(1,1,\dots,1)$,可以理解成“先不偏向任何一类”。
为什么单个正态不够
如果数据有多个峰,比如:
- 一大团低温正常状态
- 一小团中温预警状态
- 一小团高温故障状态
那单个正态只能画一个钟形,显然不够。
混合模型就能画多个钟形再加权相加。
代码题怎么解释
如果看到:
p = pm.Dirichlet(...)
means = pm.Normal(...)
sd = pm.HalfNormal(...)
y = pm.NormalMixture(...)
就按下面说:
Dirichlet:给混合权重先验Normal:给各成分均值先验HalfNormal:给标准差先验NormalMixture:最终观测由多个正态分量混合生成
3.5 EM 与给定损失公式
题目在考什么
这题有时会把两套语言放在一起:
- 一边问你 EM 的 E-step / M-step
- 一边给一个平方损失和梯度下降更新式
你不要慌,它本质上还是在问:
先根据当前模型补/估,再根据补后的结果更新参数
EM 的标准两步
E-step
$$Q(\theta|\theta^{(t)})=\mathbb{E}_{Z|X,\theta^{(t)}}[\log p(X,Z|\theta)]$$直白地说:
- 在当前参数 $\theta^{(t)}$ 下
- 先估计隐变量或缺失值的期望
M-step
$$\theta^{(t+1)}=\arg\max_\theta Q(\theta|\theta^{(t)})$$也就是:
- 固定 E-step 的结果
- 更新参数
如果题里给了平方损失
例如:
$$L(\theta)=\frac{1}{n}\sum_i \left(y_i-Q^{\text{net}}(s_i,u_i)\right)^2$$以及:
$$\theta\leftarrow\theta-\alpha\nabla_\theta L(\theta)$$那就解释成:
- 先根据当前模型产生目标值
- 再最小化目标值和网络输出之间的误差
- 用梯度下降更新参数
也就是说,题目是在考“迭代优化”的共同思想。
3.6 Outlier 检测
题目在考什么
这题通常问两件事:
- 给两个判定异常值的标准
- 给一个机器学习流程
标准一:3-sigma
如果一个点满足:
$$|x-\mu|>3\sigma$$就可以认为它非常偏离总体,可能是异常值。
例子:
- 均值 $\mu=50$
- 标准差 $\sigma=4$
那么正常区间大致是:
$$[50-12,\;50+12]=[38,\;62]$$如果某个值是 70,就超过上界,可能异常。
标准二:IQR
先算:
$$\mathrm{IQR}=Q_3-Q_1$$异常阈值:
$$[Q_1-1.5\mathrm{IQR},\;Q_3+1.5\mathrm{IQR}]$$例子:
- $Q_1=10$
- $Q_3=18$
- $\mathrm{IQR}=8$
则正常区间:
$$[10-12,\;18+12]=[-2,\;30]$$如果数据里出现 40,就可能是异常值。
机器学习流程怎么写
最稳写法:
- 选特征并标准化
- 训练
Isolation Forest - 输出异常分数
- 设置阈值
- 人工复核
为什么最后还要人工复核
因为异常点不一定是“错数据”,也可能是真实但罕见的重要事件。
3.7 10×10 迷宫强化学习建模
题目在考什么
虽然它不是纯算数值,但它是标准的“算法建模题”。
五要素一定要写全
- Agent:小车/机器人
- Environment:迷宫
- State:当前位置,必要时加朝向、障碍信息
- Action:上、下、左、右
- Reward:
- 到终点
+100 - 撞墙
-10 - 每走一步
-1
- 到终点
为什么每步给负奖励
因为这样模型会倾向于:
- 少走弯路
- 更快到终点
推荐什么算法
如果是 10×10 这种离散小状态空间,优先写:
- Q-learning
- 或 SARSA
更新式可以写:
$$Q(s,a)\leftarrow Q(s,a)+\alpha\left[r+\gamma\max_{a'}Q(s',a')-Q(s,a)\right]$$如果题目强调“更保守、更跟随真实动作”,就写 SARSA:
$$Q(s,a)\leftarrow Q(s,a)+\alpha\left[r+\gamma Q(s',a')-Q(s,a)\right]$$易错点
- 只写“用强化学习”,不写状态、动作、奖励。
- 迷宫明明很小,却强行写 DQN。
4. 三年共同高频公式速记
4.1 PCA
$$\Sigma=\frac{1}{n-1}X^TX$$$$\Sigma=V\Lambda V^T$$$$Z=XV_k$$4.2 SVM
$$\max_\alpha \sum_i\alpha_i-\frac{1}{2}\sum_i\sum_j\alpha_i\alpha_j y_i y_j k(x_i,x_j)$$$$f(x)=\operatorname{sign}\left(\sum_i\alpha_i y_i k(x_i,x)+b\right)$$4.3 神经网络
$$z^{(l)}=W^{(l)}a^{(l-1)}$$$$a^{(l)}=\sigma(z^{(l)})$$$$\mathrm{MSE}=\frac{1}{2}\sum_i (y_i-\hat{y}_i)^2$$4.4 贝叶斯回归
$$y_i\sim \mathcal{N}(\alpha+\beta x_i,\sigma^2)$$4.5 EM
$$Q(\theta|\theta^{(t)})=\mathbb{E}_{Z|X,\theta^{(t)}}[\log p(X,Z|\theta)]$$$$\theta^{(t+1)}=\arg\max_\theta Q(\theta|\theta^{(t)})$$4.6 K-Fold
$$\mathrm{CV\ score}=\frac{1}{K}\sum_{k=1}^{K}\mathrm{score}_k$$4.7 DQN / SARSA
$$y=r+\gamma \max_{a'}Q_{\theta^-}(s',a')$$$$Q(s,a)\leftarrow Q(s,a)+\alpha\left[r+\gamma Q(s',a')-Q(s,a)\right]$$5. 最后给你的复习建议
如果你的时间不多,按下面顺序复习最划算:
- 先吃透 PCA
- 标准化
- 协方差
- 特征值/解释率
- Scree Plot
- 再吃透神经网络两条主线
- 前向传播
- 反向传播
- 再背 SVM 两条公式
- 对偶目标
- 决策边界
- 把 Bayes 代码翻译成数学语言
- 先验
- 似然
- 后验采样
- 最后看 EM、K-Fold、DQN/SARSA
- 它们更像“步骤题”和“模板题”

