1.绪论

归纳偏置:

学习算法在面对多个都能解释训练数据的假设时,倾向于选择某一类假设的偏好。
模型 归纳偏置
线性模型 输入与输出近似线性相关
决策树 可以通过一系列特征划分完成判断
KNN 相近样本有相似标签
朴素贝叶斯 特征之间条件独立
SVM 最大间隔的分类边界更好
CNN 图像具有局部性和平移不变性
RNN 序列数据存在时间依赖
Transformer token 之间存在可通过注意力建模的关系

归纳偏置和泛化的关系

情况 结果
偏置太弱 模型太自由,容易过拟合
偏置太强 模型太死板,容易欠拟合
偏置合适 泛化能力较好

奥卡姆剃刀

奥卡姆剃刀可以概括为:

若有多个假设都能解释现象,应优先选择最简单的那个。

在机器学习中,它通常表现为:

如果多个模型在训练集上表现相近,优先选择更简单的模型。

考试中可以这样写

归纳偏置是学习算法在学习过程中对假设空间的偏好。由于训练样本有限,通常存在多个假设都能与训练数据一致,学习算法必须借助某种先验假设来选择其中一个假设,从而实现对未见样本的泛化。常见归纳偏置包括线性假设、平滑性假设、最大间隔假设、特征条件独立假设等。

奥卡姆剃刀是一种典型的归纳偏置,其思想是:若多个假设都能较好解释训练数据,则应优先选择较简单的假设。在机器学习中,这通常表现为偏好低复杂度模型、较小参数范数、较浅决策树或较短描述长度,以降低过拟合风险并提高泛化能力。但奥卡姆剃刀并不保证总是正确,当真实规律本身复杂时,过度追求简单可能导致欠拟合。

生成式和判别式模型

任务 生成式模型 判别式模型
文本分类 朴素贝叶斯 逻辑回归、SVM、BERT 分类器
序列标注 HMM CRF、BiLSTM-CRF
图像分类 高斯判别分析、生成式分类器 CNN、ResNet、ViT
聚类/密度建模 GMM、VAE、Diffusion 通常不是判别式任务
语音识别 HMM-GMM DNN-HMM、CTC、Transformer 判别模型

2.模型评估与选择

统计学习方法三要素

统计学习方法 = 模型 + 策略 + 算法。

  • 模型:要学习的映射函数、决策函数或条件概率分布。
  • 假设空间:所有候选模型组成的集合,如 $\mathcal{F}={f\mid Y=f(X)}$。
  • 策略:从假设空间中选择最优模型的准则,通常以风险最小化为目标。
  • 算法:求解最优化问题的具体方法,如梯度下降、牛顿法等。

损失与风险

  • 损失函数 $L(y,f(x))$:衡量模型对单个样本的预测误差。
    • 0-1 损失:预测错误为 1,正确为 0。
    • 平方损失:$L(y,f(x))=(y-f(x))^2$。
  • 期望风险(泛化风险):模型在真实数据分布上的平均损失,无法直接计算。 $$R_{exp}(f)=\mathbb{E}[L(Y,f(X))]$$
  • 经验风险:模型在训练集上的平均损失,是期望风险的近似。 $$R_{emp}(f)=\frac{1}{N}\sum_{i=1}^{N}L(y_i,f(x_i))$$
  • 经验风险最小化(ERM):选择训练误差最小的模型;数据少或模型复杂时容易过拟合。
  • 结构风险最小化(SRM):在经验风险上加入模型复杂度惩罚,以提高泛化能力。 $$\min_{f\in\mathcal{F}}R_{emp}(f)+\lambda J(f)$$ 其中 $J(f)$ 表示模型复杂度,$\lambda$ 控制拟合能力与模型复杂度之间的权衡。

基本概念

  • 经验误差(训练误差):模型在训练集上的误差。
  • 泛化误差:模型在未见样本上的误差,是模型评估真正关心的指标。
  • 欠拟合:模型过于简单,训练误差和测试误差都较高。
  • 过拟合:模型过度适应训练数据,训练误差低,但测试误差高。
  • 模型选择的三个问题:如何获得可靠测试结果、如何度量性能、如何判断差异是否显著。

评估方法

测试集必须与训练集互斥,并尽量保持数据分布一致。

方法 核心做法 特点
留出法 将数据一次划分为训练集和测试集 简单;应分层采样并多次随机划分,测试集常占 $1/5\sim1/3$
$K$ 折交叉验证 分成 $K$ 份,轮流用一份测试、其余训练,结果取平均 较稳定,但需训练 $K$ 次
自助法 有放回抽取与原数据集等量的样本作为训练集 约 $36.8%$ 的样本未被抽中,可作为包外测试集;会改变数据分布

训练集、验证集与测试集

  • 训练集:学习模型参数。
  • 验证集:选择模型和调整超参数。
  • 测试集:只用于最终评估泛化性能,不能参与调参。
  • 超参数确定后,应使用“训练集 + 验证集”重新训练最终模型,再在测试集上评估。

性能度量

回归任务

  • 均方误差(MSE):预测值与真实值之差的平方的平均值,越小越好。 $$MSE=\frac{1}{m}\sum_{i=1}^{m}(f(x_i)-y_i)^2$$

分类任务

  • 错误率:分类错误的样本比例。
  • 准确率(Accuracy):分类正确的样本比例,$Accuracy=1-Error$。
  • 查准率(Precision):预测为正的样本中,真正为正的比例。 $$P=\frac{TP}{TP+FP}$$
  • 查全率(Recall):所有真实正例中,被正确找出的比例。 $$R=\frac{TP}{TP+FN}$$
  • F1:Precision 与 Recall 的调和平均,用于兼顾二者。 $$F1=\frac{2PR}{P+R}$$
  • $F_\beta$:$\beta>1$ 更重视 Recall,$\beta<1$ 更重视 Precision。

P-R、ROC 与 AUC

  • P-R 曲线:以 Recall 为横轴、Precision 为纵轴;曲线越靠近右上方越好,适合类别不平衡问题。
  • BEP(平衡点):Precision 等于 Recall 时的取值,越大越好。
  • ROC 曲线:以假阳性率 FPR 为横轴、真正例率 TPR 为纵轴。
  • AUC:ROC 曲线下的面积,表示随机取一对正负样本时,模型将正例排在负例之前的概率;越大越好。

宏平均与微平均

  • Macro:先分别计算各类别指标,再取平均;各类别权重相同,更关注小类别。
  • Micro:先汇总各类别的 TP、FP、FN,再计算指标;样本多的类别影响更大。

代价敏感评估

当不同错误造成的损失不同时,应使用代价敏感指标:为不同类型的误分类设置不同代价,而不是只统计错误次数。

比较检验

测试结果受到数据划分和算法随机性的影响,数值更高不一定代表模型具有实质优势,需要进行统计显著性检验。

  • 两个学习器:交叉验证 $t$ 检验、McNemar 检验。
  • 多个学习器:先用 Friedman 检验判断整体是否存在差异,再用 Nemenyi 检验进行两两比较。
  • 统计显著性:观察到的性能差异不太可能仅由随机因素造成。

偏差-方差分解

对于回归任务,泛化误差可分解为:

$$泛化误差=偏差^2+方差+噪声$$

  • 偏差(Bias):模型平均预测与真实规律之间的差距,反映模型的拟合能力;偏差高通常意味着欠拟合。
  • 方差(Variance):训练集变化引起模型预测结果变化的程度,反映模型的稳定性;方差高通常意味着过拟合。
  • 噪声:数据本身不可避免的随机误差,决定了任何学习算法能达到的误差下界。

偏差-方差权衡

  • 模型过于简单:高偏差、低方差,容易欠拟合。
  • 模型过于复杂:低偏差、高方差,容易过拟合。
  • 目标是在模型复杂度、数据量和正则化强度之间取得平衡,使泛化误差最小。
问题 常用改进方法
高偏差 增加有效特征、提高模型复杂度、训练更充分、减小正则化
高方差 增加训练数据、减少特征、简化模型、增大正则化、进行超参数调优

大模型评估的特点

与经典机器学习相比,大模型通常预训练一次、训练成本高;评估需要多个 benchmark 和多维指标,还要关注数据污染、Prompt 对结果的影响,并结合自动指标与人工评价。

速记

划分数据 → 选择指标 → 调整模型 → 显著性检验 → 分析偏差与方差。

3. 线性模型

线性可分性

设 $X_1$ 和 $X_2$ 是 $n$ 维欧氏空间中的两个点集。若存在 $n+1$ 个实数 $w_1,w_2,\dots,w_n,k$,使得:

  • 对任意 $x\in X_1$,有 $\sum_{i=1}^{n}w_i x_i>k$。
  • 对任意 $x\in X_2$,有 $\sum_{i=1}^{n}w_i x_i<k$。

则称 $X_1$ 和 $X_2$ 是线性可分的。

直观理解:可以用一条直线、一个平面或更高维的超平面把两类样本完全分开。

感知机

**感知机(Perceptron)**是 Frank Rosenblatt 于 1957 年提出的二分类线性分类模型,是神经网络和支持向量机的重要基础。

  • 类型:判别模型。
  • 任务:二分类。
  • 决策边界:线性超平面。

感知机的划分超平面为:

$$ \mathbf{w}^T\mathbf{x}+b=0 $$

其中:

  • $\mathbf{w}$ 是法向量,决定超平面的方向。
  • $b$ 是位移项,决定超平面与原点之间的距离。

分类函数为:

$$ f(\mathbf{x})=\mathrm{sign}(\mathbf{w}^T\mathbf{x}+b) $$

$$ \mathrm{sign}(z)= \begin{cases} +1, & z\ge 0\ -1, & z<0 \end{cases} $$

线性模型的一般形式

线性模型试图通过属性的线性组合进行预测:

$$ f(\mathbf{x})=w_1x_1+w_2x_2+\cdots+w_dx_d+b $$

向量形式:

$$ f(\mathbf{x})=\mathbf{w}^T\mathbf{x}+b $$

特点:

  • 形式简单,是很多复杂模型的基础。
  • 可解释性强,权重 $w_i$ 可以反映对应属性的重要程度。
  • 可用于回归,也可通过联系函数用于分类。

线性回归

线性回归希望预测值尽可能接近真实值:

$$ f(x_i)=wx_i+b\approx y_i $$

常用均方误差作为优化目标:

$$ (w^,b^)=\arg\min_{w,b}\sum_{i=1}^{m}(y_i-wx_i-b)^2 $$

这就是最小二乘法

一元线性回归闭式解

对误差函数分别对 $w$ 和 $b$ 求导并令其为 0,可得:

$$ w=\frac{\sum_{i=1}^{m}y_i(x_i-\bar{x})}{\sum_{i=1}^{m}x_i^2-\frac{1}{m}(\sum_{i=1}^{m}x_i)^2} $$

$$ b=\frac{1}{m}\sum_{i=1}^{m}(y_i-wx_i) $$

其中:

$$ \bar{x}=\frac{1}{m}\sum_{i=1}^{m}x_i $$

多元线性回归

多元线性回归中,参数 $\mathbf{w}$ 和输入 $\mathbf{x}$ 都是 $d$ 维向量:

$$ f(\mathbf{x}_i)=\mathbf{w}^T\mathbf{x}_i+b\approx y_i $$

将 $b$ 吸收入参数向量,令:

$$ \hat{\mathbf{w}}=(\mathbf{w};b),\quad \hat{\mathbf{x}}=(\mathbf{x};1) $$

则模型可写为:

$$ f(\mathbf{x})=\hat{\mathbf{w}}^T\hat{\mathbf{x}} $$

采用矩阵形式,最小二乘解为:

$$ \hat{\mathbf{w}}^*=(\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{y} $$

成立条件:

  • 若 $\mathbf{X}^T\mathbf{X}$ 满秩或正定,则闭式解唯一。
  • 若 $\mathbf{X}^T\mathbf{X}$ 不满秩或非正定,可能存在多个解。
  • 多解时需要依赖归纳偏好,或引入正则化。

线性模型的变化

如果希望线性模型直接逼近真实标记:

$$ y=\mathbf{w}^T\mathbf{x}+b $$

得到普通线性回归。

如果希望线性模型逼近真实标记的某种变换,例如:

$$ \ln y=\mathbf{w}^T\mathbf{x}+b $$

则得到对数线性回归。此时实际是在用:

$$ e^{\mathbf{w}^T\mathbf{x}+b} $$

逼近 $y$,从而实现非线性映射。

广义线性模型

广义线性模型的核心思想:在线性预测值和真实标记之间引入联系函数(link function)

一般形式:

$$ y=g^{-1}(\mathbf{w}^T\mathbf{x}+b) $$

或等价写成:

$$ g(y)=\mathbf{w}^T\mathbf{x}+b $$

其中 $g(\cdot)$ 是单调可微函数。

例子:

  • $g(y)=y$:普通线性回归。
  • $g(y)=\ln y$:对数线性回归。
  • $g(y)=\ln\frac{y}{1-y}$:对数几率回归。

对数几率回归

二分类任务中,期望输出 $y\in{0,1}$,而线性模型输出的是实值:

$$ z=\mathbf{w}^T\mathbf{x}+b $$

需要一个函数把实值 $z$ 映射到 $[0,1]$,作为正类概率。

Logistic 函数

单位阶跃函数不连续,性质不好,因此使用对数几率函数:

$$ y=\frac{1}{1+e^{-z}} $$

它是 Sigmoid 函数的一种,具有单调、连续、可微等性质。

注意:Logistic 和“逻辑”没有关系,不要把 logistic regression 翻译成“逻辑回归”,更准确的译法是对数几率回归对率回归

对数几率

若将 $y$ 看作正类概率:

$$ y=P(y=1\mid \mathbf{x}) $$

则:

$$ \frac{y}{1-y} $$

称为几率(odds),表示样本作为正例的相对可能性。

其对数:

$$ \ln\frac{y}{1-y} $$

称为对数几率(log odds / logit)

对数几率回归建立如下关系:

$$ \ln\frac{P(y=1\mid\mathbf{x})}{P(y=0\mid\mathbf{x})} =\mathbf{w}^T\mathbf{x}+b $$

因此:

$$ P(y=1\mid\mathbf{x})= \frac{e^{\mathbf{w}^T\mathbf{x}+b}}{1+e^{\mathbf{w}^T\mathbf{x}+b}} $$

$$ P(y=0\mid\mathbf{x})= \frac{1}{1+e^{\mathbf{w}^T\mathbf{x}+b}} $$

求解方法

对数几率回归通常使用极大似然法估计参数。

给定数据集 ${(\mathbf{x}i,y_i)}{i=1}^{m}$,最大化对数似然函数等价于最小化负对数似然。该目标函数是高阶可导、连续的凸函数,常用方法包括:

  • 梯度下降法。
  • 牛顿法。
  • 拟牛顿法。

多分类学习

多分类任务常通过拆解法转化为多个二分类任务。

方法 分类器数量 特点
OvO(一对一) $N(N-1)/2$ 每个分类器只使用两个类的样本,训练时间较短;分类器数量多,存储和测试开销大
OvR(一对其余) $N$ 分类器数量少,存储和测试开销小;每个分类器使用全部训练样本,训练时间较长

多数情况下,OvO 和 OvR 的预测性能取决于具体数据分布,整体表现通常差不多。

纠错输出码

纠错输出码(Error Correcting Output Code, ECOC)是一种多分类拆解方法。

核心过程:

  1. 编码:对 $N$ 个类别做 $M$ 次划分,每次将一部分类别作为正类,另一部分类别作为反类,从而得到 $M$ 个二分类任务。
  2. 训练:训练 $M$ 个二分类器。
  3. 预测:测试样本经过 $M$ 个分类器,得到长度为 $M$ 的预测编码。
  4. 解码:将预测编码与各类别编码比较,选择距离最小的类别作为最终结果。

重点结论:

  • ECOC 对分类器错误有一定容忍和修正能力。
  • 编码越长,通常纠错能力越强。
  • 在编码长度相同的情况下,任意两个类别之间的编码距离越远,纠错能力越强。

类别不平衡

类别不平衡(class-imbalance)指不同类别样本比例差异很大,且小类往往更重要。

如果直接按:

$$ \frac{P(y=1\mid\mathbf{x})}{P(y=0\mid\mathbf{x})}>1 $$

判断为正类,可能会偏向多数类。

一种基本思想是进行再缩放(rescaling),根据类别先验比例调整判断阈值。但精确估计类别先验通常较困难。

常用处理方法:

  • 过采样(oversampling):增加少数类样本,例如 SMOTE。
  • 欠采样(undersampling):减少多数类样本,例如 EasyEnsemble。
  • 阈值移动(threshold-moving):调整分类阈值,使模型更关注少数类。

公式推导与细节

1. 线性可分公式为什么是超平面

原定义写成:

$$ \sum_{i=1}^{n}w_i x_i>k $$

把右边移到左边:

$$ \sum_{i=1}^{n}w_i x_i-k>0 $$

令:

$$ \mathbf{w}=(w_1,w_2,\dots,w_n)^T,\quad b=-k $$

则有:

$$ \mathbf{w}^T\mathbf{x}+b>0 $$

同理,另一类样本满足:

$$ \mathbf{w}^T\mathbf{x}+b<0 $$

分界面就是等号成立的位置:

$$ \mathbf{w}^T\mathbf{x}+b=0 $$

这在二维空间是直线,在三维空间是平面,在更高维空间称为超平面。

细节问题:

  • $k$ 和 $b$ 本质上都是截距项,只是符号不同。
  • $\mathbf{w}$ 不能是零向量,否则 $\mathbf{w}^T\mathbf{x}+b$ 与 $\mathbf{x}$ 无关,不能形成有效分界面。
  • 同一个超平面可以乘以任意非零常数表示,例如 $\mathbf{w}^T\mathbf{x}+b=0$ 和 $2\mathbf{w}^T\mathbf{x}+2b=0$ 表示同一个超平面。

2. 感知机分类公式的推导

感知机先计算样本到分界超平面一侧的代数值:

$$ z=\mathbf{w}^T\mathbf{x}+b $$

若 $z>0$,样本位于超平面正侧,预测为正类;若 $z<0$,样本位于负侧,预测为负类。因此可以写成:

$$ f(\mathbf{x})=\mathrm{sign}(z) $$

代入 $z$:

$$ f(\mathbf{x})=\mathrm{sign}(\mathbf{w}^T\mathbf{x}+b) $$

细节问题:

  • $z=0$ 表示样本刚好落在决策边界上,课件中通常把它归为 $+1$,也有教材把它单独处理。
  • $\mathbf{w}$ 是超平面的法向量,因为超平面上任意两点 $\mathbf{x}_1,\mathbf{x}_2$ 都满足:

$$ \mathbf{w}^T\mathbf{x}_1+b=0,\quad \mathbf{w}^T\mathbf{x}_2+b=0 $$

两式相减:

$$ \mathbf{w}^T(\mathbf{x}_1-\mathbf{x}_2)=0 $$

这说明 $\mathbf{w}$ 与超平面内任意方向向量 $\mathbf{x}_1-\mathbf{x}_2$ 垂直。

3. 线性模型向量形式的推导

属性线性组合为:

$$ f(\mathbf{x})=w_1x_1+w_2x_2+\cdots+w_dx_d+b $$

根据向量内积定义:

$$ \mathbf{w}^T\mathbf{x}= \begin{bmatrix} w_1&w_2&\cdots&w_d \end{bmatrix} \begin{bmatrix} x_1\x_2\\vdots\x_d \end{bmatrix} =\sum_{j=1}^{d}w_jx_j $$

所以:

$$ f(\mathbf{x})=\mathbf{w}^T\mathbf{x}+b $$

如果想把 $b$ 也并入向量,可令:

$$ \hat{\mathbf{x}}=(x_1,x_2,\dots,x_d,1)^T,\quad \hat{\mathbf{w}}=(w_1,w_2,\dots,w_d,b)^T $$

则:

$$ f(\mathbf{x})=\hat{\mathbf{w}}^T\hat{\mathbf{x}} $$

细节问题:

  • 多出的常数特征必须是 $1$,否则 $b$ 无法作为独立截距项。
  • 写成 $\mathbf{w}^T\mathbf{x}$ 时,要注意 $\mathbf{w}$ 和 $\mathbf{x}$ 都默认是列向量。

4. 一元线性回归最小二乘推导

目标是最小化平方误差:

$$ E(w,b)=\sum_{i=1}^{m}(y_i-wx_i-b)^2 $$

令残差为:

$$ e_i=y_i-wx_i-b $$

则:

$$ E(w,b)=\sum_{i=1}^{m}e_i^2 $$

先对 $w$ 求偏导:

$$ \frac{\partial E}{\partial w} =\sum_{i=1}^{m}2e_i\frac{\partial e_i}{\partial w} $$

由于:

$$ \frac{\partial e_i}{\partial w}=-x_i $$

所以:

$$ \frac{\partial E}{\partial w} =-2\sum_{i=1}^{m}x_i(y_i-wx_i-b) $$

展开:

$$ \frac{\partial E}{\partial w} =-2\sum_{i=1}^{m}x_iy_i +2w\sum_{i=1}^{m}x_i^2 +2b\sum_{i=1}^{m}x_i $$

再对 $b$ 求偏导:

$$ \frac{\partial E}{\partial b} =\sum_{i=1}^{m}2e_i\frac{\partial e_i}{\partial b} $$

由于:

$$ \frac{\partial e_i}{\partial b}=-1 $$

所以:

$$ \frac{\partial E}{\partial b} =-2\sum_{i=1}^{m}(y_i-wx_i-b) $$

展开:

$$ \frac{\partial E}{\partial b} =-2\sum_{i=1}^{m}y_i +2w\sum_{i=1}^{m}x_i +2mb $$

令两个偏导都为 0。先看 $b$ 的方程:

$$ -2\sum_{i=1}^{m}y_i+2w\sum_{i=1}^{m}x_i+2mb=0 $$

两边除以 2:

$$ -\sum_{i=1}^{m}y_i+w\sum_{i=1}^{m}x_i+mb=0 $$

移项:

$$ mb=\sum_{i=1}^{m}y_i-w\sum_{i=1}^{m}x_i $$

所以:

$$ b=\frac{1}{m}\sum_{i=1}^{m}y_i-w\frac{1}{m}\sum_{i=1}^{m}x_i $$

记:

$$ \bar{x}=\frac{1}{m}\sum_{i=1}^{m}x_i,\quad \bar{y}=\frac{1}{m}\sum_{i=1}^{m}y_i $$

得到:

$$ b=\bar{y}-w\bar{x} $$

再把 $b=\bar{y}-w\bar{x}$ 代入 $\frac{\partial E}{\partial w}=0$:

$$ -\sum_{i=1}^{m}x_iy_i +w\sum_{i=1}^{m}x_i^2 +b\sum_{i=1}^{m}x_i=0 $$

代入 $b$:

$$ -\sum_{i=1}^{m}x_iy_i +w\sum_{i=1}^{m}x_i^2 +(\bar{y}-w\bar{x})\sum_{i=1}^{m}x_i=0 $$

整理:

$$ w\left(\sum_{i=1}^{m}x_i^2-\bar{x}\sum_{i=1}^{m}x_i\right) =\sum_{i=1}^{m}x_iy_i-\bar{y}\sum_{i=1}^{m}x_i $$

由于:

$$ \bar{x}\sum_{i=1}^{m}x_i =\frac{1}{m}\left(\sum_{i=1}^{m}x_i\right)^2 $$

且:

$$ \bar{y}\sum_{i=1}^{m}x_i =\bar{x}\sum_{i=1}^{m}y_i $$

所以:

$$ w= \frac{\sum_{i=1}^{m}x_iy_i-\bar{x}\sum_{i=1}^{m}y_i} {\sum_{i=1}^{m}x_i^2-\frac{1}{m}\left(\sum_{i=1}^{m}x_i\right)^2} $$

分子也可写为:

$$ \sum_{i=1}^{m}y_i(x_i-\bar{x}) $$

因此:

$$ w= \frac{\sum_{i=1}^{m}y_i(x_i-\bar{x})} {\sum_{i=1}^{m}x_i^2-\frac{1}{m}\left(\sum_{i=1}^{m}x_i\right)^2} $$

最后:

$$ b=\bar{y}-w\bar{x} =\frac{1}{m}\sum_{i=1}^{m}(y_i-wx_i) $$

细节问题:

  • 分母 $\sum x_i^2-\frac{1}{m}(\sum x_i)^2$ 等价于 $\sum (x_i-\bar{x})^2$,表示 $x$ 的离散程度。
  • 若所有 $x_i$ 都相同,则分母为 0,斜率 $w$ 不可唯一确定。
  • 求导时最容易漏掉链式法则中的负号:$e_i=y_i-wx_i-b$,所以对 $w$ 求导是 $-x_i$,对 $b$ 求导是 $-1$。
  • 最小二乘不是最小化误差绝对值,而是最小化误差平方和。

5. 多元线性回归闭式解推导

将所有样本写成矩阵形式。令:

$$ \mathbf{X}= \begin{bmatrix} \hat{\mathbf{x}}_1^T\ \hat{\mathbf{x}}_2^T\ \vdots\ \hat{\mathbf{x}}_m^T \end{bmatrix}, \quad \hat{\mathbf{w}}= \begin{bmatrix} w_1\w_2\\vdots\w_d\b \end{bmatrix}, \quad \mathbf{y}= \begin{bmatrix} y_1\y_2\\vdots\y_m \end{bmatrix} $$

其中 $\mathbf{X}$ 的最后一列全为 1,用来吸收截距 $b$。

预测向量为:

$$ \hat{\mathbf{y}}=\mathbf{X}\hat{\mathbf{w}} $$

残差向量为:

$$ \mathbf{e}=\mathbf{y}-\mathbf{X}\hat{\mathbf{w}} $$

平方误差为:

$$ E(\hat{\mathbf{w}}) =|\mathbf{y}-\mathbf{X}\hat{\mathbf{w}}|_2^2 $$

写成矩阵乘法:

$$ E(\hat{\mathbf{w}}) =(\mathbf{y}-\mathbf{X}\hat{\mathbf{w}})^T (\mathbf{y}-\mathbf{X}\hat{\mathbf{w}}) $$

展开:

$$ E(\hat{\mathbf{w}}) =\mathbf{y}^T\mathbf{y} -2\hat{\mathbf{w}}^T\mathbf{X}^T\mathbf{y} +\hat{\mathbf{w}}^T\mathbf{X}^T\mathbf{X}\hat{\mathbf{w}} $$

对 $\hat{\mathbf{w}}$ 求导:

$$ \frac{\partial E}{\partial \hat{\mathbf{w}}} =-2\mathbf{X}^T\mathbf{y} +2\mathbf{X}^T\mathbf{X}\hat{\mathbf{w}} $$

令导数为 0:

$$ -2\mathbf{X}^T\mathbf{y} +2\mathbf{X}^T\mathbf{X}\hat{\mathbf{w}}=0 $$

两边除以 2 并移项:

$$ \mathbf{X}^T\mathbf{X}\hat{\mathbf{w}} =\mathbf{X}^T\mathbf{y} $$

这称为正规方程(normal equation)

如果 $\mathbf{X}^T\mathbf{X}$ 可逆,则两边左乘 $(\mathbf{X}^T\mathbf{X})^{-1}$:

$$ \hat{\mathbf{w}}^* =(\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{y} $$

细节问题:

  • $\mathbf{X}$ 的维度是 $m\times(d+1)$,$\hat{\mathbf{w}}$ 的维度是 $(d+1)\times1$,所以 $\mathbf{X}\hat{\mathbf{w}}$ 才是 $m\times1$。
  • $\mathbf{X}^T\mathbf{X}$ 可逆通常要求 $\mathbf{X}$ 列满秩,即特征之间没有完全线性相关,且样本量足够。
  • 若 $\mathbf{X}^T\mathbf{X}$ 不可逆,不能直接写闭式逆矩阵。可使用伪逆、加入正则化,或借助归纳偏好选择一个解。
  • 实际计算中一般不显式求逆,而是解线性方程组;显式求逆数值稳定性较差。

6. 对数线性回归与广义线性模型推导

普通线性回归假设:

$$ y=\mathbf{w}^T\mathbf{x}+b $$

但如果 $y$ 与输入之间不是线性关系,而是 $\ln y$ 与输入更接近线性,则令:

$$ \ln y=\mathbf{w}^T\mathbf{x}+b $$

两边取指数:

$$ y=e^{\mathbf{w}^T\mathbf{x}+b} $$

因此模型虽然对参数是线性的,但对原始输出 $y$ 是非线性的。

推广这个想法,令:

$$ g(y)=\mathbf{w}^T\mathbf{x}+b $$

如果 $g$ 可逆,则:

$$ y=g^{-1}(\mathbf{w}^T\mathbf{x}+b) $$

细节问题:

  • 对数线性回归要求 $y>0$,否则 $\ln y$ 没有实数意义。
  • 联系函数 $g$ 通常要求单调可微,这样预测值和线性输出之间的关系稳定、可优化。
  • 广义线性模型的“线性”指的是 $\mathbf{w}^T\mathbf{x}+b$ 这部分对参数线性,不代表最终 $y$ 一定是输入的线性函数。

7. Logistic 函数由对数几率推导

令:

$$ p=P(y=1\mid\mathbf{x}) $$

则:

$$ P(y=0\mid\mathbf{x})=1-p $$

几率定义为:

$$ \frac{p}{1-p} $$

对数几率回归假设对数几率与输入线性相关:

$$ \ln\frac{p}{1-p}=\mathbf{w}^T\mathbf{x}+b $$

令:

$$ \eta=\mathbf{w}^T\mathbf{x}+b $$

则:

$$ \ln\frac{p}{1-p}=\eta $$

两边取指数:

$$ \frac{p}{1-p}=e^\eta $$

两边同乘 $1-p$:

$$ p=e^\eta(1-p) $$

展开:

$$ p=e^\eta-e^\eta p $$

把含 $p$ 的项移到左边:

$$ p+e^\eta p=e^\eta $$

提取 $p$:

$$ p(1+e^\eta)=e^\eta $$

所以:

$$ p=\frac{e^\eta}{1+e^\eta} $$

分子分母同除以 $e^\eta$:

$$ p=\frac{1}{1+e^{-\eta}} $$

代回 $\eta=\mathbf{w}^T\mathbf{x}+b$:

$$ P(y=1\mid\mathbf{x}) =\frac{1}{1+e^{-(\mathbf{w}^T\mathbf{x}+b)}} $$

同时:

$$ P(y=0\mid\mathbf{x}) =1-p =\frac{1}{1+e^{\mathbf{w}^T\mathbf{x}+b}} $$

细节问题:

  • Logistic 函数输出范围是 $(0,1)$,适合作为概率近似。
  • 当 $\eta=0$ 时,$p=0.5$,所以默认阈值 0.5 等价于判断 $\mathbf{w}^T\mathbf{x}+b$ 是否大于 0。
  • Logistic 函数导数常用结论为:

$$ \frac{dp}{d\eta}=p(1-p) $$

推导如下:

$$ p=(1+e^{-\eta})^{-1} $$

$$ \frac{dp}{d\eta} =-(1+e^{-\eta})^{-2}(-e^{-\eta}) =\frac{e^{-\eta}}{(1+e^{-\eta})^2} $$

又因为:

$$ p=\frac{1}{1+e^{-\eta}},\quad 1-p=\frac{e^{-\eta}}{1+e^{-\eta}} $$

所以:

$$ \frac{dp}{d\eta}=p(1-p) $$

8. 对数几率回归的极大似然推导

对每个样本,令:

$$ p_i=P(y_i=1\mid\mathbf{x}_i) $$

因为 $y_i\in{0,1}$,可用伯努利分布统一表示:

$$ P(y_i\mid\mathbf{x}_i) =p_i^{y_i}(1-p_i)^{1-y_i} $$

验证:

  • 若 $y_i=1$,则 $P(y_i\mid\mathbf{x}_i)=p_i$。
  • 若 $y_i=0$,则 $P(y_i\mid\mathbf{x}_i)=1-p_i$。

假设样本独立同分布,则整体似然函数为:

$$ L(\mathbf{w},b) =\prod_{i=1}^{m}p_i^{y_i}(1-p_i)^{1-y_i} $$

取对数得到对数似然:

$$ \ell(\mathbf{w},b) =\sum_{i=1}^{m} \left[ y_i\ln p_i+(1-y_i)\ln(1-p_i) \right] $$

令:

$$ \eta_i=\mathbf{w}^T\mathbf{x}_i+b $$

由 Logistic 函数:

$$ p_i=\frac{e^{\eta_i}}{1+e^{\eta_i}}, \quad 1-p_i=\frac{1}{1+e^{\eta_i}} $$

所以:

$$ \ln p_i =\ln\frac{e^{\eta_i}}{1+e^{\eta_i}} =\eta_i-\ln(1+e^{\eta_i}) $$

以及:

$$ \ln(1-p_i) =\ln\frac{1}{1+e^{\eta_i}} =-\ln(1+e^{\eta_i}) $$

代回对数似然:

$$ \ell(\mathbf{w},b) =\sum_{i=1}^{m} \left[ y_i\eta_i-\ln(1+e^{\eta_i}) \right] $$

极大似然是最大化 $\ell$,等价于最小化负对数似然:

$$ J(\mathbf{w},b) =-\ell(\mathbf{w},b) =\sum_{i=1}^{m} \left[ \ln(1+e^{\eta_i})-y_i\eta_i \right] $$

若把 $b$ 吸收到参数中,令:

$$ \boldsymbol{\beta}=(\mathbf{w};b),\quad \hat{\mathbf{x}}_i=(\mathbf{x}_i;1) $$

则:

$$ \eta_i=\boldsymbol{\beta}^T\hat{\mathbf{x}}_i $$

对 $\boldsymbol{\beta}$ 求梯度:

$$ \frac{\partial J}{\partial \boldsymbol{\beta}} =\sum_{i=1}^{m} \left[ \frac{e^{\eta_i}}{1+e^{\eta_i}}-y_i \right]\hat{\mathbf{x}}_i $$

由于:

$$ \frac{e^{\eta_i}}{1+e^{\eta_i}}=p_i $$

所以:

$$ \frac{\partial J}{\partial \boldsymbol{\beta}} =\sum_{i=1}^{m}(p_i-y_i)\hat{\mathbf{x}}_i $$

矩阵形式为:

$$ \nabla J(\boldsymbol{\beta})=\mathbf{X}^T(\mathbf{p}-\mathbf{y}) $$

其 Hessian 矩阵为:

$$ \nabla^2J(\boldsymbol{\beta}) =\mathbf{X}^T\mathbf{R}\mathbf{X} $$

其中:

$$ \mathbf{R}=\mathrm{diag}(p_1(1-p_1),p_2(1-p_2),\dots,p_m(1-p_m)) $$

因为 $p_i(1-p_i)\ge 0$,所以 Hessian 半正定,目标函数是凸函数。

细节问题:

  • 对数几率回归一般没有像线性回归那样的闭式解,需要梯度下降、牛顿法或拟牛顿法。
  • 若数据完全线性可分,极大似然解可能趋向无穷大,参数不收敛,此时常加入正则化。
  • 计算 $\ln(1+e^\eta)$ 时,如果 $\eta$ 很大,直接算 $e^\eta$ 可能溢出,实际实现常用数值稳定写法。
  • 负对数似然也称为交叉熵损失,二分类交叉熵正是从伯努利极大似然推导而来。

9. 类别不平衡阈值调整推导

默认情况下,模型按后验概率大小分类:

$$ P(y=1\mid\mathbf{x})>P(y=0\mid\mathbf{x}) $$

等价于:

$$ \frac{P(y=1\mid\mathbf{x})}{P(y=0\mid\mathbf{x})}>1 $$

如果正负类先验比例差异很大,直接使用阈值 0.5 往往偏向多数类。设训练集中的正负类比例为:

$$ \frac{m^+}{m^-} $$

真实任务中希望采用的正负类先验比例为:

$$ \frac{\pi^+}{\pi^-} $$

则可以对模型输出的 odds 做再缩放:

$$ \frac{P(y=1\mid\mathbf{x})}{P(y=0\mid\mathbf{x})} \cdot \frac{\pi^+/\pi^-}{m^+/m^-}

1 $$

等价于:

$$ \frac{P(y=1\mid\mathbf{x})}{P(y=0\mid\mathbf{x})}

\frac{m^+/m^-}{\pi^+/\pi^-} $$

如果用阈值 $t$ 表示正类概率判断:

$$ P(y=1\mid\mathbf{x})>t $$

则阈值移动本质上是在改变 $t$,而不是改变模型参数本身。

细节问题:

  • 若更关注少数正类,通常会降低正类判定阈值,使更多样本被判为正类。
  • 阈值降低通常会提高 Recall,但可能降低 Precision。
  • 再缩放需要估计真实先验比例 $\pi^+/\pi^-$,而这个量在实际任务中经常不准确。
  • 类别不平衡不应只看 Accuracy,通常要结合 Precision、Recall、F1、P-R 曲线等指标。

考试中可以这样写

线性模型是通过输入属性的线性组合进行预测的模型,基本形式为 $f(\mathbf{x})=\mathbf{w}^T\mathbf{x}+b$。它既可以用于回归,也可以通过联系函数扩展到分类任务。线性模型形式简单、可解释性强,是许多复杂模型的基础。

线性回归以均方误差最小化为目标,通常使用最小二乘法求解。当 $\mathbf{X}^T\mathbf{X}$ 满秩时,多元线性回归具有闭式解 $(\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{y}$;若不满秩,则可能存在多个解,需要引入归纳偏好或正则化。

对数几率回归用于二分类任务,通过 Logistic 函数将线性模型输出映射为 $[0,1]$ 内的概率,并建立对数几率与线性预测值之间的关系。它不需要事先假设数据分布,可输出类别的近似概率,通常用极大似然法和数值优化方法求解。

速记

线性组合 → 最小二乘 → 联系函数 → 对率回归 → 多分类拆解 → 类别不平衡处理。

4. 决策树

本章是重点。核心是掌握决策树如何构造、如何预测、何时停止,以及 ID3、C4.5、CART 三类算法的划分指标。

决策树模型

决策树基于树结构进行决策:

  • 内部结点:对应某个属性上的测试。
  • 分支:对应测试的一种可能结果。
  • 叶结点:对应最终预测结果。

学习过程:

根据训练样本递归选择划分属性,构造从根结点到叶结点的判定测试序列。

预测过程:

测试样本从根结点开始,根据各内部结点的属性测试沿分支向下走,直到到达叶结点,叶结点的类别就是预测结果。

决策树如何构造

决策树采用**分而治之(divide-and-conquer)策略,自根向叶递归构造。

基本过程:

  1. 当前结点拿到一个样本集合 $D$ 和一个候选属性集合 $A$。
  2. 判断是否满足停止条件。
  3. 若不停止,则从 $A$ 中选择最优划分属性 $a^*$。
  4. 按 $a^*$ 的不同取值把 $D$ 划分为若干子集。
  5. 对每个子集递归生成子树。

伪代码理解:

TreeGenerate(D, A):
    生成结点 node
    若 D 中样本全属于同一类别:
        node 标记为该类别,返回
    若 A 为空,或 D 中样本在 A 上取值都相同:
        node 标记为 D 中样本最多的类别,返回
    从 A 中选择最优划分属性 a*
    对 a* 的每个取值 v:
        令 Dv = D 中在 a* 上取值为 v 的样本子集
        若 Dv 为空:
            分支结点标记为 D 中样本最多的类别
        否则:
            递归生成 TreeGenerate(Dv, A - {a*})

细节问题:

  • 若当前结点样本已经纯净,就不需要继续划分。
  • 若属性用完,或所有样本在剩余属性上取值相同,就无法继续有效划分。
  • 若某个分支没有训练样本,应使用父结点中的多数类作为该分支的预测类别。
  • 每次选择划分属性,本质是在让子结点尽可能“纯”。

决策树如何用于判断

对于一个新样本 $\mathbf{x}$:

  1. 从根结点开始。
  2. 查看当前内部结点对应的属性。
  3. 根据 $\mathbf{x}$ 在该属性上的取值选择对应分支。
  4. 重复该过程,直到到达叶结点。
  5. 输出叶结点类别。

例子:

纹理 = 清晰 -> 根蒂 = 蜷缩 -> 判断为好瓜
纹理 = 模糊 -> 判断为坏瓜

停止条件

课件中的三类停止条件:

  1. 当前结点包含的样本全属于同一类别,无需划分。
  2. 当前属性集为空,或所有样本在所有属性上取值相同,无法划分。
  3. 当前结点包含的样本集合为空,不能划分。

对应处理:

情况 处理方式
样本全属于同一类 标记为该类
属性集为空或属性取值相同 标记为当前结点样本最多的类别
样本集合为空 标记为父结点样本最多的类别

三类算法核心指标

算法 核心指标 选择原则
ID3 信息增益 选择信息增益最大的属性
C4.5 增益率 先筛选信息增益高于平均的属性,再选增益率最高的属性
CART 基尼指数 选择划分后基尼指数最小的属性

ID3:信息增益

1. 信息熵

信息熵用于度量样本集合的不确定性,也可以理解为“不纯度”。

设样本集合 $D$ 中共有 $|\mathcal{Y}|$ 个类别,第 $k$ 类样本所占比例为 $p_k$,则:

$$ Ent(D)=-\sum_{k=1}^{|\mathcal{Y}|}p_k\log_2 p_k $$

约定:

$$ 0\log_2 0=0 $$

因为当 $p\to 0^+$ 时:

$$ \lim_{p\to 0^+}p\log_2 p=0 $$

所以这个约定是合理的。

信息熵性质:

  • $Ent(D)$ 越小,样本集合越纯。
  • 若所有样本属于同一类,则 $Ent(D)=0$。
  • 若各类别比例越均匀,不确定性越大,信息熵越大。
  • 最大值为 $\log_2|\mathcal{Y}|$。

二分类时,若正例比例为 $p$,反例比例为 $1-p$,则:

$$ Ent(D)=-p\log_2p-(1-p)\log_2(1-p) $$

细节问题:

  • 课件例子默认使用 $\log_2$,所以熵的单位是 bit。
  • 计算时不要漏掉前面的负号。
  • $p_k$ 是比例,不是样本数;要先用该类样本数除以总样本数。

2. 信息增益公式推导

划分前,样本集合 $D$ 的不确定性为:

$$ Ent(D) $$

若用离散属性 $a$ 划分,属性 $a$ 有 $V$ 个可能取值:

$$ {a^1,a^2,\dots,a^V} $$

对应产生 $V$ 个子集:

$$ D^1,D^2,\dots,D^V $$

其中 $D^v$ 表示在属性 $a$ 上取值为 $a^v$ 的样本集合。

划分后,第 $v$ 个分支的重要性由样本占比决定:

$$ \frac{|D^v|}{|D|} $$

所以划分后的加权平均信息熵为:

$$ \sum_{v=1}^{V}\frac{|D^v|}{|D|}Ent(D^v) $$

信息增益定义为“划分前的不确定性”减去“划分后的不确定性”:

$$ Gain(D,a)=Ent(D)-\sum_{v=1}^{V}\frac{|D^v|}{|D|}Ent(D^v) $$

推导理解:

信息增益 = 原来的混乱程度 - 划分后的平均混乱程度

若某个属性划分后使各子集更纯,则划分后的加权熵更小,信息增益更大。

ID3 的选择策略:

$$ a^*=\arg\max_{a\in A}Gain(D,a) $$

细节问题:

  • 子集熵要乘权重 $\frac{|D^v|}{|D|}$,不能直接求平均。
  • 信息增益越大越好。
  • 信息增益偏好取值数目多的属性。例如“编号”这种属性几乎能把每个样本单独分开,信息增益很大,但泛化能力很差。

3. 信息增益手算步骤

给定数据集 $D$ 和属性 $a$:

  1. 统计 $D$ 中各类别比例,计算 $Ent(D)$。
  2. 按属性 $a$ 的每个取值划分出 $D^1,\dots,D^V$。
  3. 分别统计每个 $D^v$ 中各类别比例,计算 $Ent(D^v)$。
  4. 计算划分后加权熵:

$$ \sum_{v=1}^{V}\frac{|D^v|}{|D|}Ent(D^v) $$

  1. 用划分前熵减去划分后加权熵,得到 $Gain(D,a)$。

西瓜数据集课件例子:

根结点共有 17 个样本,正例 8 个,反例 9 个:

$$ Ent(D)=-\frac{8}{17}\log_2\frac{8}{17} -\frac{9}{17}\log_2\frac{9}{17} =0.998 $$

以“色泽”为例,有三个取值:青绿、乌黑、浅白。

若:

$$ Ent(D^{青绿})=1.000,\quad Ent(D^{乌黑})=0.918,\quad Ent(D^{浅白})=0.722 $$

且三个子集大小分别为 6、6、5,则:

$$ Gain(D,色泽) =0.998-\left( \frac{6}{17}\times1.000 +\frac{6}{17}\times0.918 +\frac{5}{17}\times0.722 \right) =0.109 $$

课件中类似计算所有属性后,“纹理”的信息增益最大,因此根结点选择“纹理”。

C4.5:增益率

1. 为什么需要增益率

信息增益的缺点:

对取值数目较多的属性有偏好。

极端例子是“编号”属性。每个样本编号都不同,用编号划分后每个子集可能只有一个样本,子集纯度很高,信息增益很大,但这个划分没有泛化意义。

C4.5 使用**增益率(gain ratio)来缓解这个问题。

2. 固有值 IV

属性 $a$ 的固有值定义为:

$$ IV(a)=-\sum_{v=1}^{V}\frac{|D^v|}{|D|} \log_2\frac{|D^v|}{|D|} $$

它度量属性 $a$ 的取值本身带来的划分复杂度。

属性取值越多,通常 $IV(a)$ 越大。

3. 增益率公式推导

信息增益为:

$$ Gain(D,a) $$

属性本身的划分复杂度为:

$$ IV(a) $$

为了惩罚取值数目过多的属性,用信息增益除以固有值:

$$ Gain_ratio(D,a)=\frac{Gain(D,a)}{IV(a)} $$

推导理解:

增益率 = 单位划分复杂度带来的信息增益

C4.5 的启发式策略:

  1. 先找出信息增益高于平均水平的候选属性。
  2. 再从这些属性中选择增益率最高的属性。

细节问题:

  • 不能只看增益率,否则会偏好取值数目很少的属性。
  • $IV(a)$ 可能很小,直接用增益率会放大某些不稳定属性,所以 C4.5 先用信息增益做过滤。
  • 增益率越大越好。

CART:基尼指数

1. 基尼值的含义

基尼值用于度量样本集合的不纯度。它反映:

从样本集合 $D$ 中随机抽取两个样本,它们类别标记不一致的概率。

设第 $k$ 类样本比例为 $p_k$。

随机抽到一个样本属于第 $k$ 类的概率是 $p_k$,另一个样本不属于第 $k$ 类的概率是 $1-p_k$,所以类别不一致的概率可写为:

$$ Gini(D)=\sum_{k=1}^{|\mathcal{Y}|}p_k(1-p_k) $$

展开:

$$ Gini(D)=\sum_{k=1}^{|\mathcal{Y}|}(p_k-p_k^2) $$

因为:

$$ \sum_{k=1}^{|\mathcal{Y}|}p_k=1 $$

所以:

$$ Gini(D)=1-\sum_{k=1}^{|\mathcal{Y}|}p_k^2 $$

这就是基尼值公式:

$$ Gini(D)=1-\sum_{k=1}^{|\mathcal{Y}|}p_k^2 $$

二分类时,若正例比例为 $p$,反例比例为 $1-p$:

$$ Gini(D)=1-p^2-(1-p)^2 $$

展开:

$$ Gini(D)=2p(1-p) $$

性质:

  • $Gini(D)$ 越小,数据集越纯。
  • 若所有样本属于同一类,$Gini(D)=0$。
  • 二分类最不纯时 $p=0.5$,此时 $Gini(D)=0.5$。

细节问题:

  • 熵和基尼都衡量不纯度,但基尼不需要计算对数,计算更简单。
  • 基尼指数越小越好,和信息增益“越大越好”方向相反。

2. 属性划分下的基尼指数

若属性 $a$ 有 $V$ 个取值,划分后得到:

$$ D^1,D^2,\dots,D^V $$

则属性 $a$ 划分后的基尼指数为:

$$ Gini_index(D,a) =\sum_{v=1}^{V}\frac{|D^v|}{|D|}Gini(D^v) $$

CART 选择使划分后基尼指数最小的属性:

$$ a^*=\arg\min_{a\in A}Gini_index(D,a) $$

推导理解:

基尼指数 = 划分后各分支不纯度的加权平均

如果某个属性能让各个子集更纯,则各子集 $Gini(D^v)$ 更小,加权平均也更小。

3. CART 的特点

CART 全称是 Classification And Regression Tree。

特点:

  • 既可用于分类,也可用于回归。
  • 通常生成二叉树。
  • 分类树使用基尼指数。
  • 回归树常使用平方误差最小化。

分类树中,如果是离散属性,CART 往往也会把划分转化为二分问题;如果是连续属性,则选择最优切分点。

三个指标对比

指标 衡量什么 优化方向 典型算法 易错点
信息增益 划分前后熵减少多少 越大越好 ID3 偏好取值多的属性
增益率 单位固有值带来的信息增益 越大越好 C4.5 不能只看增益率,需先过滤低增益属性
基尼指数 划分后的不纯度 越小越好 CART 方向和信息增益相反

奥卡姆剃刀与决策树

奥卡姆剃刀思想:

若多个假设都能解释训练数据,应优先选择较简单的假设。

在决策树中体现为:

  • 优先选择较短的树。
  • 优先选择更靠近根结点就能有效划分数据的属性。
  • 避免生成过多只适应训练集细节的分支。

以 ID3 为例:

  • 搜索策略会产生归纳偏置。
  • 信息增益高的属性更容易靠近根结点。
  • 这相当于偏好某些结构更简单、划分更有效的树。

细节问题:

  • 奥卡姆剃刀不是无条件选择最简单模型。
  • 正确理解是:在能较好解释数据的候选假设中,优先选择更简单的。
  • 如果真实规律本身复杂,过度追求简单会导致欠拟合。

为什么要剪枝

决策树如果为了尽可能正确分类训练样本而不断划分,可能产生过多分支。

结果:

  • 训练集表现很好。
  • 测试集表现变差。
  • 模型学习到了训练数据中的噪声和偶然性。

这就是过拟合。

剪枝的目的:

主动去掉一些分支,降低模型复杂度,从而提升泛化能力。

课件强调:

  • 划分选择准则对树大小影响较大,但对泛化性能影响有限。
  • 剪枝方法和剪枝程度对泛化性能影响更显著。
  • 在有噪声的数据中,剪枝可能明显提升泛化性能。

剪枝有什么作用

剪枝的主要作用:

  • 降低过拟合风险。
  • 减少树的规模。
  • 提高模型泛化能力。
  • 提高预测速度。
  • 增强可解释性。

但也有风险:

  • 剪枝过强会导致欠拟合。
  • 剪掉有用分支会降低模型表达能力。

剪枝的基本方式

1. 预剪枝

预剪枝是在决策树生成过程中提前停止某些分支的生长。

基本做法:

  1. 对当前结点,先评估“不划分”的验证集性能。
  2. 再评估“划分后”的验证集性能。
  3. 若划分不能提升验证集性能,则禁止划分,把当前结点作为叶结点。

形式化理解:

$$ Acc_{after}\le Acc_{before} \quad\Rightarrow\quad 停止划分 $$

若:

$$ Acc_{after}>Acc_{before} $$

则允许划分。

优点:

  • 训练时间减少。
  • 测试时间减少。
  • 树较小。
  • 过拟合风险降低。

缺点:

  • 贪心地提前停止,可能剪掉后续有用结构。
  • 欠拟合风险增加。

2. 后剪枝

后剪枝是先生成一棵完整决策树,再自底向上考察是否剪枝。

基本做法:

  1. 先训练出完整树。
  2. 从非叶结点开始,尝试把该子树替换为叶结点。
  3. 叶结点类别设为该子树覆盖训练样本中的多数类。
  4. 比较剪枝前后在验证集上的性能。
  5. 若剪枝后验证集性能不下降或提升,则可以剪枝。

常见判断:

$$ Acc_{pruned}\ge Acc_{original} \quad\Rightarrow\quad 剪枝 $$

若:

$$ Acc_{pruned}<Acc_{original} $$

则保留原子树。

优点:

  • 通常泛化性能优于预剪枝。
  • 欠拟合风险相对较小。

缺点:

  • 需要先生成完整树,训练时间更长。
  • 需要额外验证集或其他评估方法。

3. 预剪枝与后剪枝对比

角度 预剪枝 后剪枝
发生时机 建树过程中 完整建树之后
训练开销 较小 较大
测试开销 较小 较小
过拟合风险 降低 降低
欠拟合风险 增加 基本不变或较小
泛化性能 不一定最优 通常更好

连续值处理(了解)

决策树可以通过离散化处理连续属性。

常见方法:二分法(bi-partition)

设连续属性 $a$ 在样本中的取值排序为:

$$ a^1\le a^2\le \cdots\le a^n $$

候选切分点通常取相邻取值的中点:

$$ t_i=\frac{a^i+a^{i+1}}{2},\quad i=1,2,\dots,n-1 $$

每个切分点 $t$ 把数据划为两部分:

$$ D^-={\mathbf{x}\in D\mid a(\mathbf{x})\le t} $$

$$ D^+={\mathbf{x}\in D\mid a(\mathbf{x})>t} $$

然后对每个候选切分点计算信息增益、增益率或基尼指数,选择最优切分点。

细节问题:

  • $n$ 个不同取值最多产生 $n-1$ 个候选切分点。
  • 连续属性在决策树中通常可以被多次使用。
  • 离散属性在某些算法中使用一次后会从候选属性集中移除。

缺失值处理(了解)

现实数据中可能有属性值缺失。

如果简单丢弃含缺失值样本,会造成数据浪费。

需要解决两个问题:

  1. 如何在属性有缺失时选择划分属性?
  2. 选定划分属性后,若样本在该属性上的值缺失,样本该进入哪个分支?

基本思想:

样本赋权,权重划分。

1. 划分属性选择

对属性 $a$,先只使用在 $a$ 上无缺失的样本来估计该属性的划分效果。

设无缺失样本集合为 $\tilde{D}$,其在全部样本中的权重比例为:

$$ \rho=\frac{\sum_{\mathbf{x}\in \tilde{D}}w_{\mathbf{x}}} {\sum_{\mathbf{x}\in D}w_{\mathbf{x}}} $$

则可将属性 $a$ 在无缺失样本上的信息增益乘以 $\rho$,作为带缺失情况下的有效信息增益。

直观理解:

  • 无缺失样本越多,属性评估越可信。
  • 无缺失样本越少,该属性的有效增益应被打折。

2. 缺失样本如何进入分支

若样本 $\mathbf{x}$ 在划分属性 $a$ 上缺失,不把它硬分到某一个分支,而是按各分支样本比例同时进入多个分支。

若第 $v$ 个分支的无缺失样本权重比例为:

$$ r_v=\frac{\sum_{\mathbf{x}\in D^v}w_{\mathbf{x}}} {\sum_{\mathbf{x}\in \tilde{D}}w_{\mathbf{x}}} $$

则缺失样本以权重 $r_v w_{\mathbf{x}}$ 进入第 $v$ 个分支。

细节问题:

  • 缺失样本不是复制成多个完整样本,而是按权重拆分。
  • 各分支权重之和应保持为原样本权重。
  • 学习开始时,通常所有样本权重为 1。

树到规则的转换(了解)

一棵决策树可以转化为规则集。

转换方式:

  • 每条从根结点到叶结点的路径对应一条规则。
  • 路径上的属性测试组成规则前件。
  • 叶结点类别作为规则后件。

例子:

IF 纹理 = 清晰 AND 密度 <= 0.381
THEN 坏瓜
IF 纹理 = 稍糊 AND 触感 = 软粘
THEN 好瓜

好处:

  • 提高可理解性。
  • 可进一步做规则合并、规则简化和规则泛化。
  • 有时规则集的泛化能力优于原决策树。

延伸内容(基本不考)

了解即可:

  • 单变量决策树产生轴平行分类边界。
  • 多变量决策树可以在结点处使用多个属性组合,例如斜决策树。
  • 随机森林、XGBoost 等是基于决策树的重要集成方法。
  • 决策树在表格数据上仍然非常强。
  • 神经支持决策树、LLM 辅助构树等属于延伸方向。

公式推导与细节

1. 信息熵为什么能表示不纯度

信息量常定义为:

$$ I(x)=-\log_2 P(x) $$

事件概率越小,发生后带来的信息量越大。

对于样本集合 $D$,类别 $k$ 出现概率为 $p_k$,则类别标记的平均信息量为:

$$ \sum_{k=1}^{|\mathcal{Y}|}p_kI(k) $$

代入 $I(k)=-\log_2p_k$:

$$ Ent(D)=\sum_{k=1}^{|\mathcal{Y}|}p_k(-\log_2p_k) $$

即:

$$ Ent(D)=-\sum_{k=1}^{|\mathcal{Y}|}p_k\log_2p_k $$

如果样本全属于一类,例如 $p_1=1$,其他类别概率为 0:

$$ Ent(D)=-1\log_2 1=0 $$

说明没有不确定性。

如果二分类中 $p_1=p_2=0.5$:

$$ Ent(D)=-0.5\log_2 0.5-0.5\log_2 0.5=1 $$

说明不确定性最大。

2. 信息增益为什么是熵的减少量

划分前,不知道样本类别时的不确定性是:

$$ Ent(D) $$

用属性 $a$ 划分后,样本会落入某个分支 $D^v$。落入第 $v$ 个分支的概率为:

$$ P(D^v)=\frac{|D^v|}{|D|} $$

在该分支内部,类别不确定性为:

$$ Ent(D^v) $$

所以划分后的条件熵为:

$$ Ent(D\mid a) =\sum_{v=1}^{V}P(D^v)Ent(D^v) $$

代入 $P(D^v)$:

$$ Ent(D\mid a) =\sum_{v=1}^{V}\frac{|D^v|}{|D|}Ent(D^v) $$

信息增益就是:

$$ Gain(D,a)=Ent(D)-Ent(D\mid a) $$

所以:

$$ Gain(D,a) =Ent(D)-\sum_{v=1}^{V}\frac{|D^v|}{|D|}Ent(D^v) $$

细节问题:

  • $Ent(D\mid a)$ 是划分后的条件熵,不是某一个子集的熵。
  • 若划分没有带来任何纯度提升,则 $Ent(D\mid a)\approx Ent(D)$,信息增益接近 0。
  • 若划分后每个子集都纯净,则 $Ent(D^v)=0$,信息增益达到最大。

3. 增益率为什么能惩罚多取值属性

如果属性 $a$ 的取值很多,划分后产生很多分支,信息增益可能虚高。

属性 $a$ 本身的划分复杂度为:

$$ IV(a)=-\sum_{v=1}^{V}\frac{|D^v|}{|D|} \log_2\frac{|D^v|}{|D|} $$

这和熵形式相同,只不过它度量的是“样本被分到哪个分支”的不确定性。

当属性取值很多且分支较均匀时,$IV(a)$ 较大。

因此:

$$ Gain_ratio(D,a)=\frac{Gain(D,a)}{IV(a)} $$

会降低多取值属性的得分。

细节问题:

  • 若某属性只有一个取值,则 $IV(a)=0$,它本身也无法有效划分。
  • 若某属性取值极多,$Gain(D,a)$ 可能大,但 $IV(a)$ 也大。
  • C4.5 不直接全局最大化增益率,而是先排除信息增益偏低的属性。

4. 基尼公式的概率推导

随机抽取两个样本,类别不一致的概率可以写为:

$$ \sum_{k=1}^{|\mathcal{Y}|}P(\text{第一个样本属于 }k) P(\text{第二个样本不属于 }k) $$

第一个样本属于第 $k$ 类的概率为:

$$ p_k $$

第二个样本不属于第 $k$ 类的概率为:

$$ 1-p_k $$

因此:

$$ Gini(D)=\sum_{k=1}^{|\mathcal{Y}|}p_k(1-p_k) $$

展开:

$$ Gini(D)=\sum_{k=1}^{|\mathcal{Y}|}p_k-\sum_{k=1}^{|\mathcal{Y}|}p_k^2 $$

由于所有类别概率之和为 1:

$$ \sum_{k=1}^{|\mathcal{Y}|}p_k=1 $$

所以:

$$ Gini(D)=1-\sum_{k=1}^{|\mathcal{Y}|}p_k^2 $$

属性 $a$ 划分后的基尼指数是各分支基尼值的加权平均:

$$ Gini_index(D,a)= \sum_{v=1}^{V}\frac{|D^v|}{|D|}Gini(D^v) $$

选择:

$$ a^*=\arg\min_{a\in A}Gini_index(D,a) $$

细节问题:

  • 基尼值越小越纯。
  • 计算 CART 时不要误选最大值。
  • 若某个分支样本很多,它对最终 $Gini_index$ 的影响更大。

考试中可以这样写

决策树是一种基于树结构的监督学习模型。内部结点表示属性测试,分支表示测试结果,叶结点表示预测类别。学习时从根结点开始递归选择最优划分属性,预测时样本沿属性测试路径下行直到叶结点。

ID3 使用信息增益选择划分属性。信息熵度量样本集合不纯度,信息增益等于划分前熵减去划分后加权熵,选择信息增益最大的属性。但信息增益偏好取值数目多的属性。

C4.5 使用增益率缓解 ID3 的多取值偏好。增益率等于信息增益除以属性固有值。实际选择时通常先筛选信息增益高于平均水平的属性,再从中选择增益率最高的属性。

CART 使用基尼指数进行划分。基尼值 $Gini(D)=1-\sum_kp_k^2$ 表示随机抽取两个样本类别不一致的概率,基尼指数是划分后各子集基尼值的加权平均。CART 选择基尼指数最小的划分。

剪枝是决策树防止过拟合的主要手段。预剪枝在建树过程中提前停止划分,训练和测试开销较小,但欠拟合风险较高;后剪枝先生成完整树,再根据验证集性能自底向上剪去无用子树,通常泛化性能更好。

速记

建树递归选属性 → ID3 看信息增益最大 → C4.5 看增益率最高 → CART 看基尼指数最小 → 过拟合靠剪枝。

5. 支持向量机 SVM

本章是重点。老师强调:距离公式和最大间隔思想是 SVM 推导的基础。

从感知机到支持向量机

感知机和 SVM 都是线性分类模型,基本分类边界都是超平面:

$$ f(\mathbf{x})=\mathbf{w}^T\mathbf{x}+b $$

预测规则:

$$ \hat{y}=\mathrm{sign}(\mathbf{w}^T\mathbf{x}+b) $$

其中 $y\in{+1,-1}$。

感知机只要求把训练样本分对:

$$ y_i(\mathbf{w}^T\mathbf{x}_i+b)>0 $$

如果数据线性可分,满足条件的超平面通常有无穷多个。

SVM 进一步追问:

在所有能正确分类训练样本的超平面中,哪一个最好?

SVM 的答案是:

选择距离两类样本都尽可能远的那个超平面,即最大化最小间隔。

逻辑链条:

感知机:只要分对
SVM:不仅要分对,还要离分类边界尽可能远
最大间隔:让最靠近超平面的样本也尽量远
支持向量:决定最小间隔的那些样本

SVM 的核心思想

一个样本到分类超平面的垂直距离称为该样本的间隔(margin)

SVM 要最大化所有训练样本中最小的间隔:

$$ \max_{\mathbf{w},b}\min_i \frac{y_i(\mathbf{w}^T\mathbf{x}_i+b)}{|\mathbf{w}|} $$

其中:

  • $\mathbf{w}^T\mathbf{x}+b=0$ 是分类超平面。
  • $|\mathbf{w}|$ 是法向量长度。
  • $y_i(\mathbf{w}^T\mathbf{x}_i+b)>0$ 表示分类正确。
  • 具有最小间隔的样本称为支持向量(support vectors)

直观理解:

  • 感知机只看分类是否正确。
  • SVM 还看分类的确信度。
  • 离超平面越远,分类越稳定。
  • 最大间隔通常意味着更好的鲁棒性和泛化能力。

点到分类超平面的距离

设分类超平面为:

$$ \mathbf{w}^T\mathbf{x}+b=0 $$

点 $\mathbf{x}$ 到该超平面的距离为:

$$ \frac{|\mathbf{w}^T\mathbf{x}+b|}{|\mathbf{w}|} $$

若样本标签 $y_i\in{+1,-1}$,并且分类正确,则:

$$ y_i(\mathbf{w}^T\mathbf{x}_i+b)>0 $$

于是带标签的几何间隔可写为:

$$ \gamma_i= \frac{y_i(\mathbf{w}^T\mathbf{x}_i+b)}{|\mathbf{w}|} $$

距离公式详细推导

设点 $\mathbf{x}$ 在超平面上的投影点为 $\mathbf{x}_{\perp}$。

因为 $\mathbf{w}$ 是超平面的法向量,所以从 $\mathbf{x}_{\perp}$ 到 $\mathbf{x}$ 的距离向量方向与 $\mathbf{w}$ 平行。

单位法向量为:

$$ \frac{\mathbf{w}}{|\mathbf{w}|} $$

因此可以写成:

$$ \mathbf{x} =\mathbf{x}_{\perp}+r\frac{\mathbf{w}}{|\mathbf{w}|} $$

其中 $r$ 是带符号距离:可能为正、负或 0。

两边左乘 $\mathbf{w}^T$ 并加上 $b$:

$$ \mathbf{w}^T\mathbf{x}+b =\mathbf{w}^T\mathbf{x}_{\perp}+b +r\mathbf{w}^T\frac{\mathbf{w}}{|\mathbf{w}|} $$

因为 $\mathbf{x}_{\perp}$ 在超平面上,所以:

$$ \mathbf{w}^T\mathbf{x}_{\perp}+b=0 $$

又因为:

$$ \mathbf{w}^T\frac{\mathbf{w}}{|\mathbf{w}|} =\frac{\mathbf{w}^T\mathbf{w}}{|\mathbf{w}|} =\frac{|\mathbf{w}|^2}{|\mathbf{w}|} =|\mathbf{w}| $$

所以:

$$ \mathbf{w}^T\mathbf{x}+b=r|\mathbf{w}| $$

得到带符号距离:

$$ r=\frac{\mathbf{w}^T\mathbf{x}+b}{|\mathbf{w}|} $$

真正的几何距离取绝对值:

$$ distance(\mathbf{x},H) =|r| =\frac{|\mathbf{w}^T\mathbf{x}+b|}{|\mathbf{w}|} $$

对于带标签样本,若分类正确,则 $y_i(\mathbf{w}^T\mathbf{x}_i+b)>0$,所以可以去掉绝对值:

$$ \gamma_i= \frac{y_i(\mathbf{w}^T\mathbf{x}_i+b)}{|\mathbf{w}|} $$

细节问题:

  • $\mathbf{w}$ 是法向量,不是超平面上的方向向量。
  • 距离公式分母一定是 $|\mathbf{w}|$,不能漏。
  • $\mathbf{w}^T\mathbf{x}+b$ 本身不是距离,它会随 $\mathbf{w},b$ 等比例缩放。
  • 几何距离不随 $(\mathbf{w},b)$ 同比例缩放而改变。

函数间隔与几何间隔

定义函数间隔:

$$ \hat{\gamma}_i=y_i(\mathbf{w}^T\mathbf{x}_i+b) $$

定义几何间隔:

$$ \gamma_i=\frac{\hat{\gamma}_i}{|\mathbf{w}|} =\frac{y_i(\mathbf{w}^T\mathbf{x}_i+b)}{|\mathbf{w}|} $$

如果把参数同时放大 $c>0$:

$$ (\mathbf{w},b)\to(c\mathbf{w},cb) $$

预测结果不变:

$$ \mathrm{sign}(c\mathbf{w}^T\mathbf{x}+cb) =\mathrm{sign}(c(\mathbf{w}^T\mathbf{x}+b)) =\mathrm{sign}(\mathbf{w}^T\mathbf{x}+b) $$

函数间隔会变成原来的 $c$ 倍:

$$ y_i(c\mathbf{w}^T\mathbf{x}_i+cb) =c y_i(\mathbf{w}^T\mathbf{x}_i+b) $$

几何间隔不变:

$$ \frac{c y_i(\mathbf{w}^T\mathbf{x}_i+b)} {|c\mathbf{w}|} =\frac{c y_i(\mathbf{w}^T\mathbf{x}_i+b)} {c|\mathbf{w}|} =\frac{y_i(\mathbf{w}^T\mathbf{x}_i+b)} {|\mathbf{w}|} $$

细节问题:

  • 函数间隔依赖参数尺度,不适合直接作为最终优化目标。
  • 几何间隔不受参数缩放影响,才是真正的距离。
  • SVM 推导中会人为固定最小函数间隔为 1,从而消除尺度不确定性。

由距离公式构造 SVM 目标函数

SVM 原始目标是最大化最小几何间隔:

$$ \max_{\mathbf{w},b}\min_i \frac{y_i(\mathbf{w}^T\mathbf{x}_i+b)}{|\mathbf{w}|} $$

由于 $(\mathbf{w},b)$ 可以任意等比例缩放,而几何间隔不变,因此可以规定最小函数间隔为 1:

$$ \min_i y_i(\mathbf{w}^T\mathbf{x}_i+b)=1 $$

这等价于约束所有样本满足:

$$ y_i(\mathbf{w}^T\mathbf{x}_i+b)\ge 1 $$

在这个约束下,最小几何间隔为:

$$ \gamma=\frac{1}{|\mathbf{w}|} $$

最大化间隔:

$$ \max_{\mathbf{w},b}\frac{1}{|\mathbf{w}|} $$

等价于最小化 $|\mathbf{w}|$:

$$ \min_{\mathbf{w},b}|\mathbf{w}| $$

为了便于求导和优化,通常写成最小化:

$$ \min_{\mathbf{w},b}\frac{1}{2}|\mathbf{w}|^2 $$

因此线性可分 SVM 的标准优化问题为:

$$ \min_{\mathbf{w},b}\frac{1}{2}|\mathbf{w}|^2 $$

约束为:

$$ y_i(\mathbf{w}^T\mathbf{x}_i+b)\ge 1,\quad i=1,2,\dots,m $$

细节问题:

  • 最大化 $\frac{1}{|\mathbf{w}|}$ 等价于最小化 $|\mathbf{w}|$。
  • 最小化 $|\mathbf{w}|$ 和最小化 $\frac{1}{2}|\mathbf{w}|^2$ 的最优解相同。
  • $\frac{1}{2}$ 是为了求导后抵消平方带来的 2。
  • 约束中的 1 不是随便来的,而是通过缩放参数固定最小函数间隔得到的。

线性可分 SVM / 硬间隔 SVM

当训练数据可以被某个线性超平面完全分开时,使用线性可分 SVM,也称硬间隔 SVM(Hard Margin SVM)

优化问题:

$$ \min_{\mathbf{w},b}\frac{1}{2}|\mathbf{w}|^2 $$

约束:

$$ y_i(\mathbf{w}^T\mathbf{x}_i+b)\ge 1,\quad i=1,2,\dots,m $$

分类决策函数:

$$ f(\mathbf{x})=\mathrm{sign}(\mathbf{w}^T\mathbf{x}+b) $$

支持向量满足:

$$ y_i(\mathbf{w}^T\mathbf{x}_i+b)=1 $$

它们恰好落在两条间隔边界上:

$$ \mathbf{w}^T\mathbf{x}+b=1 $$

或:

$$ \mathbf{w}^T\mathbf{x}+b=-1 $$

两条间隔边界之间的距离为:

$$ \frac{2}{|\mathbf{w}|} $$

推导:

正类支持向量到分类超平面的距离为:

$$ \frac{|1|}{|\mathbf{w}|}=\frac{1}{|\mathbf{w}|} $$

负类支持向量到分类超平面的距离也为:

$$ \frac{|-1|}{|\mathbf{w}|}=\frac{1}{|\mathbf{w}|} $$

所以两侧总间隔宽度为:

$$ \frac{1}{|\mathbf{w}|}+\frac{1}{|\mathbf{w}|} =\frac{2}{|\mathbf{w}|} $$

细节问题:

  • 硬间隔要求所有样本都满足约束,不允许违反。
  • 对噪声和异常点非常敏感。
  • 只适合线性可分且数据较干净的情况。

拉格朗日乘子法(不要求很深)

硬间隔 SVM 是带约束优化问题:

$$ \min_{\mathbf{w},b}\frac{1}{2}|\mathbf{w}|^2 $$

约束:

$$ y_i(\mathbf{w}^T\mathbf{x}_i+b)-1\ge 0 $$

构造拉格朗日函数:

$$ L(\mathbf{w},b,\boldsymbol{\alpha}) =\frac{1}{2}|\mathbf{w}|^2 -\sum_{i=1}^{m}\alpha_i \left[y_i(\mathbf{w}^T\mathbf{x}_i+b)-1\right] $$

其中:

$$ \alpha_i\ge 0 $$

对 $\mathbf{w}$ 求偏导并令为 0:

$$ \frac{\partial L}{\partial \mathbf{w}} =\mathbf{w}-\sum_{i=1}^{m}\alpha_i y_i\mathbf{x}_i=0 $$

得到:

$$ \mathbf{w}=\sum_{i=1}^{m}\alpha_i y_i\mathbf{x}_i $$

对 $b$ 求偏导并令为 0:

$$ \frac{\partial L}{\partial b} =-\sum_{i=1}^{m}\alpha_i y_i=0 $$

得到:

$$ \sum_{i=1}^{m}\alpha_i y_i=0 $$

KKT 互补松弛条件:

$$ \alpha_i\left[y_i(\mathbf{w}^T\mathbf{x}_i+b)-1\right]=0 $$

含义:

  • 若 $\alpha_i=0$,该样本通常不是支持向量,对最终超平面没有直接贡献。
  • 若 $\alpha_i>0$,则必须有 $y_i(\mathbf{w}^T\mathbf{x}_i+b)=1$,该样本是支持向量。

细节问题:

  • SVM 的对偶问题中样本以内积 $\mathbf{x}_i^T\mathbf{x}_j$ 的形式出现。
  • 这为后面的核技巧提供了入口。
  • 本课程对拉格朗日乘子法不要求很深,重点理解 $\alpha_i>0$ 的样本才是支持向量。

最优 $b$ 与支持向量

由:

$$ \mathbf{w}^=\sum_{i=1}^{m}\alpha_i^ y_i\mathbf{x}_i $$

对任意支持向量 $\mathbf{x}_s$,有:

$$ y_s((\mathbf{w}^)^T\mathbf{x}_s+b^)=1 $$

由于 $y_s\in{+1,-1}$,所以 $y_s^{-1}=y_s$。

两边乘以 $y_s$:

$$ (\mathbf{w}^)^T\mathbf{x}_s+b^=y_s $$

因此:

$$ b^=y_s-(\mathbf{w}^)^T\mathbf{x}_s $$

代入 $\mathbf{w}^*$:

$$ b^* =y_s-\sum_{i=1}^{m}\alpha_i^*y_i\mathbf{x}_i^T\mathbf{x}_s $$

实际中常对所有支持向量求平均:

$$ b^*=\frac{1}{|S|} \sum_{s\in S} \left[ y_s-\sum_{i=1}^{m}\alpha_i^*y_i\mathbf{x}_i^T\mathbf{x}_s \right] $$

细节问题:

  • 只有 $\alpha_s>0$ 的样本才适合用来计算 $b$。
  • 取平均可以减小数值误差。

软间隔 SVM

现实数据往往不是完全线性可分的,或者存在噪声和异常点。

硬间隔约束:

$$ y_i(\mathbf{w}^T\mathbf{x}_i+b)\ge 1 $$

可能无法满足,或者会被异常点严重影响。

软间隔 SVM 允许少量样本违反间隔约束,引入松弛变量 $\xi_i$:

$$ y_i(\mathbf{w}^T\mathbf{x}_i+b)\ge 1-\xi_i $$

并要求:

$$ \xi_i\ge 0 $$

软间隔优化目标:

$$ \min_{\mathbf{w},b,\boldsymbol{\xi}} \frac{1}{2}|\mathbf{w}|^2+C\sum_{i=1}^{m}\xi_i $$

约束:

$$ y_i(\mathbf{w}^T\mathbf{x}_i+b)\ge 1-\xi_i,\quad \xi_i\ge 0 $$

其中 $C>0$ 是正则化参数。

含义:

  • $\frac{1}{2}|\mathbf{w}|^2$:希望间隔尽可能大。
  • $\sum_i\xi_i$:惩罚违反间隔的样本。
  • $C$:控制“间隔大小”和“训练错误惩罚”之间的权衡。

松弛变量的含义

对单个样本:

$$ y_i f(\mathbf{x}_i)=y_i(\mathbf{w}^T\mathbf{x}_i+b) $$

不同 $\xi_i$ 的含义:

情况 含义
$\xi_i=0$ 样本在间隔外侧或刚好在间隔边界上,满足硬间隔要求
$0<\xi_i<1$ 样本分类正确,但落在间隔内部
$\xi_i=1$ 样本落在分类超平面上
$\xi_i>1$ 样本被错分

从约束看:

$$ y_i f(\mathbf{x}_i)\ge 1-\xi_i $$

如果 $\xi_i>1$,则右侧小于 0,说明允许 $y_i f(\mathbf{x}_i)<0$,即允许错分。

细节问题:

  • 松弛变量不是让模型随便犯错,因为目标函数会惩罚 $\sum_i\xi_i$。
  • $C$ 越大,对错误惩罚越重,模型越倾向于少犯训练错误,但可能过拟合。
  • $C$ 越小,对错误容忍度越高,间隔可能更大,但可能欠拟合。

软间隔与合页损失

软间隔 SVM 也可理解为最小化正则化的合页损失。

对单个样本,合页损失为:

$$ \ell_i=\max(0,1-y_i f(\mathbf{x}_i)) $$

当:

$$ y_i f(\mathbf{x}_i)\ge 1 $$

损失为 0。

当:

$$ y_i f(\mathbf{x}_i)<1 $$

损失为:

$$ 1-y_i f(\mathbf{x}_i) $$

因此软间隔目标可以写成:

$$ \min_{\mathbf{w},b} \frac{1}{2}|\mathbf{w}|^2 +C\sum_{i=1}^{m}\max(0,1-y_i(\mathbf{w}^T\mathbf{x}_i+b)) $$

细节问题:

  • 合页损失不仅惩罚错分样本,也惩罚虽然分对但距离边界太近的样本。
  • 这体现了 SVM 的大间隔思想。

核函数思想

如果数据在原始空间中线性不可分,可以把样本映射到更高维特征空间:

$$ \phi:\mathcal{X}\to\mathcal{H} $$

在特征空间中使用线性 SVM:

$$ f(\mathbf{x})=\mathbf{w}^T\phi(\mathbf{x})+b $$

核心思想:

原始空间非线性可分,映射到高维特征空间后可能线性可分。

例如二维数据可能无法用直线分开,但映射到三维或更高维后可以用平面分开。

核技巧如何解决非线性分类

SVM 的对偶形式和预测函数只依赖样本之间的内积。

线性情况下:

$$ \mathbf{x}_i^T\mathbf{x}_j $$

如果映射到高维空间,本来需要计算:

$$ \phi(\mathbf{x}_i)^T\phi(\mathbf{x}_j) $$

核函数直接定义为:

$$ K(\mathbf{x}_i,\mathbf{x}_j) =\phi(\mathbf{x}_i)^T\phi(\mathbf{x}_j) $$

这样不需要显式计算 $\phi(\mathbf{x})$,只需要计算核函数 $K$。

核 SVM 的分类函数为:

$$ f(\mathbf{x}) =\mathrm{sign}\left( \sum_{i=1}^{m}\alpha_i y_i K(\mathbf{x}_i,\mathbf{x})+b \right) $$

因为只有支持向量的 $\alpha_i>0$,实际预测时可写为:

$$ f(\mathbf{x}) =\mathrm{sign}\left( \sum_{i\in S}\alpha_i y_i K(\mathbf{x}_i,\mathbf{x})+b \right) $$

核技巧解决非线性分类的逻辑:

原空间线性不可分
-> 通过 phi 映射到高维特征空间
-> 在高维空间用线性超平面分类
-> 通过核函数计算高维内积
-> 不显式构造高维特征

细节问题:

  • 核函数表示的是高维特征空间中的内积。
  • 不是任意相似度函数都能作为核函数。
  • 合法核函数需要对应某个特征映射,常用判断条件是核矩阵半正定。
  • 核技巧的关键是“只替换内积”,不是重新发明一个分类器。

Mercer 条件(了解)

函数 $K(\mathbf{x},\mathbf{z})$ 若能作为核函数,需要存在特征映射 $\phi$,使得:

$$ K(\mathbf{x},\mathbf{z})=\phi(\mathbf{x})^T\phi(\mathbf{z}) $$

等价理解:

对任意样本集合,核矩阵 $K$ 总是半正定。

核矩阵定义为:

$$ K_{ij}=K(\mathbf{x}_i,\mathbf{x}_j) $$

半正定表示对任意向量 $\mathbf{c}$:

$$ \mathbf{c}^T K \mathbf{c}\ge 0 $$

本课程只需了解:合法核函数必须满足一定条件,不能随便定义。

常见核函数(了解)

核函数 公式 特点
线性核 $K(\mathbf{x},\mathbf{z})=\mathbf{x}^T\mathbf{z}$ 不做非线性映射,适合线性可分或近似线性问题
多项式核 $K(\mathbf{x},\mathbf{z})=(\gamma\mathbf{x}^T\mathbf{z}+c)^d$ 可表达多项式特征组合
RBF / 高斯核 $K(\mathbf{x},\mathbf{z})=\exp(-\gamma|\mathbf{x}-\mathbf{z}|^2)$ 常用,能产生非线性边界

超参数:

  • $C$:软间隔惩罚强度。
  • $\gamma$:RBF 核或多项式核中的尺度参数。
  • $d$:多项式核次数。
  • $c$:多项式核常数项。

这些参数通常不能由 SVM 自动学习,需要用验证集或交叉验证选择。

SMO 算法(了解)

SMO 全称是 Sequential Minimal Optimization,序列最小最优化算法。

作用:

高效求解 SVM 对偶问题。

基本思想:

  • SVM 对偶问题是凸二次规划问题。
  • SMO 每次选择两个变量 $\alpha_i,\alpha_j$。
  • 固定其他变量,只优化这两个变量。
  • 该二变量子问题可以解析求解。
  • 不断选择最违反 KKT 条件的变量对并更新,直到基本满足 KKT 条件。

了解即可:

  • SMO 是工程上常用的 SVM 求解方法。
  • 不要求手推完整算法。
  • 重点知道它利用 KKT 条件和二变量子问题来高效优化。

多分类 SVM

SVM 原始形式主要用于二分类,多分类通常转化为多个二分类问题。

1. One-vs-One

若有 $C$ 个类别,训练:

$$ \frac{C(C-1)}{2} $$

个二分类器。

每个分类器只区分两个类别。

预测时:

  • 每个分类器投票。
  • 最终选择得票最多的类别。

特点:

  • 分类器数量多。
  • 每个分类器训练数据较少。
  • 常用于多分类 SVM。

2. One-vs-Rest

若有 $C$ 个类别,训练 $C$ 个二分类器。

第 $i$ 个分类器:

  • 类 $i$ 作为正类。
  • 其他所有类别合并为负类。

预测时:

$$ \hat{y}=\arg\max_i f_i(\mathbf{x}) $$

即选择实值输出信心最高的类别。

特点:

  • 分类器数量少。
  • 每个分类器要使用全部训练数据。
  • 类别不平衡问题可能更明显。

必须掌握的推导主线

1. 从距离到最大间隔

点到超平面距离:

$$ d_i=\frac{| \mathbf{w}^T\mathbf{x}_i+b |}{|\mathbf{w}|} $$

带标签后:

$$ \gamma_i=\frac{y_i(\mathbf{w}^T\mathbf{x}_i+b)}{|\mathbf{w}|} $$

SVM 最大化最小间隔:

$$ \max_{\mathbf{w},b}\min_i \gamma_i $$

代入几何间隔:

$$ \max_{\mathbf{w},b} \min_i \frac{y_i(\mathbf{w}^T\mathbf{x}_i+b)}{|\mathbf{w}|} $$

通过缩放固定:

$$ \min_i y_i(\mathbf{w}^T\mathbf{x}_i+b)=1 $$

于是:

$$ \max_{\mathbf{w},b}\frac{1}{|\mathbf{w}|} $$

等价于:

$$ \min_{\mathbf{w},b}\frac{1}{2}|\mathbf{w}|^2 $$

约束:

$$ y_i(\mathbf{w}^T\mathbf{x}_i+b)\ge 1 $$

这就是硬间隔 SVM。

2. 从硬间隔到软间隔

硬间隔约束:

$$ y_i(\mathbf{w}^T\mathbf{x}_i+b)\ge 1 $$

若数据有噪声或不可线性分,则放宽为:

$$ y_i(\mathbf{w}^T\mathbf{x}_i+b)\ge 1-\xi_i $$

其中:

$$ \xi_i\ge 0 $$

为了防止无限放宽,加入惩罚:

$$ C\sum_{i=1}^{m}\xi_i $$

得到软间隔目标:

$$ \min_{\mathbf{w},b,\boldsymbol{\xi}} \frac{1}{2}|\mathbf{w}|^2+C\sum_{i=1}^{m}\xi_i $$

约束:

$$ y_i(\mathbf{w}^T\mathbf{x}_i+b)\ge 1-\xi_i,\quad \xi_i\ge 0 $$

3. 从线性到核 SVM

线性 SVM 的对偶和预测只依赖内积:

$$ \mathbf{x}_i^T\mathbf{x}_j $$

非线性映射后应使用:

$$ \phi(\mathbf{x}_i)^T\phi(\mathbf{x}_j) $$

用核函数替代:

$$ K(\mathbf{x}_i,\mathbf{x}_j) =\phi(\mathbf{x}_i)^T\phi(\mathbf{x}_j) $$

预测函数变为:

$$ f(\mathbf{x}) =\mathrm{sign}\left( \sum_{i\in S}\alpha_i y_iK(\mathbf{x}_i,\mathbf{x})+b \right) $$

这就是核技巧。

易错点

  • 感知机和 SVM 都是线性分类器起步,但感知机只追求分对,SVM 追求最大间隔。
  • $\mathbf{w}^T\mathbf{x}+b$ 不是距离,距离要除以 $|\mathbf{w}|$。
  • 函数间隔会随参数缩放变化,几何间隔不会。
  • 硬间隔不允许任何样本违反间隔约束。
  • 软间隔允许违反,但通过松弛变量和 $C$ 惩罚。
  • $C$ 越大,不代表一定越好;它会降低训练错误容忍度,可能过拟合。
  • 核函数不是直接把样本“画到高维”,而是隐式计算高维内积。
  • 核 SVM 的非线性边界来自高维空间中的线性超平面映射回原空间。
  • SMO 了解思想即可,不需要完整手推。

考试中可以这样写

支持向量机是在感知机基础上发展出的最大间隔分类模型。感知机只要求找到一个能正确分类训练样本的超平面,而 SVM 在所有可分超平面中选择使最小几何间隔最大的超平面,因此具有更强的鲁棒性和泛化能力。

点到超平面 $\mathbf{w}^T\mathbf{x}+b=0$ 的距离为 $\frac{|\mathbf{w}^T\mathbf{x}+b|}{|\mathbf{w}|}$。对带标签样本,几何间隔为 $\frac{y_i(\mathbf{w}^T\mathbf{x}_i+b)}{|\mathbf{w}|}$。通过固定最小函数间隔为 1,最大化几何间隔等价于最小化 $\frac{1}{2}|\mathbf{w}|^2$,并满足约束 $y_i(\mathbf{w}^T\mathbf{x}_i+b)\ge 1$,这就是硬间隔 SVM。

软间隔 SVM 引入松弛变量 $\xi_i$,将约束放宽为 $y_i(\mathbf{w}^T\mathbf{x}_i+b)\ge 1-\xi_i$,并在目标函数中加入惩罚项 $C\sum_i\xi_i$,从而在最大间隔和允许少量错误之间折中。

核技巧通过核函数 $K(\mathbf{x},\mathbf{z})=\phi(\mathbf{x})^T\phi(\mathbf{z})$ 隐式计算高维特征空间中的内积,使 SVM 能在高维空间中构造线性超平面,从而解决原空间中的非线性分类问题。

速记

感知机只求分对 → SVM 求最大最小间隔 → 距离除以 $|\mathbf{w}|$ → 固定函数间隔为 1 → 最小化 $\frac{1}{2}|\mathbf{w}|^2$ → 软间隔加 $\xi$ 和 $C$ → 核函数替换内积。

6. 贝叶斯分类器

范围:贝叶斯公式、贝叶斯分类思想、朴素贝叶斯、条件独立性、分类计算公式、拉普拉斯修正;半朴素贝叶斯和贝叶斯网络了解即可。

一、必须掌握

1. 贝叶斯公式

贝叶斯公式用于在看到新证据后更新原来的判断:

$$ P(A|B)=\frac{P(B|A)P(A)}{P(B)} $$

含义:

  • $P(A)$:先验概率。看到证据前,事件 $A$ 本来发生的概率。
  • $P(B|A)$:似然。在 $A$ 成立时,看到证据 $B$ 的概率。
  • $P(B)$:证据因子。证据 $B$ 本身出现的概率。
  • $P(A|B)$:后验概率。看到证据 $B$ 后,事件 $A$ 成立的概率。

直观理解:

$$ 后验概率 = \frac{似然 \times 先验概率}{证据概率} $$

考试要点:贝叶斯公式不是“证据出现就直接确定结论”,而是根据证据对原判断进行概率更新。

2. 贝叶斯分类的基本思想

贝叶斯分类器的目标:对样本 $\mathbf{x}$,计算它属于每个类别 $c$ 的后验概率 $P(c|\mathbf{x})$,然后选择后验概率最大的类别。

根据贝叶斯公式:

$$ P(c|\mathbf{x})=\frac{P(c)P(\mathbf{x}|c)}{P(\mathbf{x})} $$

其中:

  • $P(c)$:类别 $c$ 的先验概率,通常用训练集中该类样本的比例估计。
  • $P(\mathbf{x}|c)$:类条件概率,也叫似然,表示类别为 $c$ 时出现样本 $\mathbf{x}$ 的概率。
  • $P(\mathbf{x})$:证据因子,对所有类别相同,分类比较时可以忽略。

因此分类时只需要比较:

$$ h(\mathbf{x})=\arg\max_{c\in \mathcal{Y}} P(c)P(\mathbf{x}|c) $$

贝叶斯分类器属于生成式模型:先对联合概率分布 $P(\mathbf{x},c)$ 或 $P(c)P(\mathbf{x}|c)$ 建模,再得到后验概率。

3. 朴素贝叶斯分类器

直接估计 $P(\mathbf{x}|c)$ 很困难,因为样本 $\mathbf{x}$ 可能包含多个属性:

$$ \mathbf{x}=(x_1,x_2,\dots,x_d) $$

所有属性的联合概率 $P(x_1,x_2,\dots,x_d|c)$ 很难从有限训练样本中准确估计,会出现组合爆炸和样本稀疏问题。

朴素贝叶斯的做法:引入条件独立性假设,把联合概率拆成多个单属性概率的乘积。

4. 条件独立性假设

朴素贝叶斯假设:在给定类别 $c$ 的条件下,各个属性相互独立。

即:

$$ P(\mathbf{x}|c)=P(x_1,x_2,\dots,x_d|c)=\prod_{i=1}^{d}P(x_i|c) $$

所以:

$$ P(c|\mathbf{x}) \propto P(c)\prod_{i=1}^{d}P(x_i|c) $$

注意:这个假设在现实中往往不完全成立,所以叫“朴素”。但它大大降低了估计难度,实际效果经常不错。

5. 朴素贝叶斯分类计算公式

最终分类公式:

$$ h_{nb}(\mathbf{x})=\arg\max_{c\in \mathcal{Y}} P(c)\prod_{i=1}^{d}P(x_i|c) $$

离散属性估计:

$$ P(c)=\frac{|D_c|}{|D|} $$

$$ P(x_i|c)=\frac{|D_{c,x_i}|}{|D_c|} $$

其中:

  • $D$:训练集。
  • $D_c$:训练集中类别为 $c$ 的样本集合。
  • $D_{c,x_i}$:类别为 $c$ 且第 $i$ 个属性取值为 $x_i$ 的样本集合。

连续属性估计:通常假设属性服从某种分布,例如正态分布:

$$ P(x_i|c)=\frac{1}{\sqrt{2\pi}\sigma_{c,i}} \exp\left(-\frac{(x_i-\mu_{c,i})^2}{2\sigma_{c,i}^2}\right) $$

其中 $\mu_{c,i}$ 和 $\sigma_{c,i}^2$ 可由类别 $c$ 中第 $i$ 个属性的样本均值和方差估计。

6. 拉普拉斯修正

问题:如果某个属性值在训练集中没有与某个类别同时出现,则:

$$ P(x_i|c)=0 $$

朴素贝叶斯要做概率连乘,只要有一个概率为 0,整个类别的得分就会变成 0,导致其他属性提供的信息被完全“抹去”。

例子:如果训练集中没有出现过“敲声=清脆”的好瓜,那么测试样本只要有“敲声=清脆”,未修正的模型就会令:

$$ P(\text{敲声=清脆}|\text{好瓜})=0 $$

从而把“好瓜”类别的整体概率乘成 0。

拉普拉斯修正的做法:给每种情况都加 1,避免零概率。

类别先验修正:

$$ \hat{P}(c)=\frac{|D_c|+1}{|D|+N} $$

属性条件概率修正:

$$ \hat{P}(x_i|c)=\frac{|D_{c,x_i}|+1}{|D_c|+N_i} $$

其中:

  • $N$:训练集中可能的类别数。
  • $N_i$:第 $i$ 个属性可能的取值数。

本质:拉普拉斯修正相当于假设每个类别、每个属性取值都至少出现过一次。它可以避免零概率,但也额外引入了“均匀分布”的偏置。

考试重点:老师明确说拉普拉斯修正需要掌握,因为它用于避免某些类别或属性取值没出现时导致概率为 0 的问题。

二、了解即可

1. 半朴素贝叶斯

朴素贝叶斯假设属性之间条件独立,但现实中属性之间往往有关联。

半朴素贝叶斯的基本思想:适当考虑部分属性之间的依赖关系,而不是完全假设独立。

常见方法:

  • ODE:独依赖估计,假设每个属性除了类别之外,最多依赖一个其他属性。
  • SPODE:所有属性依赖同一个“超父”属性,通过模型选择确定超父属性。
  • TAN:用属性之间的条件互信息作为边权,构建最大带权生成树,只保留较强的属性依赖关系。
  • AODE:把多个 SPODE 集成起来,平均多个独依赖模型的结果。

理解重点:半朴素贝叶斯是在“完全独立”和“完全联合建模”之间折中。

2. 贝叶斯网络

贝叶斯网络是概率图模型的一种,用有向无环图 DAG 表示变量之间的依赖关系。

贝叶斯网络由两部分组成:

  • 结构 $G$:有向无环图,表示变量之间的依赖关系。
  • 参数 $\theta$:条件概率表 CPT,表示每个节点在父节点给定时的条件概率。

联合概率可以分解为:

$$ P(x_1,x_2,\dots,x_d)=\prod_{i=1}^{d}P(x_i|\pi_i) $$

其中 $\pi_i$ 是 $x_i$ 的父节点集合。

理解重点:贝叶斯网络不是简单假设所有属性独立,而是用图结构表达哪些变量之间存在依赖。

三、PDF 中出现的问题/例题及解答

问题 1:99% 准确的癌症检测,阳性就几乎确定患癌吗?

PDF 条件:

  • 患病率:1%。
  • 真正患癌的人,99% 检测阳性。
  • 没患癌的人,99% 检测阴性,即 1% 会假阳性。
  • 张三检测结果为阳性。

用 10000 人来算:

  • 真正患癌:100 人,其中阳性 99 人。
  • 没有患癌:9900 人,其中假阳性 99 人。
  • 所有阳性:99 + 99 = 198 人。

所以:

$$ P(\text{患癌}|\text{阳性})=\frac{99}{198}=50% $$

如果患病率只有 0.1%,则 10000 人中约 10 人患病:

  • 真阳性约 $10 \times 0.99 = 9.9$ 人。
  • 假阳性约 $9990 \times 0.01 = 99.9$ 人。

所以:

$$ P(\text{患癌}|\text{阳性}) =\frac{9.9}{9.9+99.9} \approx 9% $$

结论:检测准确率高,不代表阳性后的患病概率一定高。还要看先验概率,也就是患病率。

问题 2:侦探故事中,门禁异常后 A 是嫌疑人的概率是多少?

PDF 条件:

  • 先验:$P(A)=50%$,$P(\neg A)=50%$。
  • 如果 A 是小偷,门禁异常概率为 80%。
  • 如果 A 不是小偷,门禁异常概率为 20%。

计算:

$$ P(A|\text{异常}) =\frac{P(\text{异常}|A)P(A)} {P(\text{异常}|A)P(A)+P(\text{异常}|\neg A)P(\neg A)} $$

$$ =\frac{0.8\times0.5}{0.8\times0.5+0.2\times0.5} =\frac{0.4}{0.5} =0.8 $$

答案:A 是嫌疑人的后验概率为 80%。

问题 3:西瓜样本“青绿、稍蜷、浊响、清晰”是好瓜还是坏瓜?

PDF 给定训练集共有 17 个样本:

  • 好瓜 8 个。
  • 坏瓜 9 个。

目标样本:

$$ \mathbf{x}=(青绿, 稍蜷, 浊响, 清晰) $$

未使用拉普拉斯修正时:

好瓜得分:

$$ P(好瓜)\cdot P(青绿|好瓜)\cdot P(稍蜷|好瓜)\cdot P(浊响|好瓜)\cdot P(清晰|好瓜) $$

$$ =\frac{8}{17}\times\frac{3}{8}\times\frac{3}{8}\times\frac{6}{8}\times\frac{7}{8} $$

坏瓜得分:

$$ P(坏瓜)\cdot P(青绿|坏瓜)\cdot P(稍蜷|坏瓜)\cdot P(浊响|坏瓜)\cdot P(清晰|坏瓜) $$

$$ =\frac{9}{17}\times\frac{3}{9}\times\frac{4}{9}\times\frac{4}{9}\times\frac{2}{9} $$

比较可知好瓜得分更大,因此分类结果为:好瓜。

问题 4:为什么需要拉普拉斯修正?

问题:如果训练集中没有某个“属性值-类别”的组合,例如没有“敲声=清脆”的好瓜,那么:

$$ P(\text{清脆}|\text{好瓜})=0 $$

在朴素贝叶斯中:

$$ P(c)\prod_i P(x_i|c) $$

只要有一个因子为 0,整个类别得分就是 0。这样会导致其他属性即使很支持“好瓜”,也完全不起作用。

解决:使用拉普拉斯修正。

若“敲声”这个属性有 3 种可能取值,且好瓜样本有 8 个,那么即使训练集中没有“清脆”的好瓜:

$$ \hat{P}(\text{清脆}|\text{好瓜}) =\frac{0+1}{8+3} =\frac{1}{11} $$

这样概率不再为 0,分类器仍然可以综合其他属性进行判断。

问题 5:水果糖案例中,水果糖来自 1 号碗的概率是多少?

PDF 图中条件:

  • 随机选择一个碗,所以 $P(#1)=P(#2)=1/2$。
  • 1 号碗:10 颗水果糖,30 颗非水果糖,所以 $P(水果糖|#1)=10/(10+30)=1/4$。
  • 2 号碗:20 颗水果糖,20 颗非水果糖,所以 $P(水果糖|#2)=20/(20+20)=1/2$。
  • 已知摸到的是水果糖,求来自 1 号碗的概率。

计算:

$$ P(#1|水果糖) =\frac{P(水果糖|#1)P(#1)} {P(水果糖|#1)P(#1)+P(水果糖|#2)P(#2)} $$

$$ =\frac{\frac14\times\frac12} {\frac14\times\frac12+\frac12\times\frac12} =\frac{\frac18}{\frac18+\frac14} =\frac{\frac18}{\frac38} =\frac13 $$

答案:这颗水果糖来自 1 号碗的概率是 $\frac{1}{3}$。

四、速记版

  • 贝叶斯公式:$P(A|B)=P(B|A)P(A)/P(B)$。
  • 贝叶斯分类:比较每个类别的后验概率,选最大的类别。
  • 朴素贝叶斯:假设给定类别后,各属性条件独立。
  • 分类公式:$h(\mathbf{x})=\arg\max_c P(c)\prod_iP(x_i|c)$。
  • 离散属性:$P(x_i|c)=|D_{c,x_i}|/|D_c|$。
  • 拉普拉斯修正:把分子加 1,分母加可能取值数,避免概率为 0。
  • 半朴素贝叶斯:适当考虑属性依赖。
  • 贝叶斯网络:用有向无环图和条件概率表表示变量依赖。

7. 维度约简 PCA

来源:纬度约减.pdf
范围:维度约简动机、PCA、LDA、Kernel PCA。重点掌握 PCA。

一、必须掌握:PCA

1. 维度约简的动机

高维数据会带来“维度灾难”:

  • 数据样本在高维空间中变得稀疏。
  • 距离计算变得困难,很多依赖距离的算法效果下降。
  • 特征维度高会增加计算和存储开销。

降维的核心思想:通过某种数学变换,把原始高维属性空间变成低维子空间。

为什么可以降维:虽然样本看起来处在高维空间中,但与学习任务真正相关的信息可能只分布在某个低维嵌入上。也就是说,高维数据可能本质上由少数几个主要方向决定。

2. PCA 的核心思想

PCA,全称 Principal Component Analysis,主成分分析。

PCA 是一种无监督线性降维方法。它通过线性变换,把原始数据变换到一组新的坐标轴上,使得前几个坐标轴尽可能保留数据中的主要信息。

一句话概括:

PCA 找到数据方差最大的方向,把这些方向作为新的坐标轴,然后保留最重要的前几个方向。

主成分的含义:

  • 第一个主成分:数据方差最大的方向。
  • 第二个主成分:在与第一个主成分正交的条件下,方差第二大的方向。
  • 依次类推。

3. 为什么可以用投影实现降维

线性降维把原始样本 $\mathbf{x}\in \mathbb{R}^d$ 投影到低维空间:

$$ \mathbf{z}=W^T\mathbf{x} $$

其中:

  • $W$ 是投影矩阵。
  • $W=(\mathbf{w}_1,\mathbf{w}2,\dots,\mathbf{w}{d'})$。
  • $d'<d$,所以 $\mathbf{z}\in \mathbb{R}^{d'}$。

投影的意义:用少数几个方向上的坐标来表示原始样本。
如果这些方向保留了数据中最主要的变化,那么即使维度降低,重要信息仍然能被保留下来。

例如人脸图像原本可能是 $100\times100=10000$ 维像素向量,但人脸并不是随机像素排列,而是有共同结构。PCA 可以提取“特征脸”,用少量权重系数近似表示一张人脸。

4. 最大可分性思想

最大可分性要求:样本投影到低维空间后,投影点尽可能分散。

也就是让投影后的方差尽可能大。

对一维投影方向 $\mathbf{w}$,中心化后样本投影为:

$$ \mathbf{w}^T\mathbf{x}_i $$

投影后的方差与下面的量成正比:

$$ \sum_i \mathbf{w}^T\mathbf{x}_i\mathbf{x}_i^T\mathbf{w}

\mathbf{w}^TXX^T\mathbf{w} $$

为了防止 $\mathbf{w}$ 无限放大,需要约束:

$$ \mathbf{w}^T\mathbf{w}=1 $$

所以一维 PCA 可以写成:

$$ \max_{\mathbf{w}} \mathbf{w}^TXX^T\mathbf{w} \quad s.t.\quad \mathbf{w}^T\mathbf{w}=1 $$

多维投影时:

$$ \max_W tr(W^TXX^TW) \quad s.t.\quad W^TW=I $$

解释:PCA 选择使投影后样本方差最大的方向。方差越大,说明样本在该方向上越能被区分,也越能保留信息。

5. 最近重构性思想

最近重构性要求:样本投影到低维空间后,再从低维表示重构回原空间时,重构误差尽可能小。

投影:

$$ \mathbf{z}_i=W^T\mathbf{x}_i $$

重构:

$$ \hat{\mathbf{x}}_i=W\mathbf{z}_i $$

PCA 希望最小化:

$$ \sum_i |\mathbf{x}_i-\hat{\mathbf{x}}_i|^2 $$

推导后可得到与最大可分性等价的优化目标:

$$ \min_W -tr(W^TXX^TW) \quad s.t.\quad W^TW=I $$

结论:最大化投影方差和最小化重构误差是 PCA 的两种等价理解。

6. 数据中心化

PCA 之前必须对数据中心化。

对每个样本:

$$ \mathbf{x}_i \leftarrow \mathbf{x}i-\frac{1}{m}\sum{i=1}^{m}\mathbf{x}_i $$

中心化后:

$$ \sum_{i=1}^{m}\mathbf{x}_i=0 $$

为什么要中心化:

  • PCA 关心的是数据围绕均值的变化方向。
  • 不中心化时,均值偏移会影响协方差矩阵和主成分方向。
  • 中心化后,协方差矩阵能正确描述各特征之间的共同变化。

注意:如果做标准化或归一化,不能统计测试集信息。应保存训练集上的均值、方差、最大值、最小值等参数,再用这些参数处理测试集。

7. 协方差矩阵

协方差衡量两个变量共同变化的程度。

对随机变量 $X,Y$:

$$ Cov(X,Y)=E[(X-\mu)(Y-\nu)] $$

如果数据已经中心化,则:

$$ Cov(X,Y)=E[XY] $$

协方差矩阵:

$$ \Sigma_{ij}=Cov(X_i,X_j) $$

性质:

  • 协方差矩阵是对称矩阵。
  • 对角线元素是每个特征自身的方差。
  • 非对角线元素表示不同特征之间的协方差。

PCA 中常用 $XX^T$ 或 $\frac{1}{m}XX^T$ 表示协方差矩阵。常数 $\frac{1}{m}$ 不影响特征向量方向,所以推导里常直接写 $XX^T$。

8. 求特征值和特征向量

PCA 的关键求解问题:

$$ XX^T\mathbf{w}_i=\lambda_i\mathbf{w}_i $$

也就是对协方差矩阵 $XX^T$ 做特征值分解。

含义:

  • $\lambda_i$:第 $i$ 个方向上的方差大小。
  • $\mathbf{w}_i$:对应的投影方向。

特征值越大,说明数据在对应特征向量方向上的方差越大,该方向保留的信息越多。

9. 选择最大特征值对应的特征向量作为投影方向

把特征值从大到小排序:

$$ \lambda_1\ge \lambda_2\ge \cdots \ge \lambda_d $$

选择前 $d'$ 个最大特征值对应的特征向量:

$$ W^*=(\mathbf{w}_1,\mathbf{w}2,\dots,\mathbf{w}{d'}) $$

然后用:

$$ \mathbf{z}=W^{*T}\mathbf{x} $$

得到低维表示。

PCA 算法步骤:

  1. 输入样本集 $D={\mathbf{x}_1,\mathbf{x}_2,\dots,\mathbf{x}_m}$ 和目标维度 $d'$。
  2. 对所有样本进行中心化。
  3. 计算协方差矩阵 $XX^T$。
  4. 对 $XX^T$ 做特征值分解。
  5. 取最大的 $d'$ 个特征值对应的特征向量。
  6. 输出投影矩阵 $W=(\mathbf{w}_1,\mathbf{w}2,\dots,\mathbf{w}{d'})$。

10. 子空间维度如何选择

常见方法:

  • 用户直接指定 $d'$。
  • 在低维空间中用简单学习器交叉验证,选择效果较好的 $d'$。
  • 通过重构误差或保留能量比例选择。

保留能量比例:

$$ \frac{\lambda_1+\lambda_2+\cdots+\lambda_T} {\lambda_1+\lambda_2+\cdots+\lambda_d}>0.9 $$

通常选择第一个满足该不等式的 $T$,表示保留 90% 以上的信息量。

11. PCA 的优点和注意事项

优点:

  • 降低维度,减少计算和存储开销。
  • 提高样本密度,缓解维度灾难。
  • 小特征值方向常与噪声有关,丢弃这些方向可以起到去噪作用。
  • 新样本只需保存均值向量和投影矩阵,就能快速投影到低维空间。

注意事项:

  • PCA 对特征尺度敏感,因为协方差矩阵会受量纲影响。
  • 不同特征量纲差异大时,应先做标准化或归一化。
  • PCA 是无监督方法,不使用类别标签,所以方差最大的方向不一定最适合分类。

二、了解即可

1. LDA 的基本思想

LDA,全称 Linear Discriminant Analysis,线性判别分析。

LDA 是有监督降维方法,会利用类别标签。

核心思想:

  • 同类样本投影后尽可能接近。
  • 异类样本投影后尽可能远离。

二分类 LDA 中:

类内散度矩阵:

$$ S_w=\Sigma_0+\Sigma_1

\sum_{\mathbf{x}\in X_0}(\mathbf{x}-\mu_0)(\mathbf{x}-\mu_0)^T + \sum_{\mathbf{x}\in X_1}(\mathbf{x}-\mu_1)(\mathbf{x}-\mu_1)^T $$

类间散度矩阵:

$$ S_b=(\mu_0-\mu_1)(\mu_0-\mu_1)^T $$

LDA 目标是最大化广义瑞利商:

$$ J=\frac{\mathbf{w}^TS_b\mathbf{w}} {\mathbf{w}^TS_w\mathbf{w}} $$

直观理解:分子大表示类间距离大,分母小表示类内距离小。

二分类 LDA 的投影方向:

$$ \mathbf{w}=S_w^{-1}(\mu_0-\mu_1) $$

PCA 与 LDA 区别:

  • PCA 是无监督,LDA 是有监督。
  • PCA 目标是投影后方差最大,LDA 目标是类内小、类间大。
  • PCA 基于协方差矩阵,LDA 基于类内散度和类间散度。
  • PCA 的投影方向正交,LDA 不要求投影方向正交。
  • LDA 的降维维度通常受类别数限制,多分类最多可降到 $N-1$ 维。

2. Kernel PCA 的基本想法

普通 PCA 是线性降维,如果数据存在非线性结构,线性投影可能不够。

Kernel PCA 的想法:

  1. 假设存在非线性映射 $\phi$,把原始数据映射到高维特征空间。
  2. 在高维特征空间中做 PCA。
  3. 不显式计算 $\phi(\mathbf{x})$,而是用核函数计算内积。

高维空间中的协方差矩阵:

$$ C=\frac{1}{m}\sum_{i=1}^{m}\phi(\mathbf{x}_i)\phi(\mathbf{x}_i)^T $$

如果直接做 PCA,需要解:

$$ C\mathbf{w}=\lambda \mathbf{w} $$

但高维空间可能维度很高甚至无限维,无法显式计算 $C$。

Kernel PCA 使用核矩阵:

$$ G_{ij}=\langle \phi(\mathbf{x}_i),\phi(\mathbf{x}_j)\rangle =K(\mathbf{x}_i,\mathbf{x}_j) $$

于是问题转化为对核矩阵 $G$ 做特征值分解。

新样本 $\mathbf{x}$ 在第 $j$ 个主成分上的投影坐标:

$$ \langle \phi(\mathbf{x}),\mathbf{w}_j\rangle

\sum_{i=1}^{m}a_i^j K(\mathbf{x},\mathbf{x}_i) $$

注意:Kernel PCA 对新样本投影时需要对所有训练样本求和,因此计算开销较大。

三、PDF 中出现的问题/思考点及解答

问题 1:为什么高维数据可以降维?

答案:因为数据虽然表示在高维空间中,但真正与任务相关的变化可能集中在低维嵌入上。例如人脸图像像素维度很高,但人脸结构不是随机的,眼睛、鼻子、嘴巴等结构具有规律性,所以可以用少量主成分近似表达。

问题 2:PCA 为什么选择方差最大的方向?

答案:方差表示数据在某个方向上的分散程度。投影后方差越大,说明样本在该方向上越能被区分,保留的信息越多。因此 PCA 从最大可分性角度选择投影方差最大的方向。

问题 3:PCA 的“最大可分性”和“最近重构性”为什么等价?

答案:在正交投影和数据中心化条件下,样本总能量可以分解为“投影后保留的能量”和“重构损失”。最大化投影后的方差,等价于保留尽可能多的信息;保留的信息越多,被丢弃的信息越少,重构误差就越小。因此两种推导得到相同的优化目标:

$$ \max_W tr(W^TXX^TW) \quad s.t.\quad W^TW=I $$

或等价地:

$$ \min_W -tr(W^TXX^TW) \quad s.t.\quad W^TW=I $$

问题 4:PCA 为什么要先中心化?

答案:PCA 要找的是数据围绕均值变化最大的方向。若不中心化,数据整体均值偏移会影响协方差矩阵,使主成分方向受到原点位置影响。中心化后,协方差矩阵才能正确表示特征之间的共同变化。

问题 5:PCA 的投影矩阵怎么求?

答案:

  1. 中心化数据。
  2. 计算协方差矩阵 $XX^T$。
  3. 求解特征值问题:

$$ XX^T\mathbf{w}_i=\lambda_i\mathbf{w}_i $$

  1. 将特征值从大到小排序。
  2. 选择最大的 $d'$ 个特征值对应的特征向量组成:

$$ W=(\mathbf{w}_1,\mathbf{w}2,\dots,\mathbf{w}{d'}) $$

问题 6:为什么取最大特征值对应的特征向量?

答案:协方差矩阵的特征值表示数据在对应特征向量方向上的方差。特征值越大,该方向的数据变化越明显,保留的信息越多。因此 PCA 选择最大特征值对应的特征向量作为主成分方向。

问题 7:PCA 降到几维比较合适?

答案:常用保留能量比例判断。若希望保留 90% 的信息量,就选择最小的 $T$,使得:

$$ \frac{\lambda_1+\lambda_2+\cdots+\lambda_T} {\lambda_1+\lambda_2+\cdots+\lambda_d}>0.9 $$

也可以由用户指定,或通过交叉验证选择。

问题 8:为什么 PCA 前常要标准化?

答案:PCA 基于协方差矩阵,协方差会受到特征尺度影响。如果某个特征数值范围特别大,它可能主导主成分方向。标准化后,各特征处在相同尺度上,PCA 结果更合理。

注意:标准化参数只能从训练集统计,不能用测试集信息。

问题 9:PCA 为什么不一定适合分类?

答案:PCA 不使用类别标签,只寻找整体方差最大的方向。但分类任务需要的是最能区分类别的方向,方差最大的方向不一定能把类别分开。因此 PDF 中引出 LDA:有标签时,可以用 LDA 找更有利于分类的低维空间。

问题 10:Kernel PCA 为什么不显式计算高维协方差矩阵?

答案:Kernel PCA 假设通过 $\phi(\mathbf{x})$ 把数据映射到高维空间,但这个高维空间可能维度很高甚至无限维,显式计算:

$$ C=\frac{1}{m}\sum_i\phi(\mathbf{x}_i)\phi(\mathbf{x}_i)^T $$

通常不可行。所以 Kernel PCA 使用核函数:

$$ K(\mathbf{x}_i,\mathbf{x}_j)=\langle \phi(\mathbf{x}_i),\phi(\mathbf{x}_j)\rangle $$

通过核矩阵完成特征分解,避免显式计算 $\phi$ 和 $C$。

四、速记版

  • 降维原因:高维数据稀疏,距离计算困难,但有效信息可能在低维嵌入上。
  • PCA 核心:找方差最大的方向,保留最大特征值对应的特征向量。
  • 中心化:$\mathbf{x}_i\leftarrow \mathbf{x}_i-\bar{\mathbf{x}}$。
  • 协方差矩阵:中心化后用 $XX^T$ 或 $\frac{1}{m}XX^T$。
  • 求解:$XX^T\mathbf{w}=\lambda\mathbf{w}$。
  • 投影矩阵:取最大的 $d'$ 个特征值对应的特征向量组成 $W$。
  • 最大可分性:投影后方差最大。
  • 最近重构性:重构误差最小。
  • LDA:有监督降维,类内小、类间大。
  • Kernel PCA:先用核函数隐式映射到高维空间,再做 PCA。

8. K 近邻 KNN

范围:k 近邻分类器、最近邻分类器、k 近邻回归、近邻计算优化、扩展内容。

一、必须掌握

1. KNN 的核心思想

KNN,全称 k-Nearest Neighbor,k 近邻。

核心思想:

一个样本的类别或预测值,可以由它在特征空间中最接近的 k 个训练样本决定。

KNN 属于基于实例的学习方法。它不显式学习一个参数模型,而是保存训练样本,预测时再进行距离计算。

2. k 近邻分类器

算法流程:

  1. 给定测试样本 $\hat{\mathbf{x}}$。

  2. 计算 $\hat{\mathbf{x}}$ 与训练集中所有样本 $\mathbf{x}_i$ 的距离 $d(\hat{\mathbf{x}},\mathbf{x}_i)$。

  3. 按距离从小到大排序。

  4. 选择距离最近的 k 个训练样本。

  5. 对这 k 个近邻的类别做投票。

  6. 将票数最多的类别作为测试样本的类别。

分类规则可以写成:

$$

h(\hat{\mathbf{x}})=\arg\max_c

\sum_{\mathbf{x}_i\in N_k(\hat{\mathbf{x}})} I(y_i=c)

$$

其中:

  • $N_k(\hat{\mathbf{x}})$ 表示 $\hat{\mathbf{x}}$ 的 k 个最近邻。

  • $I(y_i=c)$ 表示样本 $\mathbf{x}_i$ 的类别是否为 $c$。

3. k 的取值影响

k 的取值会直接影响分类结果。

  • k 一般取奇数,避免投票平局。

  • k 取不同值,分类结果可能不同。

  • k 较小时,模型更复杂,对噪声敏感,容易过拟合。

  • k 较大时,模型更平滑,对噪声不敏感,但容易欠拟合。

PDF 图中例子:

  • 当 $k=3$ 时,测试点的 3 个最近邻中 Class 2 占多数,所以分为 Class 2。

  • 当 $k=5$ 时,测试点的 5 个最近邻中 Class 1 占多数,所以分为 Class 1。

结论:KNN 的分类结果依赖 k 的选择,k 是重要超参数。

4. 距离度量

KNN 依赖“近邻”,所以距离度量非常关键。

常用欧式距离:

$$

d(\mathbf{x}_i,\mathbf{x}_j)

=

\sqrt{\sum_{r=1}^{d}(x_{ir}-x_{jr})^2}

$$

若只比较大小,也常用平方欧式距离,省去开根号:

$$

d^2(\mathbf{x}_i,\mathbf{x}_j)

=

\sum_{r=1}^{d}(x_{ir}-x_{jr})^2

$$

注意:不同特征尺度会影响距离计算,因此使用 KNN 前通常需要标准化或归一化。

5. 最近邻分类器 1-NN

1-NN 是 KNN 的特殊情况,即 $k=1$。

算法流程:

  1. 计算测试样本 $\hat{\mathbf{x}}$ 与所有训练样本的距离。

  2. 找到距离最近的训练样本:

$$

i^*=\arg\min_i d(\hat{\mathbf{x}},\mathbf{x}_i)

$$

  1. 将最近邻 $\mathbf{x}_{i^*}$ 的类别赋给 $\hat{\mathbf{x}}$。

1-NN 很简单,但对噪声非常敏感。只要最近的训练样本是噪声点,就可能分类错误。

PDF 中给出的重要结论:

最近邻分类器虽然简单,但它的泛化错误率不超过贝叶斯分类器错误率的两倍。

也就是说,1-NN 是一个非常简单但有理论保证的基线方法。

6. k 近邻回归

KNN 不只可以做分类,也可以做回归。

k 近邻回归流程:

  1. 计算测试样本与所有训练样本的距离。
  2. 选择 k 个最近邻。
  3. 将这 k 个近邻的标签值平均或加权平均,作为预测值。

简单平均:

$$ \hat{y}

\frac{1}{k}\sum_{\mathbf{x}_i\in N_k(\mathbf{x})}y_i $$

加权平均:

$$ \hat{y}

\frac{\sum_i K_\lambda(\mathbf{x},\mathbf{x}i)y_i} {\sum_i K\lambda(\mathbf{x},\mathbf{x}_i)} $$

其中 $K_\lambda$ 是核函数或权重函数。距离越近,权重通常越大。

7. 懒惰学习与急切学习

KNN 是典型的懒惰学习。

懒惰学习:

  • 训练阶段几乎不建模,只保存训练样本。
  • 预测阶段才计算距离并做决策。
  • 训练快,预测慢。

急切学习:

  • 训练阶段就构造模型。
  • 预测时直接使用学到的模型。
  • 例如 SVM、神经网络、CNN。

8. KNN 的优缺点

优点:

  • 思想简单,容易理解。
  • 不需要对数据分布作强假设。
  • 对复杂决策边界有一定适应能力。
  • 在数据充分且距离度量合适时,效果可以很好。

缺点:

  • 预测阶段计算复杂度高。
  • 需要存储全部训练样本,空间复杂度高。
  • 对特征尺度敏感。
  • 高维数据中距离度量容易失效。
  • k 和距离度量选择会明显影响结果。

9. 时间复杂度和空间复杂度

假设训练样本数为 $n$,特征维度为 $d$。

计算一个测试样本到一个训练样本的欧式距离,复杂度为:

$$ O(d) $$

对所有训练样本计算距离:

$$ O(nd) $$

如果维护 k 个最近距离,可以得到测试阶段复杂度:

$$ O(nd+n\log k) $$

训练阶段:

$$ O(0) $$

因为 KNN 训练时基本只保存样本。

空间复杂度:

$$ O(nd) $$

因为需要保存全部训练数据。

10. 重新补充:KNN 常考知识点

距离度量的选择

KNN 的核心是“近”,所以距离度量会直接决定近邻是谁。

常见距离:

  • 欧式距离:适合连续数值特征,是最常见选择。
  • 曼哈顿距离:各维绝对差求和,对异常值相对没那么敏感。
  • 闵可夫斯基距离:欧式距离和曼哈顿距离的统一形式。
  • 余弦相似度:更关注方向,常用于文本向量、高维稀疏向量。

曼哈顿距离:

$$ d(\mathbf{x},\mathbf{z})

\sum_{j=1}^{d}|x_j-z_j| $$

闵可夫斯基距离:

$$ d(\mathbf{x},\mathbf{z})

\left(\sum_{j=1}^{d}|x_j-z_j|^p\right)^{1/p} $$

当 $p=1$ 时是曼哈顿距离;当 $p=2$ 时是欧式距离。

特征标准化非常重要

KNN 使用距离做判断,如果不同特征量纲差异很大,数值范围大的特征会主导距离。

例如:

  • 年龄范围可能是 0-100。
  • 收入范围可能是 0-100000。

如果不标准化,收入几乎会完全决定距离,年龄的作用被压小。

常用标准化:

$$ x'=\frac{x-\mu}{\sigma} $$

归一化到 $[0,1]$:

$$ x'=\frac{x-x_{\min}}{x_{\max}-x_{\min}} $$

注意:均值、方差、最大值、最小值只能从训练集统计,再用于验证集和测试集,不能用测试集信息。

加权 KNN

普通 KNN 中,k 个近邻投票权重相同。但有时更近的邻居应当更重要。

加权投票思想:

$$ h(\mathbf{x})

\arg\max_c \sum_{\mathbf{x}_i\in N_k(\mathbf{x})} w_i I(y_i=c) $$

常见权重:

$$ w_i=\frac{1}{d(\mathbf{x},\mathbf{x}_i)+\epsilon} $$

其中 $\epsilon$ 用来避免距离为 0 时分母为 0。

优点:距离更近的样本影响更大,可以减少较远邻居的干扰。

k 的选择方法

k 是超参数,不能只凭感觉选。

常见选择方法:

  • 用验证集选择。
  • 用交叉验证选择。
  • 二分类时常取奇数,减少平票。
  • 样本少、噪声少时可取较小 k。
  • 样本多、噪声较大时可取稍大 k。

经验理解:

  • $k=1$:决策边界最复杂,方差高,容易过拟合。
  • $k$ 很大:决策边界很平滑,偏差高,容易欠拟合。
KNN 的决策边界

KNN 的决策边界不是显式学出来的,而是由训练样本分布、距离度量和 k 共同决定。

  • k 小:边界曲折,容易贴合训练集。
  • k 大:边界平滑,更像整体趋势。

因此 KNN 也体现了偏差-方差权衡:

  • k 小:低偏差、高方差。
  • k 大:高偏差、低方差。
平票处理

当多个类别票数相同,可以:

  • 选择距离总和更小的类别。
  • 使用距离加权投票。
  • 固定类别优先级。
  • 增大或减小 k,避免平票。

考试中通常写:k 常取奇数,二分类中可减少平票。

类别不平衡问题

如果某个类别样本数量很多,KNN 投票时容易偏向多数类。

可用方法:

  • 对距离投票加权。
  • 对类别投票加权,降低多数类优势。
  • 重采样,使类别分布更平衡。
  • 使用更合适的评价指标,例如 F1、AUC,而不是只看准确率。
高维空间中的问题

KNN 在高维数据中常会变差,原因是维度灾难。

表现:

  • 样本变稀疏。
  • 距离差异变小,最近和最远不再明显。
  • 距离计算成本升高。

解决思路:

  • 先做特征选择。
  • 先做 PCA 等降维。
  • 使用合适距离度量,例如文本任务用余弦相似度。
  • 使用近似最近邻方法。
KNN 与参数模型的区别

KNN 是非参数模型。这里的“非参数”不是没有参数,而是不假设固定形式的参数化函数。

它的模型复杂度会随着训练数据增加而变化,因为预测时依赖整个训练集。

与线性模型、SVM、神经网络相比:

  • KNN 几乎没有显式训练过程。
  • KNN 的主要计算发生在预测阶段。
  • KNN 对数据存储和检索要求高。

二、了解即可

1. 降低近邻计算的方法

KNN 的主要瓶颈在预测阶段,需要和所有训练样本计算距离。

PDF 中给出的降低近邻计算方法:

  • 低维数据 2-5 维:维诺图 Voronoi diagrams。
  • 中等维度 6-30 维:KD 树。
  • 高维数据:降维方法,例如 PCA;近似最近邻 ANN;哈希 Hashing。

2. 维诺图

维诺图根据一组给定点,把平面划分成多个区域。每个区域中的点都更靠近对应的基点。

适用:

  • 主要用于低维数据。
  • 适合 1-NN。
  • 2 维中可较高效查询。

理解即可:维诺图本质是预先把空间按最近点划分好,查询时判断测试点落在哪个区域。

3. KD 树

KD 树是一种用于 K 维空间点快速检索的数据结构。

核心思想:

  • 用垂直于坐标轴的超平面不断切分空间。
  • 每个结点对应一个空间区域。
  • 查询时先沿树向下找到候选近邻,再回溯判断是否可能存在更近点。

KD 树构造流程:

  1. 选择 split 域:计算各维特征方差,选方差最大的维度作为切分维度。
  2. 选择 Node-data:按该维度排序,取中位数点作为当前结点。
  3. 用该点对应的坐标值切分空间。
  4. 对左右子空间递归构建。
  5. 直到区域中只剩少量点或一个点。

KD 树搜索流程:

  1. 从根结点开始,按切分维度进行二叉搜索。
  2. 到达叶结点后,得到一个当前最优近邻。
  3. 回溯检查其他分支是否可能存在更近点。
  4. 若查询点到切分平面的距离小于当前最优距离,则另一侧可能有更优点,需要继续搜索。
  5. 若不可能存在更优点,则剪枝。

理解重点:KD 树通过空间划分减少不必要的距离计算。

4. 近似最近邻 ANN

ANN,全称 Approximate Nearest Neighbors。

核心思想:不要求一定返回真正最近的 k 个点,只要求返回足够接近的近邻,用少量精度损失换取大幅速度提升。

PDF 中条件:

若第 k 个真实最近邻距离为 $d_k$,ANN 可接受返回距离满足:

$$ \hat{d}\le (1+\epsilon)d_k $$

意义:允许近似结果,从而将 KNN 搜索速度提高几个数量级。

5. 哈希 Hashing

哈希方法用哈希函数把高维数据映射为更短的编码。

核心思想:

  • 设计多个哈希函数。
  • 每个样本被表示为若干 bit。
  • $m\ll d$,计算和存储成本降低。
  • 相似样本应尽量落到相同或相近哈希桶中。

了解即可:哈希是高维近邻搜索中的常见加速方法。

6. Probabilistic k-NN

PDF 中提到 KNN 的一个缺点:它通常不是建立在概率框架上。

因此:

  • 难以直接得到类别后验概率。
  • 难以概率化地推断 k 的个数或距离度量参数。

Probabilistic k-NN 的想法:通过定义似然函数,把 KNN 放入概率框架。

7. ModernNCA

PDF 扩展内容提到 ModernNCA。

核心思想:

  • 从经典 NCA 出发,把“同类样本在投影空间更近”的思想现代化。
  • 用 SGD 替代传统 L-BFGS。
  • 用 Soft-NN Loss 替代原始留一法准确率。
  • 用 Soft-NN 替代传统 Hard KNN。
  • 用 MLP 等非线性表征增强能力。

理解即可:KNN 虽然经典,但近邻关系仍然是现代机器学习中的重要思想。

三、PDF 中出现的问题/例题及解答

问题 1:k 的取值会影响分类结果吗?

会。

PDF 图中同一个绿色测试点:

  • 当 $k=3$ 时,最近的 3 个邻居中 Class 2 占多数,因此分类为 Class 2。
  • 当 $k=5$ 时,最近的 5 个邻居中 Class 1 占多数,因此分类为 Class 1。

结论:k 是 KNN 的关键超参数。k 太小容易受噪声影响,k 太大可能把远处甚至其他类别的样本也纳入投票,导致欠拟合。

问题 2:为什么 k 一般取奇数?

答案:为了尽量避免二分类投票时出现平局。

例如二分类任务中:

  • $k=4$ 时可能出现 2 票对 2 票。
  • $k=5$ 时通常不会出现完全平局。

注意:多分类时即使 k 是奇数,也仍可能出现平局,因此实际实现中还可能需要按距离加权或设置平局规则。

问题 3:从 n 个距离中选择 k 个最小的,时间复杂度是多少?

常见做法:

  • 如果直接排序所有距离,复杂度为 $O(n\log n)$。
  • 如果维护一个大小为 k 的堆,遍历 n 个距离,复杂度为 $O(n\log k)$。
  • 如果使用选择算法,可在平均 $O(n)$ 时间内找到第 k 小元素,再取出前 k 个。

PDF 中给出的测试阶段复杂度:

$$ O(nd+n\log k) $$

其中 $O(nd)$ 是计算所有距离,$O(n\log k)$ 是选择 k 个最近邻。

问题 4:KNN 的空间复杂度是多少?

答案:

$$ O(nd) $$

原因:KNN 训练阶段基本不学习模型参数,而是保存全部训练数据。若有 $n$ 个样本、每个样本 $d$ 维,就需要存储 $nd$ 个特征值。

问题 5:1-NN 的泛化错误率有什么理论结论?

PDF 给出结论:

最近邻分类器虽然简单,但它的泛化错误率不超过贝叶斯分类器错误率的两倍。

直观理解:当样本足够多时,测试样本的最近邻通常离它很近,因此最近邻标签能提供较可靠的信息。但 1-NN 仍然容易受噪声影响。

问题 6:KD 树示例中,第一步为什么选择 x 方向切分?

PDF 示例数据点:

$$ (2,3),(5,4),(4,7),(7,2),(9,6),(8,1) $$

KD 树构造时先计算 x、y 两个方向上的方差。PDF 中说明 x 方向方差更大,因此选择 x 方向作为 split 域。

将 x、y 方向分别编码为 0 和 1,则:

$$ split=0 $$

问题 7:KD 树示例中,为什么根结点选为 $(7,2)$?

答案:选定 x 方向后,把各点的 x 值取出:

$$ 2,5,4,7,9,8 $$

按大小排序:

$$ 2,4,5,7,8,9 $$

PDF 中取中位数 7,因此选定 Node-data 为:

$$ (7,2) $$

然后用直线:

$$ x=7 $$

把空间切分为左右两个子空间。

问题 8:KD 树搜索示例中,查询点 $(2.1,3.1)$ 的最近邻是谁?

PDF 中查询点为:

$$ (2.1,3.1) $$

二叉搜索先找到叶结点:

$$ (2,3) $$

距离为:

$$ \sqrt{(2.1-2)^2+(3.1-3)^2}

\sqrt{0.01+0.01} \approx 0.1414 $$

回溯检查其他可能分支后,没有发现更近点。

答案:最近邻为:

$$ (2,3) $$

问题 9:高维数据中如何降低 KNN 的近邻计算开销?

答案:

  • 可以先用 PCA 等降维方法降低维度。
  • 可以用 ANN 近似最近邻,用可接受的精度损失换速度。
  • 可以用哈希方法把高维向量变成短编码。
  • 中低维场景可考虑 KD 树或维诺图。

四、易错点

  • KNN 没有显式训练参数,但不等于没有超参数;k、距离度量、加权方式都很重要。
  • KNN 对特征尺度敏感,通常必须标准化。
  • k 越小不一定越好,小 k 容易过拟合。
  • k 越大也不一定越好,大 k 容易欠拟合。
  • 1-NN 对噪声最敏感。
  • KNN 训练快不代表整体快,因为预测时要计算大量距离。
  • 高维数据中“最近邻”可能不再可靠,需要降维或换距离度量。
  • KD 树适合中低维,高维时效果会明显下降。

五、考试中可以这样写

KNN 是一种基于实例的懒惰学习方法。它在训练阶段主要保存训练样本,在预测阶段计算测试样本与训练样本之间的距离,并根据最近的 k 个样本进行决策。分类任务中通常采用多数投票,回归任务中通常采用平均或加权平均。

KNN 的关键超参数是 k 和距离度量。k 较小时模型复杂、方差较大,容易受噪声影响;k 较大时模型更平滑、偏差较大,可能欠拟合。由于 KNN 依赖距离计算,因此特征标准化非常重要。KNN 的主要缺点是预测阶段计算和存储开销较大,在高维数据中还会受到维度灾难影响,可通过 KD 树、近似最近邻、哈希或降维等方法加速。

六、速记版

  • KNN 核心:看测试样本最近的 k 个训练样本。
  • 分类:k 个近邻投票,票数最多的类别胜出。
  • 回归:k 个近邻标签平均或加权平均。
  • k 小:复杂、低偏差、高方差、易过拟合。
  • k 大:平滑、高偏差、低方差、易欠拟合。
  • 1-NN:取最近的一个样本类别,简单但对噪声敏感。
  • 距离度量:欧式、曼哈顿、闵可夫斯基、余弦相似度。
  • 标准化:KNN 必须重点注意特征尺度。
  • 加权 KNN:距离越近权重越大。
  • KNN 是懒惰学习:训练快,预测慢。
  • 测试复杂度:常见写法 $O(nd+n\log k)$。
  • 空间复杂度:$O(nd)$。
  • 加速方法:维诺图、KD 树、PCA 降维、ANN、哈希。

9. 集成学习 Ensemble Learning

一、整体思想

集成学习的核心思想:把多个学习器组合起来,用群体决策提高整体泛化性能

它本身不是某一种具体分类器,而是一类“模型结合方法”:

  • 先训练多个基学习器。
  • 再用平均、投票、加权投票或元学习器进行组合。
  • 目标是让整体模型比单个模型更稳定、更准确。

直观理解:

  • 单个模型可能只学到数据规律的一部分。
  • 多个模型如果都比随机猜测好,并且错误不完全相同,就可以通过组合抵消一部分错误。
  • 集成学习强调两个条件:准确性多样性

为什么单个模型性能有限?

单个模型通常受以下因素限制:

  • 假设空间有限:模型结构决定了它能表达什么,表达能力不足会导致欠拟合。
  • 训练数据有限:样本少或噪声多时,模型容易学到偶然规律。
  • 优化结果不稳定:不同初始化、不同训练集划分可能得到不同模型。
  • 偏差和方差难以同时很低:简单模型偏差大,复杂模型方差大。
  • 归纳偏置单一:一个模型只带有一种主要偏好,可能不适合所有局部规律。

因此,单个模型即使训练得很好,也可能在泛化时受限。

集成学习如何提升泛化性能?

集成学习主要通过两条路径提升泛化:

  • 降低方差:多个模型平均或投票后,个别模型的不稳定预测被抵消,结果更稳定。Bagging 主要属于这一类。
  • 降低偏差:后续模型不断修正前面模型的错误,使整体模型逐步逼近真实规律。Boosting 主要属于这一类。

从 bias-variance 角度看,以均方误差为例:

$$ Err(x)=Bias^2+Variance+Random\ Error $$

  • Bias:学习结果的期望与真实规律之间的差距。
  • Variance:学习结果自身的不稳定性。
  • Random Error:数据中的不可约噪声,集成学习也无法消除。

二、结合策略

常见结合策略:

任务 常用结合方式 含义
回归 简单平均 多个模型预测值直接取平均
回归 加权平均 表现更好的模型权重更大
分类 绝对多数投票 超过半数的类别胜出
分类 相对多数投票 得票最多的类别胜出
分类 加权投票 表现更好的分类器投票权重更大
通用 Stacking 用一个元学习器学习如何融合多个模型输出

多样性的来源:

  • 数据层面:自助采样、序列采样。
  • 属性层面:随机选择部分特征。
  • 输出层面:改变输出标记或把分类问题转成回归问题。
  • 参数层面:扰动模型参数或训练过程。

三、重点方法对比

方法 训练方式 主要目标 基学习器关系 结合方式 代表方法
Bagging 并行训练 主要降低方差 相互独立或弱相关 投票/平均 Random Forest
Boosting 串行训练 主要降低偏差 前后依赖,逐步改错 加权投票/加法模型 AdaBoost、Boosting Tree、GBDT
Stacking 分层训练 同时利用多模型优势 可异构 元学习器融合 Stacked Generalization

记忆:

  • Bagging:并行、采样、投票、降方差。
  • Boosting:串行、加权、改错、降偏差。
  • Stacking:先让多个模型预测,再训练一个模型学习怎么融合。

四、Bagging

Bagging 是 Bootstrap Aggregating 的缩写,即自助采样 + 聚合

核心思想:

  • 从原训练集 $S$ 中进行有放回采样,得到多个自助采样集。
  • 每个采样集训练一个基学习器。
  • 多个基学习器可以并行训练。
  • 分类时投票,回归时平均。

算法流程:

  1. 给定训练集 $S$、基学习算法 $I$、训练轮数 $T$。
  2. 对 $t=1,\dots,T$:
    • 从 $S$ 中有放回采样得到 $S_t$。
    • 用 $S_t$ 训练基学习器 $C_t$。
  3. 对分类任务,用多数投票得到最终分类器:

$$ C^*(x)=\arg\max_y \sum_{t=1}^{T} I(C_t(x)=y) $$

重点理解:

  • Bagging 不会特别关注某些难样本,每个样本被抽到的概率相同。
  • 由于基学习器可并行训练,所以效率较高。
  • 它主要降低模型方差,使结果更稳定。
  • 如果基学习器本身偏差很高,Bagging 后偏差仍可能很高。

优点:

  • 并行式集成,训练效率较好。
  • 能降低分类器方差,改善泛化。
  • 对不稳定模型特别有效,例如决策树。

缺点:

  • 对高偏差模型帮助有限。
  • 集成后可解释性下降。
  • 训练多个模型会增加计算和存储开销。

五、Random Forest

随机森林是 Bagging 的代表方法。

它可以理解为:Bagging + 决策树 + 特征随机选择

训练过程:

  • 从 $N$ 个训练样本中有放回采样 $N$ 次,得到一棵树的训练集。
  • 每棵树使用不同的自助采样数据。
  • 在每个结点分裂时,不从全部 $d$ 个特征中选最优特征,而是先随机选 $k$ 个特征,再从这 $k$ 个特征中选最优分裂特征。
  • 通常 $k\ll d$。
  • 每棵树通常充分生长,不剪枝。
  • 多棵树投票或平均得到最终结果。

随机森林的特点:

  • 差异性:每棵树的数据和特征都可能不同。
  • 稳定性:通过投票或平均降低单棵树的不稳定性。
  • 可并行化:树之间训练相对独立。
  • 缓解维度灾难:每次只考虑部分特征。
  • 可用袋外样本估计误差:每棵树约有一部分样本没有被抽到,可作为 out-of-bag 样本评估误差。

考试重点:

Random Forest 是 Bagging 的典型代表。它通过样本随机和特征随机增强树之间的差异性,再通过投票或平均降低方差、提高泛化能力。

六、Boosting

Boosting 的核心思想:把多个弱学习器串行组合成强学习器

弱学习器:性能只比随机猜测略好。
强学习器:性能较高、泛化能力较好的学习器。

Boosting 的理论背景来自 PAC 学习理论:

  • 强可学习和弱可学习在一定条件下等价。
  • 可以通过 Boosting 把弱学习器提升为强学习器。

Boosting 的训练特点:

  • 基学习器按顺序训练,不能简单并行。
  • 后一个学习器依赖前面学习器的结果。
  • 重点关注前面模型预测错误的样本。
  • 最终模型通常是多个基学习器的加权组合。

从 bias-variance 角度看:

  • Boosting 通过不断修正错误,主要降低偏差。
  • 但如果迭代过多或弱学习器过强,也可能过拟合。

七、AdaBoost

AdaBoost 是 Boosting 的代表方法,全称 Adaptive Boost。

核心思想:

  • 初始化时,每个样本权重相同。
  • 每一轮训练一个弱分类器。
  • 被上一轮分错的样本权重变大。
  • 被上一轮分对的样本权重变小。
  • 错误率低的弱分类器在最终投票中权重大。
  • 错误率高的弱分类器在最终投票中权重小。

二分类任务中,训练集为:

$$ T={(x_1,y_1),(x_2,y_2),\dots,(x_m,y_m)},\quad y_i\in{-1,1} $$

第 $k$ 个弱分类器 $G_k(x)$ 的加权错误率:

$$ e_k=\sum_{i=1}^{m} w_{k,i} I(G_k(x_i)\ne y_i) $$

弱分类器权重:

$$ \alpha_k=\frac{1}{2}\log \frac{1-e_k}{e_k} $$

含义:

  • $e_k$ 越小,$\alpha_k$ 越大。
  • 分类越准的弱分类器,在最终模型中话语权越大。

样本权重更新:

$$ w_{k+1,i}=\frac{w_{k,i}}{Z_k}\exp(-\alpha_k y_iG_k(x_i)) $$

其中 $Z_k$ 是规范化因子,使新权重仍构成概率分布。

最终分类器:

$$ f(x)=sign\left(\sum_{k=1}^{K}\alpha_kG_k(x)\right) $$

考试重点:

AdaBoost 通过调整样本权重让后续弱分类器更关注前面分错的样本,并通过加权投票组合弱分类器。分类误差越小的弱分类器权重越大。

八、Boosting Tree 与 GBDT

Boosting Tree 是 Boosting 思想与决策树的结合。

核心思想:

  • Boosting 通常采用加法模型。
  • 如果基函数是决策树,就得到提升树。

加法模型形式:

$$ f_M(x)=\sum_{m=1}^{M} h_m(x) $$

其中 $h_m(x)$ 表示第 $m$ 棵树。

回归提升树

回归问题中,提升树的基本流程:

  1. 初始化模型 $f_0(x)=0$ 或初始化为常数预测。
  2. 第 $m$ 轮计算当前模型的残差:

$$ r_{m,i}=y_i-f_{m-1}(x_i) $$

  1. 用残差训练一棵新的回归树 $h_m(x)$。
  2. 更新模型:

$$ f_m(x)=f_{m-1}(x)+h_m(x) $$

  1. 多轮之后得到最终模型:

$$ f_M(x)=\sum_{m=1}^{M}h_m(x) $$

直观理解:

  • 第一棵树先做一个粗略预测。
  • 第二棵树学习第一棵树没预测好的残差。
  • 后面的树继续补前面模型的错误。

GBDT

GBDT 是 Gradient Boosting Decision Tree,即梯度提升决策树。

它把“拟合残差”的思想推广到一般损失函数:

  • 平方损失下,负梯度就是残差。
  • 一般损失下,用损失函数对当前模型的负梯度作为“伪残差”。
  • 每一轮训练一棵 CART 树去拟合负梯度。

基本流程:

  1. 初始化弱学习器。
  2. 对每个样本计算当前损失的负梯度。
  3. 用负梯度构造新的训练目标。
  4. 训练一棵 CART 树。
  5. 计算叶子区域的最佳拟合值。
  6. 更新强学习器。
  7. 重复多轮,得到最终模型。

考试重点:

Boosting Tree 的基本思想是逐步加树,每一棵新树都学习当前模型没有拟合好的部分。平方损失下,新树拟合残差;一般损失下,新树拟合负梯度。

九、Stacking

Stacking 又称 Stacked Generalization,是一种学习法融合策略。

核心思想:

  • 第一层训练多个初级学习器。
  • 用这些初级学习器的预测结果构造新的特征。
  • 第二层训练一个次级学习器,也叫元学习器。
  • 元学习器学习如何融合第一层模型的输出。

流程:

  1. 将训练集划分为 $k$ 份。
  2. 对每个初级模型:
    • 用其中 $k-1$ 份训练。
    • 用剩下 1 份预测。
    • 重复直到每份都被预测一次。
  3. 得到每个训练样本的 out-of-fold 预测结果。
  4. 把多个初级模型的预测结果拼成新的特征。
  5. 用新特征和原标签训练元学习器。
  6. 测试时,先让初级模型预测,再把预测结果输入元学习器。

为什么要用交叉验证构造次级训练集?

  • 如果直接用训练好的初级模型预测原训练集,容易把训练集拟合得太好。
  • 元学习器会学到过于乐观的预测结果,导致过拟合。
  • 用 out-of-fold 预测可以更接近测试时的真实预测表现。

Stacking 的特点:

  • 是异源集成的典型代表,可以融合不同类型模型。
  • 目标是同时降低 bias 和 variance。
  • 元学习器常用 Logistic Regression、CART、Random Forest、XGBoost 等。
  • 重点掌握思想即可:把多个模型的输出当作新特征,再训练一个模型做融合

十、前向分步算法

前向分步算法了解即可。

它用于优化加法模型:

$$ f(x)=\sum_{m=1}^{M}\beta_m b(x;\gamma_m) $$

直接同时优化所有基函数和系数通常很复杂,因此采用分步思想:

  1. 初始化 $f_0(x)=0$。
  2. 每一轮只学习一个新的基函数及其系数。
  3. 把新学到的基函数加到已有模型中。
  4. 逐步逼近整体目标函数。

与 AdaBoost 的关系:

  • AdaBoost 可以看作前向分步加法算法的一个特例。
  • AdaBoost 的基函数是基分类器。
  • AdaBoost 的损失函数是指数损失:

$$ L(y,f(x))=\exp[-yf(x)] $$

考试要求:

前向分步算法只需知道“每次只加一个基学习器,逐步优化加法模型”,不需要深入推导。

十一、Bagging 和 Boosting 的 bias-variance 区别

角度 Bagging Boosting
训练方式 并行 串行
数据处理 自助采样,样本概率基本相同 根据错误调整样本权重
基学习器关系 相互独立或弱相关 后一个依赖前一个
主要作用 降低方差 降低偏差
适合模型 不稳定、高方差模型,如决策树 弱学习器,如浅层树、树桩
代表方法 Random Forest AdaBoost、Boosting Tree、GBDT
过拟合风险 相对较低 迭代过多时可能过拟合

重点理解:

  • Bagging 通过“多个不稳定模型取平均/投票”来稳定结果,所以主要降低方差。
  • Boosting 通过“后续模型修正前面模型错误”来增强拟合能力,所以主要降低偏差。
  • Stacking 通过元学习器学习融合方式,目标可以同时降低偏差和方差。

十二、易错点

  • 集成学习不等于一定有效;基学习器既要有一定准确率,也要有差异性。
  • Bagging 的关键不是串行改错,而是并行采样和聚合。
  • Boosting 的关键不是简单投票,而是逐步关注错误样本。
  • Random Forest 是 Bagging 的代表方法,不是 Boosting。
  • AdaBoost 是 Boosting 的代表方法,核心是样本权重和分类器权重。
  • Boosting Tree 是用决策树作为基学习器的 Boosting 方法。
  • GBDT 中平方损失下拟合残差,一般损失下拟合负梯度。
  • Stacking 的重点是元学习器,不是简单平均。
  • Stacking 训练元学习器时通常要用交叉验证生成 out-of-fold 预测,避免过拟合。
  • Bagging 主要降方差,Boosting 主要降偏差,不要反过来。

十三、考试中可以这样写

集成学习是一类通过组合多个基学习器来提升泛化性能的方法。单个模型由于假设空间、训练数据、优化稳定性和 bias-variance 权衡等限制,性能往往有限。集成学习通过提高模型多样性并进行投票、平均或学习式融合,使多个模型的错误相互抵消,从而提升整体预测效果。

Bagging 是并行式集成方法,通过自助采样训练多个基学习器,再用投票或平均得到最终结果,主要作用是降低方差,代表方法是随机森林。随机森林在 Bagging 的基础上进一步引入特征随机选择,使树之间差异更大,从而提升稳定性和泛化能力。

Boosting 是串行式集成方法,后一个基学习器依赖前一个基学习器的结果,重点关注前面预测错误的样本,逐步把弱学习器提升为强学习器,主要作用是降低偏差。AdaBoost 通过调整样本权重和弱分类器权重进行加权投票;Boosting Tree 则用决策树作为基学习器,每一棵新树学习当前模型尚未拟合好的部分。

Stacking 是一种多模型融合思想,它把多个初级学习器的预测结果作为新的特征,再训练一个元学习器进行融合。它可以融合异构模型,目标是同时利用不同模型的优势,降低泛化误差。

十四、速记版

  • 集成学习:多个模型一起决策,提高泛化。
  • 单个模型有限:表达能力、数据、噪声、优化和偏差-方差限制。
  • 好集成需要:基学习器准确,并且错误有差异。
  • Bagging:有放回采样,并行训练,投票/平均,主要降方差。
  • Random Forest:Bagging + 决策树 + 特征随机选择。
  • Boosting:串行训练,后面模型改前面错误,主要降偏差。
  • AdaBoost:错样本权重变大,好分类器权重变大。
  • Boosting Tree:用树做 Boosting,每棵树补前面模型的残差或负梯度。
  • GBDT:一般损失下拟合负梯度,平方损失下拟合残差。
  • Stacking:多个模型输出变新特征,再训练元学习器融合。
  • 前向分步算法:每次只加一个基函数,逐步优化加法模型,了解即可。

10. 聚类 Clustering

一、整体思想

聚类是典型的无监督学习任务。它没有事先给定类别标签,而是根据样本之间的相似性或距离,把数据划分成若干簇。

核心目标:

  • 同一簇内部样本尽量相似。
  • 不同簇之间样本尽量不相似。

一个好的聚类结果通常满足:

  • 簇内相似度高:intra-cluster similarity 高。
  • 簇间相似度低:inter-cluster similarity 低。

注意:聚类没有绝对标准。聚类结果好不好,往往依赖用户关注的特征和实际应用场景。

例如同一批图形:

  • 按颜色可以得到一种聚类。
  • 按形状可以得到另一种聚类。
  • 按大小或顶点数又可以得到其他聚类。

所以聚类的关键是:

  • 特征选取是否合适。
  • 距离度量是否合适。
  • 聚类准则是否符合任务目标。

二、基本概念

给定样本集合:

$$ D={x_1,x_2,\dots,x_m},\quad x_i\in \mathbb{R}^d $$

希望把它划分为 $k$ 个簇:

$$ C_1,C_2,\dots,C_k $$

通常要求:

$$ C_i\cap C_j=\varnothing,\quad i\ne j $$

$$ D=\bigcup_{i=1}^{k} C_i $$

聚类分析的依据:

  • 把每个样本看成特征空间中的一个点。
  • 点与点之间的距离表示差异。
  • 距离越近,越可能属于同一簇。
  • 距离越远,越可能属于不同簇。

三、距离度量

聚类必须先定义“相似”或“不相似”。

常见距离或相似度:

度量 形式 适用理解
欧氏距离 $|x_i-x_j|_2$ 最常用,适合连续数值特征
曼哈顿距离 $|x_i-x_j|_1$ 按各维绝对差累加
切比雪夫距离 $|x_i-x_j|_\infty$ 取各维差异最大值
闵可夫斯基距离
$\left(\sum_{l=1}^{d}\left|x_{il}-x_{jl}\right|^p\right)^{\frac{1}{p}}$
欧氏和曼哈顿的推广
余弦相似度 $\frac{x_i^Tx_j}{|x_i||x_j|}$ 关注方向相似,常用于文本/高维向量
马氏距离 $\sqrt{(x_i-x_j)^TM^{-1}(x_i-x_j)}$ 考虑特征相关性和尺度

易错点:

  • 距离度量不同,聚类结果可能完全不同。
  • 使用欧氏距离时通常要做标准化,否则量纲大的特征会主导结果。
  • 聚类效果很依赖特征设计;特征不好,算法再复杂也可能聚不好。

四、聚类准则

聚类准则用来判断一个聚类结果是否好。

常见思想:

  • 类内距离小。
  • 类间距离大。
  • 或者簇内相似度高、簇间相似度低。

K-means 使用的典型准则是最小化簇内平方误差和:

$$ J=\sum_{j=1}^{k}\sum_{x\in C_j}|x-\mu_j|^2 $$

其中:

  • $C_j$ 表示第 $j$ 个簇。
  • $\mu_j$ 表示第 $j$ 个簇的中心。
  • $J$ 越小,说明样本越靠近自己的簇中心。

五、聚类方法分类

课件中聚类方法主要包括:

方法类型 核心思想 代表方法 掌握程度
原型聚类 用一组原型刻画聚类结构 K-means、ISODATA、GMM 重点
密度聚类 根据样本分布紧密程度扩展簇 DBSCAN、OPTICS、DENCLUE 了解
层次聚类 逐步合并或拆分类 AGNES 了解
基于图的方法 把样本看成图节点,根据边权划分图 谱聚类等 了解

老师强调:K-means、ISODATA、高斯混合聚类在实际中出现频率较高,需要重点掌握。

六、K-means

K-means 是最经典的原型聚类算法。

核心思想:

  • 每个簇用一个中心点表示。
  • 样本归到最近的中心。
  • 中心更新为簇内样本均值。
  • 不断重复“分配样本”和“更新中心”,直到收敛。

算法流程:

  1. 选择聚类数量 $k$。
  2. 初始化 $k$ 个聚类中心:

$$ \mu_1,\mu_2,\dots,\mu_k $$

  1. 对每个样本 $x_i$,计算它到每个中心的距离,把它分到最近的中心所属簇:

$$ c_i=\arg\min_j |x_i-\mu_j|^2 $$

  1. 对每个簇重新计算中心:

$$ \mu_j=\frac{1}{|C_j|}\sum_{x_i\in C_j}x_i $$

  1. 如果样本所属簇不再变化,或目标函数变化很小,则停止;否则回到第 3 步。

K-means 优化目标:

$$ \min_{C_1,\dots,C_k}\sum_{j=1}^{k}\sum_{x_i\in C_j}|x_i-\mu_j|^2 $$

重点理解:

  • K-means 是迭代优化算法。
  • 分配样本时固定中心。
  • 更新中心时固定样本归属。
  • 每一步都会使目标函数不增大,但只能保证收敛到局部最优。

适用场景:

  • 聚类数 $k$ 大致已知。
  • 簇接近球形或凸形。
  • 簇之间分离较明显。
  • 特征为连续数值型,并且距离度量有意义。

缺点:

  • 需要预先指定 $k$。
  • 对初始中心敏感。
  • 对离群点敏感。
  • 不适合非凸形状的簇。
  • 不适合大小、密度差异很大的簇。

七、K-means++

K-means++ 是 K-means 的初始化改进方法。

基本思想:

初始聚类中心之间应该尽量分散。

如果初始中心太近,K-means 容易陷入较差的局部最优;K-means++ 用概率方式让后续中心更倾向于选在远离已有中心的位置。

算法流程:

  1. 从数据集中随机选择一个样本作为第一个初始中心 $c_1$。
  2. 对每个样本 $x$,计算它到当前已有中心的最近距离:

$$ D(x)=\min_{c\in C}|x-c| $$

  1. 按如下概率选择下一个中心:

$$ P(x)=\frac{D(x)^2}{\sum_{x'\in D}D(x')^2} $$

  1. 重复第 2-3 步,直到选出 $k$ 个初始中心。
  2. 后续过程与普通 K-means 相同。

重点掌握:

  • K-means++ 不是新的聚类目标函数。
  • 它主要改进 K-means 的初始中心选择。
  • 距离已有中心越远的样本,被选为新中心的概率越大。
  • 它通常能让 K-means 更稳定、收敛更好。

八、ISODATA

ISODATA 全称 Iterative Self-organizing Data Analysis Techniques,即迭代自组织数据分析算法。

它可以理解为:在 K-means 的基础上加入簇的分裂与合并机制

K-means 通常要求类别数 $k$ 已知,而 ISODATA 更灵活:

  • 如果某些簇太小,可以丢弃。
  • 如果两个簇中心太近,可以合并。
  • 如果某个簇内部太分散,可以分裂。

基本流程:

  1. 选择初始参数和初始聚类中心。
  2. 将每个样本分配到最近的聚类中心。
  3. 检查每个簇的样本数;如果某簇样本数小于阈值 $N_{min}$,可丢弃该簇,并重新分配样本。
  4. 重新计算每个簇中心。
  5. 根据当前簇数和簇内分散程度,决定是否分裂。
  6. 根据簇中心之间距离,决定是否合并。
  7. 重复迭代,直到收敛或达到最大迭代次数。

合并操作

当两个簇中心距离小于给定阈值 $d_{min}$ 时,可以合并。

设两个簇样本数分别为 $n_i,n_j$,中心分别为 $m_i,m_j$,合并后的新中心为:

$$ m_{new}=\frac{n_i m_i+n_j m_j}{n_i+n_j} $$

直观理解:

  • 两个簇太近,说明它们可能本来就是同一类。
  • 合并后中心是按样本数加权的均值。

分裂操作

当某个簇内部方差太大,并且样本数足够多时,可以分裂。

基本做法:

  • 计算该簇在各个属性维度上的方差。
  • 找到最大方差方向。
  • 如果最大方差超过阈值 $\sigma$,且样本数满足要求,则沿该方向把中心正负偏移,生成两个新中心。

直观理解:

  • 一个簇太散,说明它可能包含多个真实簇。
  • 沿最分散的方向拆开,得到更合理的聚类结构。

ISODATA 与 K-means 的区别:

角度 K-means ISODATA
聚类数 通常固定为 $k$ 可通过分裂/合并动态调整
核心操作 分配样本、更新均值 分配、更新、丢弃、分裂、合并
灵活性 较低 较高
参数数量 较少 较多
实用问题 初始中心和 $k$ 敏感 参数较多,不易设定

考试重点:

ISODATA 与 K-means 类似,都通过样本均值迭代更新聚类中心;不同点是 ISODATA 增加了分裂和合并操作,可以根据类别实际情况调整聚类中心数。

九、高斯混合聚类 GMM

高斯混合聚类使用概率模型表达聚类原型。

K-means 是“硬聚类”:

  • 每个样本只属于一个簇。
  • 样本归属是 0 或 1。

GMM 是“软聚类”:

  • 每个样本可以以不同概率属于多个高斯成分。
  • 输出的是后验概率,也叫责任度。

高斯混合分布:

$$ p(x)=\sum_{i=1}^{k}\alpha_i p(x|\mu_i,\Sigma_i) $$

其中:

  • $k$ 是高斯成分个数。
  • $\alpha_i$ 是第 $i$ 个高斯成分的混合系数。
  • $\alpha_i\ge 0$。
  • $\sum_{i=1}^{k}\alpha_i=1$。
  • $\mu_i$ 是第 $i$ 个高斯分布的均值。
  • $\Sigma_i$ 是第 $i$ 个高斯分布的协方差矩阵。

样本 $x_j$ 由第 $i$ 个高斯成分生成的后验概率:

$$ \gamma_{ji} =P(z_j=i|x_j) =\frac{\alpha_i p(x_j|\mu_i,\Sigma_i)} {\sum_{l=1}^{k}\alpha_l p(x_j|\mu_l,\Sigma_l)} $$

理解:

  • $\gamma_{ji}$ 表示第 $i$ 个高斯成分对样本 $x_j$ 的责任度。
  • 责任度越大,说明该样本越可能来自这个高斯成分。
  • 聚类时可以把样本分到责任度最大的成分,也可以保留软分配概率。

GMM 参数通常用 EM 算法估计:

  • E 步:根据当前参数计算每个样本属于每个高斯成分的后验概率。
  • M 步:根据后验概率更新 $\alpha_i,\mu_i,\Sigma_i$。

GMM 与 K-means 对比:

角度 K-means GMM
模型思想 距离中心最近 概率生成模型
聚类方式 硬聚类 软聚类
簇形状 倾向球形 可通过协方差刻画椭圆形
输出 类别编号 属于各成分的概率
参数 中心 $\mu$ 混合系数、均值、协方差
优点 简单、快 表达能力更强
缺点 对形状假设强 参数估计更复杂

考试重点:

高斯混合聚类假设数据由多个高斯分布混合生成,每个高斯成分对应一个潜在簇。对样本进行聚类时,计算它属于每个高斯成分的后验概率,并根据概率进行软分配。

十、聚类性能评价指标

聚类评价没有统一绝对标准,通常分为外部指标和内部指标。

1. 外部指标

外部指标需要有参考标签或参考模型。

常见外部指标:

  • Cluster Accuracy,CA,聚类准确率。
  • Rand Index,RI,兰德指数。
  • Adjusted Rand Index,ARI,调整兰德指数。
  • Mutual Information,MI,互信息。
  • Normalized Mutual Information,NMI,归一化互信息。
  • Jaccard 系数。
  • FM 指数。

适用场景:

  • 已经知道真实类别标签。
  • 想比较聚类结果和真实标签是否一致。

理解:

  • RI/ARI 关注样本对关系是否一致。
  • MI/NMI 关注聚类结果和真实标签共享了多少信息。
  • ARI 相比 RI 做了随机校正,更适合比较不同聚类结果。
  • NMI 对互信息做归一化,便于比较。

2. 内部指标

内部指标不需要真实标签,直接根据聚类结果自身评价。

核心思想:

  • 类内越紧凑越好。
  • 类间越分散越好。

常见内部指标:

指标 含义 趋势
Compactness,CP 紧密度,衡量簇内距离 越小越好
Separation,SP 间隔度,衡量簇间距离 越大越好
Davies-Bouldin Index,DBI 同时考虑类内紧密和类间分离 越小越好
Dunn Validity Index,DVI 最小类间距离 / 最大类内距离 越大越好

CP 紧密度:

  • 衡量簇内样本到簇中心的距离。
  • CP 越小,说明类内越紧凑。
  • 缺点:只考虑类内,没有考虑类间分离。

SP 间隔度:

  • 衡量不同簇中心之间的距离。
  • SP 越大,说明类间越分散。
  • 缺点:只考虑类间,没有考虑类内紧密。

DBI:

  • 同时考虑簇内紧密度和簇间距离。
  • DBI 越小,说明类内越紧凑、类间越分散。
  • 缺点:通常依赖欧氏距离,对环状等非凸分布评价可能不好。

DVI:

  • 用最小类间距离除以最大类内距离。
  • DVI 越大越好。
  • 缺点:对离散点敏感,对环状分布评价也可能不理想。

考试重点:

聚类评价的基本思想是簇内相似度高、簇间相似度低。外部指标需要参考标签,如 RI、ARI、MI、NMI;内部指标不需要参考标签,如 CP、SP、DBI、DVI。

十一、了解即可:DBSCAN

DBSCAN 是基于密度的聚类方法。

核心思想:

  • 聚类结构由样本分布的紧密程度决定。
  • 从高密度区域开始扩展簇。
  • 能发现任意形状的簇。
  • 能识别噪声点。

关键概念:

  • $\epsilon$-邻域:距离某样本不超过 $\epsilon$ 的样本集合。
  • MinPts:邻域内至少需要多少样本。
  • 核心对象:$\epsilon$-邻域内样本数不少于 MinPts 的点。
  • 密度直达:一个点在核心对象的 $\epsilon$-邻域内。
  • 密度可达:通过一串密度直达关系可以到达。
  • 密度相连:两个点都可由某个共同点密度可达。

优点:

  • 不需要预先指定簇数。
  • 可以发现非球形簇。
  • 可以处理噪声。

缺点:

  • 对 $\epsilon$ 和 MinPts 敏感。
  • 不适合密度差异很大的数据。
  • 高维数据中距离和密度判断可能不可靠。

十二、了解即可:层次聚类

层次聚类通过逐步合并或拆分形成树状聚类结构。

课件重点是凝聚式层次聚类 AGNES。

AGNES 流程:

  1. 初始时,每个样本自成一簇。
  2. 计算簇与簇之间的距离。
  3. 合并最近的两个簇。
  4. 更新距离矩阵。
  5. 重复直到达到目标簇数,或所有样本合成一个簇。

簇间距离常见定义:

  • 最短距离法:两个簇中任意样本对的最小距离。
  • 最长距离法:两个簇中任意样本对的最大距离。
  • 类平均距离法:两个簇所有样本对距离的平均值。

理解即可:

  • 层次聚类能形成树形结构。
  • 不同距离准则会得到不同结果。
  • 计算量通常较大,不适合特别大规模数据。

十三、了解即可:基于密度或基于图的方法

基于密度的方法:

  • 典型代表:DBSCAN、OPTICS、DENCLUE。
  • 通过样本局部密度和可连接关系扩展簇。
  • 适合发现非凸形状簇。

基于图的方法:

  • 把样本看成图中的节点。
  • 节点之间的边权表示相似度。
  • 聚类问题转化为图划分问题。
  • 谱聚类是典型代表。

了解重点:

  • 基于图的方法强调样本之间的连接结构。
  • 它不只看中心点距离,而是看整体相似图结构。
  • 通常用于非线性结构较明显的数据。

十四、易错点

  • 聚类是无监督学习,类别标签不是事先给定的。
  • 聚类结果没有唯一绝对标准,取决于特征、距离和任务需求。
  • K-means 需要预先指定 $k$。
  • K-means 对初始中心敏感,K-means++ 是为了解决初始化问题。
  • K-means++ 不是“拼命史佳佳”,也不是另一种完全不同的聚类模型。
  • ISODATA 的关键是分裂和合并,可以动态调整类别数。
  • GMM 是软聚类,K-means 是硬聚类。
  • GMM 中每个高斯成分不一定严格等同于真实类别,但常被用作潜在簇。
  • 外部评价指标需要真实标签,内部评价指标不需要真实标签。
  • CP 越小越好,SP 越大越好,DBI 越小越好,DVI 越大越好。

十五、考试中可以这样写

聚类是一类无监督学习方法,它根据样本之间的相似性或距离,将数据划分为若干簇。一个好的聚类结果通常要求簇内相似度高、簇间相似度低。聚类效果强烈依赖特征选择、距离度量和聚类准则,因此不存在适用于所有任务的绝对标准。

K-means 是典型原型聚类方法。它先指定聚类数 $k$ 并初始化聚类中心,然后反复执行两个步骤:将样本分配给最近的聚类中心,并把每个簇的中心更新为簇内样本均值。K-means 简单高效,但对初始中心、离群点和 $k$ 的选择敏感。K-means++ 通过让初始中心尽量分散来改进初始化。

ISODATA 与 K-means 类似,也通过样本均值更新聚类中心,但它增加了簇的分裂和合并机制,因此可以根据聚类结果动态调整类别数。高斯混合聚类使用多个高斯分布成分来刻画数据分布,每个样本以一定后验概率属于不同成分,是一种软聚类方法,参数通常通过 EM 算法估计。

聚类评价指标分为外部指标和内部指标。外部指标需要参考标签,如 RI、ARI、MI、NMI;内部指标直接根据聚类结果评价,如 CP、SP、DBI、DVI。评价的共同思想是类内尽量紧凑、类间尽量分离。

十六、速记版

  • 聚类:无标签分组,簇内相似、簇间不同。
  • 聚类关键:特征、距离、准则。
  • K-means:选 $k$,初始化中心,分配样本,更新均值,直到收敛。
  • K-means++:让初始中心尽量分散,改善 K-means 初始化。
  • ISODATA:K-means + 分裂 + 合并,类别数更灵活。
  • GMM 聚类:多个高斯成分生成数据,样本按后验概率软分配。
  • DBSCAN:按密度扩展簇,可发现噪声和非球形簇,了解即可。
  • 层次聚类:从每点一簇开始逐步合并,形成树形结构,了解即可。
  • 外部指标:CA、RI、ARI、MI、NMI,需要真实标签。
  • 内部指标:CP、SP、DBI、DVI,不需要真实标签。

11. 高斯混合模型 GMM 与 EM

一、为什么单一分布不足以刻画复杂数据?

单一高斯分布通常只能描述一个比较简单的“单峰”数据分布。

单个高斯分布由均值和协方差决定:

  • 均值 $\mu$ 决定分布中心位置。
  • 协方差 $\Sigma$ 决定分布的尺度、方向和形状。

但实际数据往往更复杂:

  • 可能有多个中心。
  • 可能有多个子群体。
  • 可能不是单峰分布。
  • 不同区域的方差、方向、密度可能不同。

例如所有人的身高可能近似一个高斯分布,但如果把不同性别、不同年龄段、不同群体混在一起,整体分布就可能不再适合用一个高斯分布描述。

因此,单一高斯分布的表达能力有限。

二、GMM 如何刻画复杂分布?

GMM 的核心思想:

用多个高斯分布的加权和来刻画复杂数据分布。

高斯混合模型:

$$ p(x)=\sum_{i=1}^{K}\alpha_i \mathcal{N}(x|\mu_i,\Sigma_i) $$

其中:

  • $K$ 是高斯成分个数。
  • $\alpha_i$ 是第 $i$ 个高斯成分的权重。
  • $\alpha_i\ge 0$。
  • $\sum_{i=1}^{K}\alpha_i=1$。
  • $\mathcal{N}(x|\mu_i,\Sigma_i)$ 是第 $i$ 个高斯分布。

直观理解:

  • 每个高斯分布负责刻画数据中的一个局部模式。
  • 多个高斯分布叠加后,可以形成更复杂的整体分布。
  • 权重 $\alpha_i$ 表示第 $i$ 个成分在整体分布中的占比。

GMM 的生成过程:

  1. 先从离散分布中选择一个隐藏成分 $z$:

$$ P(z=i)=\alpha_i $$

  1. 再从对应的高斯分布中生成样本:

$$ x\sim \mathcal{N}(\mu_i,\Sigma_i) $$

这里:

  • $x$ 是可观测变量。
  • $z$ 是隐藏变量,表示样本来自哪个高斯成分。

三、GMM 的参数

GMM 需要估计三类参数:

参数 含义
$\alpha_i$ 第 $i$ 个高斯成分的混合权重
$\mu_i$ 第 $i$ 个高斯成分的均值
$\Sigma_i$ 第 $i$ 个高斯成分的协方差矩阵

如果知道每个样本来自哪个高斯成分,参数估计会很简单:

  • $\alpha_i$:来自第 $i$ 个成分的样本比例。
  • $\mu_i$:这些样本的均值。
  • $\Sigma_i$:这些样本的协方差。

但现实中通常不知道样本来自哪个成分,也就是隐藏变量 $z$ 未知,所以需要 EM 算法。

四、最大似然估计 MLE

最大似然估计的思想:

选择一组参数,使观测数据在该模型下出现的概率最大。

给定样本 $X={x_1,x_2,\dots,x_m}$,GMM 的似然函数为:

$$ L(\theta)=\prod_{j=1}^{m}p(x_j|\theta) $$

通常使用对数似然:

$$ \log L(\theta)=\sum_{j=1}^{m}\log p(x_j|\theta) $$

对 GMM:

$$ \log L(\theta)=\sum_{j=1}^{m} \log \left(\sum_{i=1}^{K}\alpha_i\mathcal{N}(x_j|\mu_i,\Sigma_i)\right) $$

难点:

  • 对数里面有求和。
  • 样本来自哪个高斯成分未知。
  • 无法像单高斯分布那样直接求闭式解。

这就是 EM 算法要解决的问题。

五、EM 算法的基本思想

EM 是 Expectation-Maximization,即期望最大化算法。

适用场景:

  • 模型中有无法直接观测的隐藏变量。
  • 直接最大化似然函数比较困难。
  • 如果隐藏变量已知,参数估计会变简单。

核心思想:

在不知道隐藏变量的情况下,先用当前参数估计隐藏变量的分布,再用估计出的隐藏变量分布更新参数,如此反复迭代。

EM 包含两步:

E-Step

E-Step:Expectation Step,期望步。

作用:

  • 固定当前模型参数。
  • 根据当前参数计算隐藏变量的后验概率。
  • 在 GMM 中,就是计算每个样本属于每个高斯成分的概率。

对样本 $x_j$,它属于第 $i$ 个高斯成分的后验概率为:

$$ \gamma_{ji} =P(z_j=i|x_j) =\frac{\alpha_i\mathcal{N}(x_j|\mu_i,\Sigma_i)} {\sum_{l=1}^{K}\alpha_l\mathcal{N}(x_j|\mu_l,\Sigma_l)} $$

这里 $\gamma_{ji}$ 也叫责任度。

M-Step

M-Step:Maximization Step,最大化步。

作用:

  • 固定 E 步得到的责任度。
  • 用这些软分配结果重新估计模型参数。

令:

$$ N_i=\sum_{j=1}^{m}\gamma_{ji} $$

则参数更新为:

$$ \alpha_i=\frac{N_i}{m} $$

$$ \mu_i=\frac{1}{N_i}\sum_{j=1}^{m}\gamma_{ji}x_j $$

$$ \Sigma_i=\frac{1}{N_i}\sum_{j=1}^{m}\gamma_{ji}(x_j-\mu_i)(x_j-\mu_i)^T $$

直观理解:

  • $\gamma_{ji}$ 越大,样本 $x_j$ 对第 $i$ 个高斯成分参数更新的影响越大。
  • 均值和协方差不是用硬分类样本计算,而是用责任度加权计算。

六、EM 算法流程

  1. 初始化参数:

$$ \theta^{(0)}={\alpha_i,\mu_i,\Sigma_i}_{i=1}^{K} $$

  1. E 步:用当前参数计算每个样本属于每个高斯成分的后验概率 $\gamma_{ji}$。
  2. M 步:用 $\gamma_{ji}$ 更新 $\alpha_i,\mu_i,\Sigma_i$。
  3. 重复 E 步和 M 步。
  4. 当对数似然变化很小或达到最大迭代次数时停止。

重要性质:

  • 每轮 EM 通常不会降低似然函数。
  • EM 可能收敛到局部最优。
  • EM 对初始化敏感。
  • GMM 中高斯成分个数 $K$ 需要人为指定或通过模型选择确定。

七、K-means 与 EM 的关系

K-means 可以看作一种带有 EM 思想的算法。

对应关系:

K-means EM/GMM 视角
样本 $x$ 可观测变量
簇标签 隐藏变量
聚类中心 $\mu$ 模型参数
分配样本到最近中心 E 步
更新簇中心为均值 M 步

区别:

  • K-means 是硬分配,每个样本只属于一个簇。
  • GMM/EM 是软分配,每个样本对多个成分都有责任度。
  • K-means 常对应协方差相同、形状较简单的特殊情况。
  • GMM 表达能力更强,可以刻画不同形状和方差的簇。

八、易错点

  • GMM 不是一个高斯分布,而是多个高斯分布的加权和。
  • 混合系数 $\alpha_i$ 必须非负,并且总和为 1。
  • GMM 中的 $z$ 是隐藏变量,表示样本来自哪个高斯成分。
  • EM 不是只用于 GMM,而是用于含隐藏变量的参数估计问题。
  • E 步估计隐藏变量后验概率,M 步更新模型参数。
  • GMM 聚类是软聚类,K-means 是硬聚类。
  • EM 只能保证逐步改进似然,不能保证找到全局最优。
  • 本章重点掌握思想,不需要花太多时间推复杂理论证明。

九、考试中可以这样写

单一高斯分布只能刻画较简单的单峰分布,而实际数据往往包含多个子群体或多个局部模式,因此单一分布表达能力不足。高斯混合模型用多个高斯分布的加权和来表示复杂分布,每个高斯成分刻画一个局部结构,混合权重表示该成分在整体数据中的占比。

GMM 可以看成一个含隐藏变量的生成模型。生成样本时,先根据混合系数选择一个高斯成分,再从该高斯分布中采样得到观测样本。由于实际训练数据中不知道每个样本来自哪个高斯成分,因此需要用 EM 算法估计参数。

EM 算法是一种处理隐藏变量模型的迭代方法。E 步在当前参数下计算隐藏变量的后验概率,在 GMM 中就是计算每个样本属于各个高斯成分的概率;M 步固定这些后验概率,重新估计混合权重、均值和协方差。反复执行 E 步和 M 步,直到模型收敛。

十、速记版

  • 单高斯:只能描述简单单峰分布。
  • GMM:多个高斯分布加权相加,刻画复杂分布。
  • $\alpha_i$:第 $i$ 个成分的权重。
  • $\mu_i$:第 $i$ 个成分的中心。
  • $\Sigma_i$:第 $i$ 个成分的形状和方向。
  • 隐变量 $z$:样本来自哪个高斯成分。
  • E 步:算每个样本属于各成分的概率。
  • M 步:用这些概率加权更新参数。
  • EM:E/M 两步反复迭代,直到收敛。
  • GMM vs K-means:GMM 软分配,K-means 硬分配。

12. 神经网络 Neural Networks

一、整体思想

神经网络可以看成由大量可学习的函数模块组合而成的模型。

核心思想:

  • 单个神经元完成一次“加权求和 + 非线性变换”。
  • 多个神经元组成一层。
  • 多层堆叠形成复杂函数。
  • 训练时通过损失函数衡量预测误差,再用反向传播计算梯度并更新参数。

神经网络学习的是一个复合函数:

$$ f(x)=f_L(f_{L-1}(\cdots f_1(x))) $$

每一层都有参数,训练目标是找到一组参数,使损失函数尽可能小。

本章重点抓住四件事:

  • 神经元和网络结构。
  • 前向传播如何算输出。
  • 反向传播如何算梯度。
  • CNN 为什么适合图像,以及参数量怎么算。

二、MP 神经元基本结构

MP 神经元是最早的人工神经元数学模型。

一个神经元包含:

  • 输入:$x_1,x_2,\dots,x_d$。
  • 权重:$w_1,w_2,\dots,w_d$。
  • 偏置:$b$。
  • 加权求和:$z=\sum_i w_i x_i+b$。
  • 激活函数:$a=f(z)$。
  • 输出:$a$。

也可以把偏置写成一个固定输入:

$$ x_0=1,\quad w_0=b $$

则:

$$ z=\sum_{i=0}^{d}w_i x_i $$

$$ a=f(z) $$

MP 神经元的直观对应:

  • 输入相当于树突接收信号。
  • 权重相当于突触连接强度。
  • 加权求和相当于细胞体整合信号。
  • 激活函数决定是否“放电”。

早期 MP 模型常用阈值函数:

$$ g(z)= \begin{cases} 1, & z>0\ 0, & z\le 0 \end{cases} $$

例如逻辑与、逻辑或都可以用合适权重和偏置表示。

MP 神经元的局限:

  • 输入只是线性求和,表达能力有限。
  • 输出形式简单。
  • 单个神经元只能表达简单决策边界。
  • 对 XOR 这类非线性可分问题无能为力。

三、多层神经网络

单层感知机只能解决线性可分问题。多层神经网络通过隐藏层引入非线性表示,可以解决更复杂的问题。

多层感知机 MLP 通常包含:

  • 输入层:接收原始特征。
  • 隐藏层:学习中间特征表示。
  • 输出层:给出最终预测。

多层前馈神经网络的特点:

  • 包含一个或多个隐藏层。
  • 信息从输入层逐层传到输出层。
  • 同层神经元之间通常没有连接。
  • 不存在从后层到前层的反馈连接。

隐藏层的作用:

  • 隐藏层神经元可以看作特征检测器。
  • 它们把原始输入变换到新的特征空间。
  • 多层组合可以表达复杂的非线性函数。

重要结论:

只要隐藏层神经元足够多,多层前馈神经网络可以以任意精度逼近连续函数。

但实际中:

  • 隐藏层数怎么选没有固定答案。
  • 每层神经元数怎么选也没有固定答案。
  • 常用验证集和试错法调整结构。

四、激活函数

激活函数的作用:引入非线性

如果没有激活函数,多层线性变换叠加仍然等价于一个线性变换,网络再深也无法表达复杂非线性关系。

常见激活函数:

激活函数 公式 特点
阶跃函数 $I(x\ge 0)$ 早期感知机使用,不连续、不可微
Sigmoid $\frac{1}{1+e^{-x}}$ 输出在 $(0,1)$,可微,但易梯度消失
tanh $\tanh(x)$ 输出在 $(-1,1)$,零中心,也可能饱和
ReLU $\max(0,x)$ 简单高效,缓解梯度消失
Leaky ReLU/PReLU $x$ 或 $ax$ 负半轴保留小梯度
ELU $x$ 或 $a(e^x-1)$ 负半轴更平滑
Maxout $\max(w_1x+b_1,w_2x+b_2)$ 表达能力强,参数更多

Sigmoid:

$$ \sigma(x)=\frac{1}{1+e^{-x}} $$

导数必须会:

$$ \sigma'(x)=\sigma(x)(1-\sigma(x)) $$

ReLU:

$$ ReLU(x)=\max(0,x) $$

导数:

$$ ReLU'(x)= \begin{cases} 1, & x>0\ 0, & x<0 \end{cases} $$

重点理解:

  • Sigmoid/tanh 是饱和激活函数,输入很大或很小时导数接近 0,容易梯度消失。
  • ReLU 是非饱和激活函数,计算简单,训练深层网络更常用。
  • 激活函数必须可用于梯度计算,否则反向传播无法顺利进行。

五、如何构造神经网络

构造神经网络一般按任务从后往前确定。

基本步骤:

  1. 确定输入形式:
    • 表格数据:输入维度为特征数 $d$。
    • 图像:输入形状为 $H\times W\times C$。
    • 文本/序列:输入为 token 序列或向量序列。
  2. 确定输出形式:
    • 二分类:1 个输出或 2 个输出。
    • 多分类:类别数 $K$ 个输出,通常接 Softmax。
    • 回归:输出维度等于预测目标维度。
  3. 选择网络层:
    • 表格数据常用全连接层。
    • 图像数据常用卷积层、池化层、全连接层。
    • 序列数据可用 RNN、Transformer 等。
  4. 选择激活函数:
    • 隐藏层常用 ReLU 系列。
    • 输出层根据任务选 Sigmoid、Softmax 或线性输出。
  5. 选择损失函数:
    • 回归:均方误差 MSE。
    • 二分类:二元交叉熵。
    • 多分类:交叉熵。
  6. 用前向传播计算输出。
  7. 用反向传播计算梯度。
  8. 用优化器更新参数。

常见输出层选择:

任务 输出层 损失函数
回归 线性输出 MSE
二分类 Sigmoid Binary Cross Entropy
多分类 Softmax Cross Entropy

六、全连接网络参数量计算

全连接层中,每个输出神经元都连接到上一层所有输入。

若上一层有 $n_{in}$ 个单元,当前层有 $n_{out}$ 个单元,则:

  • 权重参数:$n_{in}\times n_{out}$。
  • 偏置参数:$n_{out}$。
  • 总参数:

$$ (n_{in}+1)n_{out} $$

多层全连接网络总参数量:

$$ \sum_{l=1}^{L}(n_{l-1}+1)n_l $$

其中 $n_{l-1}$ 是上一层宽度,$n_l$ 是当前层宽度。

例 1:

输入 100 维,隐藏层 50 个神经元,输出 10 类。

第一层参数:

$$ (100+1)\times 50=5050 $$

第二层参数:

$$ (50+1)\times 10=510 $$

总参数:

$$ 5050+510=5560 $$

例 2:图像全连接很容易爆炸。

一张 $1000\times1000$ 灰度图像有:

$$ 1000\times1000=10^6 $$

个输入。如果连接到 $10^6$ 个隐藏单元,全连接权重数量约为:

$$ 10^6\times 10^6=10^{12} $$

参数量极大,训练和存储都非常困难。

七、CNN 为什么比全连接网络更适合图像

图像具有两个重要结构:

  • 局部性:相邻像素关系最强,局部区域能形成边缘、纹理、角点等特征。
  • 平移不变性:同一个局部模式出现在图像不同位置,含义通常相近。

全连接网络的问题:

  • 每个像素都连接到每个隐藏单元,参数量巨大。
  • 没有利用图像的局部空间结构。
  • 同一个图案出现在不同位置,需要重复学习。
  • 容易过拟合,计算开销大。

CNN 的关键设计:

  1. 局部连接:每个卷积核只看局部区域。
  2. 参数共享:同一个卷积核在整张图像上滑动,共用一组参数。
  3. 多过滤器:不同卷积核学习不同特征。
  4. 层次化特征:浅层学边缘纹理,深层学部件和语义。
  5. 池化/下采样:降低空间尺寸,扩大感受野,缓解过拟合。

课件中的参数量对比:

  • $1000\times1000$ 图像连接到 $10^6$ 个隐藏单元,全连接约 $10^{12}$ 个参数。
  • 若只做 $10\times10$ 局部连接,约 $10^8$ 个连接参数。
  • 若使用 $10\times10$ 卷积核并共享参数,100 个 filters 只有:

$$ 10\times10\times100=10000 $$

个卷积核参数,不含偏置。

结论:

CNN 通过局部连接和参数共享大幅减少参数量,同时更符合图像的局部结构和平移不变性,因此比全连接网络更适合图像任务。

八、CNN 参数量计算

卷积层参数量只和卷积核大小、输入通道数、输出通道数有关,和输入图像的高宽无关。

设:

  • 卷积核大小为 $K_h\times K_w$。
  • 输入通道数为 $C_{in}$。
  • 输出通道数为 $C_{out}$,也就是 filter 个数。
  • 每个输出通道有一个 bias。

卷积层参数量:

$$ (K_hK_wC_{in}+1)C_{out} $$

不计 bias 时:

$$ K_hK_wC_{in}C_{out} $$

例 1:

输入为 RGB 图像,$C_{in}=3$,卷积核 $3\times3$,输出通道 $96$。

不计 bias:

$$ 3\times3\times3\times96=2592 $$

计 bias:

$$ (3\times3\times3+1)\times96=2688 $$

例 2:

输入通道 $64$,卷积核 $3\times3$,输出通道 $128$。

计 bias:

$$ (3\times3\times64+1)\times128=73856 $$

卷积输出尺寸也常考:

输入大小 $H\times W$,卷积核大小 $K$,padding 为 $P$,stride 为 $S$,则输出高宽:

$$ H_{out}=\left\lfloor\frac{H+2P-K}{S}\right\rfloor+1 $$

$$ W_{out}=\left\lfloor\frac{W+2P-K}{S}\right\rfloor+1 $$

输出通道数等于卷积核个数 $C_{out}$。

池化层:

  • 通常没有可学习参数。
  • 主要改变特征图尺寸。
  • Max pooling 取局部最大值,Average pooling 取局部平均值。

九、前向传播

前向传播就是从输入开始,逐层计算每一层的线性变换和激活输出。

单层:

$$ z^{(l)}=W^{(l)}a^{(l-1)}+b^{(l)} $$

$$ a^{(l)}=f(z^{(l)}) $$

其中:

  • $a^{(0)}=x$。
  • $W^{(l)}$ 是第 $l$ 层权重。
  • $b^{(l)}$ 是第 $l$ 层偏置。
  • $z^{(l)}$ 是激活前输入。
  • $a^{(l)}$ 是激活后输出。

完整流程:

  1. 输入样本 $x$。
  2. 第一层计算 $z^{(1)},a^{(1)}$。
  3. 第二层计算 $z^{(2)},a^{(2)}$。
  4. 继续直到输出层。
  5. 得到预测值 $\hat{y}$。
  6. 用损失函数计算 $L(\hat{y},y)$。

前向传播负责算预测和损失,反向传播负责算梯度。

十、反向传播 BackPropagation

反向传播是神经网络训练的核心。

它解决的问题:

如何高效计算损失函数对每个参数的梯度。

核心工具:链式法则。

如果:

$$ L=L(a),\quad a=f(z),\quad z=wx+b $$

则:

$$ \frac{\partial L}{\partial w} =\frac{\partial L}{\partial a} \frac{\partial a}{\partial z} \frac{\partial z}{\partial w} $$

这就是“误差从后往前传”的本质。

1. 输出层误差项

定义误差项:

$$ \delta^{(l)}=\frac{\partial L}{\partial z^{(l)}} $$

若输出层使用均方误差:

$$ L=\frac{1}{2}(\hat{y}-y)^2 $$

且:

$$ \hat{y}=a^{(L)}=f(z^{(L)}) $$

则输出层误差项:

$$ \delta^{(L)} =\frac{\partial L}{\partial z^{(L)}} =(a^{(L)}-y)f'(z^{(L)}) $$

如果输出层是 Sigmoid:

$$ f'(z)=a(1-a) $$

所以:

$$ \delta^{(L)}=(a^{(L)}-y)a^{(L)}(1-a^{(L)}) $$

2. 隐藏层误差项

隐藏层的误差来自后一层。

$$ \delta^{(l)} =((W^{(l+1)})^T\delta^{(l+1)})\odot f'(z^{(l)}) $$

其中 $\odot$ 表示逐元素相乘。

理解:

  • 后一层误差通过权重传回当前层。
  • 再乘以当前层激活函数的导数。

3. 参数梯度

有了误差项后,梯度很简单。

权重梯度:

$$ \frac{\partial L}{\partial W^{(l)}}=\delta^{(l)}(a^{(l-1)})^T $$

偏置梯度:

$$ \frac{\partial L}{\partial b^{(l)}}=\delta^{(l)} $$

单个权重:

$$ \frac{\partial L}{\partial w_{ij}^{(l)}}=\delta_i^{(l)}a_j^{(l-1)} $$

意思是:

某条边的梯度 = 终点神经元误差项 × 起点神经元输出。

4. 参数更新

梯度下降更新:

$$ W^{(l)}\leftarrow W^{(l)}-\eta \frac{\partial L}{\partial W^{(l)}} $$

$$ b^{(l)}\leftarrow b^{(l)}-\eta \frac{\partial L}{\partial b^{(l)}} $$

其中 $\eta$ 是学习率。

学习率:

  • 太大:可能震荡或发散。
  • 太小:收敛很慢。

十一、梯度计算例题模板

例 1:简单链式法则

设:

$$ f(x,y,z)=(x+y)z $$

令:

$$ q=x+y $$

则:

$$ f=qz $$

反向传播:

$$ \frac{\partial f}{\partial q}=z,\quad \frac{\partial f}{\partial z}=q $$

$$ \frac{\partial q}{\partial x}=1,\quad \frac{\partial q}{\partial y}=1 $$

所以:

$$ \frac{\partial f}{\partial x} =\frac{\partial f}{\partial q}\frac{\partial q}{\partial x} =z $$

$$ \frac{\partial f}{\partial y} =\frac{\partial f}{\partial q}\frac{\partial q}{\partial y} =z $$

$$ \frac{\partial f}{\partial z}=q=x+y $$

若 $x=-2,y=5,z=-4$,则:

$$ q=3,\quad f=-12 $$

$$ \frac{\partial f}{\partial x}=-4,\quad \frac{\partial f}{\partial y}=-4,\quad \frac{\partial f}{\partial z}=3 $$

例 2:单个 Sigmoid 神经元

设:

$$ z=wx+b,\quad a=\sigma(z),\quad L=\frac{1}{2}(a-y)^2 $$

要求 $\frac{\partial L}{\partial w}$。

按链式法则:

$$ \frac{\partial L}{\partial w} =\frac{\partial L}{\partial a} \frac{\partial a}{\partial z} \frac{\partial z}{\partial w} $$

三项分别为:

$$ \frac{\partial L}{\partial a}=a-y $$

$$ \frac{\partial a}{\partial z}=a(1-a) $$

$$ \frac{\partial z}{\partial w}=x $$

所以:

$$ \frac{\partial L}{\partial w}=(a-y)a(1-a)x $$

同理:

$$ \frac{\partial L}{\partial b}=(a-y)a(1-a) $$

必须会写出这类链式法则。

例 3:两层网络反向传播

两层网络:

$$ z^{(1)}=W^{(1)}x+b^{(1)},\quad a^{(1)}=f(z^{(1)}) $$

$$ z^{(2)}=W^{(2)}a^{(1)}+b^{(2)},\quad a^{(2)}=\hat{y} $$

输出层:

$$ \delta^{(2)}=(a^{(2)}-y)\odot f'(z^{(2)}) $$

隐藏层:

$$ \delta^{(1)}=((W^{(2)})^T\delta^{(2)})\odot f'(z^{(1)}) $$

梯度:

$$ \frac{\partial L}{\partial W^{(2)}}=\delta^{(2)}(a^{(1)})^T $$

$$ \frac{\partial L}{\partial W^{(1)}}=\delta^{(1)}x^T $$

这就是 BP 计算题的核心模板。

十二、优化器了解即可

优化器负责根据梯度更新参数。

最基本的梯度下降:

$$ \theta\leftarrow \theta-\eta\nabla_\theta L $$

常见类型:

优化器 核心思想 掌握程度
Batch GD 用全体样本梯度更新 了解
SGD 每次用单个样本或小批量近似梯度 了解
Mini-batch SGD 用一个 batch 的平均梯度更新 常用
Momentum 引入动量,减少震荡 了解
AdaGrad 每个参数自适应学习率 了解
Adam 一阶矩 + 二阶矩估计,自适应更新 了解
Muon 对 2D 权重矩阵的动量做正交化 新技术,了解即可

Mini-batch SGD:

$$ \theta\leftarrow \theta-\eta\frac{1}{b}\sum_{i=1}^{b}\nabla_\theta L_i $$

Adam 直观理解:

  • 记录梯度的移动平均,类似动量。
  • 记录梯度平方的移动平均,自动调节学习率。
  • 实践中非常常用。

十三、标准化了解即可

标准化的作用:

  • 加快模型收敛。
  • 稳定每层输入分布。
  • 缓解梯度消失和梯度爆炸。
  • 让激活值落在较合理范围。

基本形式:

$$ \hat{x}=\frac{x-\mu}{\sqrt{\sigma^2+\epsilon}} $$

再进行缩放和平移:

$$ y=\gamma \hat{x}+\beta $$

其中 $\gamma,\beta$ 是可学习参数,用来恢复表达能力。

常见标准化:

方法 归一化范围 常见用途
Batch Normalization 同一 batch 内同一维度 CNN
Layer Normalization 单个样本所有特征维度 RNN、Transformer
Instance Normalization 单张图像每个通道 图像生成
RMSNorm 不减均值,只按均方根缩放 大语言模型

BN 和 LN 区别:

  • BN:跨 batch 统计,对同一特征维度求均值方差。
  • LN:对单个样本内部所有特征求均值方差。

十四、经典网络架构了解即可

架构 核心贡献
LeNet 早期 CNN,用卷积、池化、全连接,使用 BP 训练
AlexNet ReLU、Dropout、数据增强,推动深度学习在 ImageNet 成功
VGG 使用大量 $3\times3$ 卷积,结构简单但很深
GoogLeNet/Inception 多分支结构,使用 $1\times1$ 卷积降维
ResNet 残差连接,缓解深层网络训练退化
Transformer Self-Attention,任意位置直接建模关系
ViT 把图像切成 patch,用 Transformer 做视觉任务

ResNet 重点思想:

$$ H(x)=F(x)+x $$

其中 $x$ 是恒等映射,$F(x)$ 是残差映射。

残差连接的作用:

  • 让信息和梯度更容易跨层传播。
  • 缓解梯度消失。
  • 使深层网络更容易优化。

CNN 与 Transformer 对比:

  • CNN:局部连接 + 参数共享 + 层次化特征。
  • Transformer:Self-Attention,任意位置之间直接建立联系。

十五、后续新技术了解即可

课件后面提到的一些新技术,只需知道大概思想:

技术 核心思想
特征可视化 可视化层激活、权重或最大激活样本,理解网络学到什么
Grad-CAM 用梯度定位模型关注的图像区域
Mamba 基于状态空间模型,适合长序列建模,强调线性时间复杂度
Vision Mamba 把 Mamba 思想用于视觉表示学习
KAN 激活函数在边上且可学习,来自 Kolmogorov-Arnold 表示思想
MoE 多个专家网络,token 只激活少数专家,扩大参数量但控制计算量
Hyper-Connections/mHC 多条残差流和流形约束,增强深层网络信息传播

这些内容了解即可,不需要作为计算重点。

十六、易错点

  • 没有激活函数,多层神经网络仍等价于线性模型。
  • Sigmoid 导数必须会:$\sigma'(x)=\sigma(x)(1-\sigma(x))$。
  • 全连接层参数量要加 bias:$(n_{in}+1)n_{out}$。
  • CNN 参数量与输入图像高宽无关,只与卷积核大小、输入通道、输出通道有关。
  • 池化层通常没有可学习参数。
  • CNN 适合图像的根本原因是局部连接、参数共享和层次化特征。
  • 前向传播算输出和损失,反向传播算梯度。
  • 反向传播本质是链式法则。
  • 权重梯度 = 终点误差项 × 起点输出。
  • 学习率太大可能发散,太小收敛慢。
  • BP 虽然课堂可能没有细讲,但它是神经网络核心,必须会计算。

十七、考试中可以这样写

神经网络由大量神经元组成,每个神经元先对输入进行加权求和,再经过激活函数得到输出。MP 神经元是最早的神经元数学模型,包含输入、权重、偏置、加权求和和激活函数。单层感知机只能处理线性可分问题,多层神经网络通过隐藏层和非线性激活函数学习复杂特征表示,从而具备更强的表达能力。

构造神经网络时,需要根据任务确定输入、输出、网络层、激活函数和损失函数。全连接层参数量为 $(n_{in}+1)n_{out}$,多层网络参数量为各层参数量之和。CNN 更适合图像任务,因为图像具有局部性和平移不变性,CNN 通过局部连接和参数共享显著减少参数量,并能学习层次化图像特征。卷积层参数量为 $(K_hK_wC_{in}+1)C_{out}$。

神经网络训练包括前向传播和反向传播。前向传播逐层计算输出并得到损失;反向传播利用链式法则从输出层向前逐层计算损失对参数的梯度,再用梯度下降或 Adam 等优化器更新参数。反向传播的核心是误差项 $\delta$,权重梯度等于当前层误差项乘以上一层输出。

十八、速记版

  • 神经元:加权求和 + 偏置 + 激活函数。
  • MP 模型:早期阈值神经元,可表示简单逻辑。
  • 多层网络:隐藏层学习特征,解决非线性问题。
  • 激活函数:引入非线性;Sigmoid、tanh、ReLU 要会区分。
  • Sigmoid 导数:$\sigma'(x)=\sigma(x)(1-\sigma(x))$。
  • 全连接参数:$(n_{in}+1)n_{out}$。
  • CNN 适合图像:局部连接、参数共享、层次化特征。
  • CNN 参数:$(K_hK_wC_{in}+1)C_{out}$。
  • 前向传播:逐层算输出和损失。
  • 反向传播:链式法则逐层算梯度。
  • 权重梯度:误差项 $\delta$ × 上一层输出。
  • 优化器、标准化、经典架构、新技术了解即可。