1378 字
7 分钟
模式识别与机器学习:线性分类器-多分类问题
2026-05-28
无标签

前面的二分类器(感知机、逻辑回归、SVM)只能区分两类。实际中更常见的是 C>2C > 2 类的问题。处理多分类有两种思路:将多分类拆成多个二分类,或者直接构造多类模型。

基本概念#

在进入具体方法之前,统一几个术语:

术语符号含义
判别函数gj(x)g_j(\mathbf{x})jj 类的打分函数,值越大表示模型越倾向于将该样本判为第 jj
决策准则y^=argmaxjgj(x)\hat{y} = \arg\max_j g_j(\mathbf{x})从判别函数到类别的映射规则
决策边界gi(x)=gj(x)g_i(\mathbf{x}) = g_j(\mathbf{x})类别 iijj 之间的分界面,两侧各判一类
拒识当最大判别值低于某个阈值 TT 时放弃分类,避免高风险错误

本章沿用 Bayes 章的符号约定:x\mathbf{x} 是加粗的特征向量,ωj\omega_j 是第 jj 个类别,P()P(\cdot) 表示概率。分类器统一表示为:

gj(x)=wjTx+bjg_j(\mathbf{x}) = \mathbf{w}_j^T \mathbf{x} + b_j

多类决策准则统一为 ω^=argmaxjgj(x)\hat{\omega} = \arg\max_j g_j(\mathbf{x}),不同方法的不同之处在于如何训练得到 wj\mathbf{w}_jbjb_j

一对多(One-vs-Rest, OvR)#

对每个类别 ωk\omega_k 训练一个二分类器 gk(x)g_k(\mathbf{x}),将该类视为正类(+1+1),其余所有类视为负类(1-1)。总共训练 CC 个分类器。

决策准则:计算所有 gk(x)g_k(\mathbf{x}),若存在唯一 kk 使得 gk(x)>0g_k(\mathbf{x}) > 0 且所有其他 gj(x)<0g_j(\mathbf{x}) < 0,则判为 ωk\omega_k。若多个分类器输出正类或全部输出负类,可设拒识。

实用变体:用 ω^=argmaxkgk(x)\hat{\omega} = \arg\max_k g_k(\mathbf{x}) 替代硬阈值,此时 OvR 退化为一个直接的多类决策。但这个做法要求不同分类器的输出值可比——逻辑回归和 SVM 的输出尺度不同,不能直接混用。

优点:分类器数量少(CC 个),预测速度快。 缺点:每类的负类样本是其他所有类之和,类别不平衡严重;不同分类器输出不可比。

一对一(One-vs-One, OvO)#

每对类别 (ωi,ωj)(\omega_i, \omega_j) 之间训练一个二分类器 gij(x)g_{ij}(\mathbf{x}),共 C(C1)/2C(C-1)/2 个。训练时只使用 ωi\omega_iωj\omega_j 的样本,其他类不参与。

决策准则:每个分类器 gijg_{ij} 投一票给 ωi\omega_iωj\omega_j,统计所有分类器的投票结果,得票最多的类别获胜:

ω^=argmaxkjkI[gkj(x)>0]\hat{\omega} = \arg\max_k \sum_{j \neq k} \mathbb{I}[g_{kj}(\mathbf{x}) > 0]

其中 I[]\mathbb{I}[\cdot] 是指示函数。表示为 I[gkj(x)>0]=1\mathbb{I}[g_{kj}(\mathbf{x}) > 0] = 1 表示 gkjg_{kj} 投票给 ωk\omega_k,否则投给 ωj\omega_j

优点:每个分类器只接触两类数据,训练快;无类别不平衡问题。 缺点:分类器数量随 CC 平方增长,预测时需运行 C(C1)/2C(C-1)/2 个分类器,速度慢。

Softmax 回归(多项逻辑回归)#

前两种方法将多分类拆成多个二分类,Softmax 回归则直接构造一个多类模型。

模型定义#

将逻辑回归的 Sigmoid 替换为 Softmax 函数:

P(ωkx)=exp(wkTx+bk)j=1Cexp(wjTx+bj),k=1,2,,CP(\omega_k \mid \mathbf{x}) = \frac{\exp(\mathbf{w}_k^T \mathbf{x} + b_k)}{\sum_{j=1}^C \exp(\mathbf{w}_j^T \mathbf{x} + b_j)},\quad k = 1, 2, \dots, C

Softmax 将 CC 个实数得分 {wjTx+bj}\{\mathbf{w}_j^T \mathbf{x} + b_j\} 归一化为一个概率分布——所有输出在 [0,1][0, 1] 之间且和为 11。当 C=2C = 2 时,Softmax 退化为逻辑回归。

损失函数#

沿用逻辑回归的 MLE 框架。对于数据集 {(xi,yi)}i=1N\{(\mathbf{x}_i, y_i)\}_{i=1}^Nyi{1,,C}y_i \in \{1, \dots, C\},记 pik=P(ωkxi)p_{ik} = P(\omega_k \mid \mathbf{x}_i),负对数似然为:

J({wj,bj})=i=1Nlnpi,yi=i=1N(wyiTxi+byilnj=1Cexp(wjTxi+bj))J(\{\mathbf{w}_j, b_j\}) = -\sum_{i=1}^N \ln p_{i, y_i} = -\sum_{i=1}^N \left( \mathbf{w}_{y_i}^T \mathbf{x}_i + b_{y_i} - \ln \sum_{j=1}^C \exp(\mathbf{w}_j^T \mathbf{x}_i + b_j) \right)

这称为多类交叉熵损失(categorical cross-entropy)

梯度推导#

对第 kk 类的权重向量 wk\mathbf{w}_k 求梯度。利用 Softmax 的导数 pik/(wkTxi)=pik(1pik)\partial p_{ik} / \partial (\mathbf{w}_k^T \mathbf{x}_i) = p_{ik} (1 - p_{ik}) 以及 pij/(wkTxi)=pikpij\partial p_{ij} / \partial (\mathbf{w}_k^T \mathbf{x}_i) = -p_{ik} p_{ij}jkj \neq k),可得:

Jwk=i=1N(pikI[yi=k])xi\frac{\partial J}{\partial \mathbf{w}_k} = \sum_{i=1}^N (p_{ik} - \mathbb{I}[y_i = k]) \, \mathbf{x}_i

这个形式与二分类逻辑回归的梯度 (piyi)xi(p_i - y_i) \mathbf{x}_i 完全一致——唯一的区别是现在对每个类别 kk 独立计算,每个样本对梯度的贡献取决于它是否属于该类。

与 MLE 的对应#

Softmax + 交叉熵 = MLE for 多项分布(categorical distribution),正如:

  • 线性回归 + 均方误差 = MLE for 高斯分布
  • 逻辑回归 + 二分类交叉熵 = MLE for 伯努利分布

三种模型的损失函数都可以统一到”MLE + 数据分布假设”的框架下。

多类感知机 / 多类SVM(Crammer-Singer)#

直接构造 CC 个权重向量 w1,,wC\mathbf{w}_1, \dots, \mathbf{w}_C,决策函数为 gk(x)=wkTx+bkg_k(\mathbf{x}) = \mathbf{w}_k^T \mathbf{x} + b_k,预测类别 argmaxkgk(x)\arg\max_k g_k(\mathbf{x})

训练时要求正确类别的得分比其他类别至少大一个间隔(通常取 11),损失函数为:

min{wj,bj}i=1N[maxkyi(wkTxi+bk(wyiTxi+byi)+1)]+\min_{\{\mathbf{w}_j, b_j\}} \sum_{i=1}^N \left[ \max_{k \neq y_i} \big( \mathbf{w}_k^T \mathbf{x}_i + b_k - (\mathbf{w}_{y_i}^T \mathbf{x}_i + b_{y_i}) + 1 \big) \right]_+

其中 []+=max(0,)[\cdot]_+ = \max(0, \cdot) 是合页损失(hinge loss)。这个损失鼓励正确类的得分高出所有错误类至少 1,对不满足约束的样本惩罚,满足的样本不产生损失。

多类 SVM 直接优化多类目标,理论上比 OvR/OvO 更一致,但变量数量为 C×(d+1)C \times (d + 1),优化更复杂。

方法对比#

方法分类器数量输出形式训练复杂度适用场景
OvRCC得分(不可比)类别多、追求速度
OvOC(C1)/2C(C-1)/2投票数类别少、样本量大
Softmax11概率需要概率输出、类别数中等
多类SVM11得分追求精度、计算资源充足

选择策略没有绝对最优:类别数少且需要概率时 Softmax 是自然选择;类别数很多(如 >100)时 OvR 更实用;类别数很少(如 3-5)且追求精度时 OvO 值得一试。

模式识别与机器学习:线性分类器-多分类问题
https://biscuit0613.github.io/posts/ml/linearclf-multiclf/
作者
Biscuit
发布于
2026-05-28
许可协议
CC BY-NC-SA 4.0
图像金字塔:高斯金字塔和拉普拉斯金字塔
模式识别与机器学习:线性支持向量机