多分类问题不能直接用二分类器(如感知机、SVM)处理,因为决策面只能分开两类。主要有以下几种策略和模型。
TIP核心:正判是,负判否,面上不定义,决策边界是线性的
一、将多分类拆解为多个二分类#
1. 一对多(One-vs-Rest, OvR)#
- 对于 C 个类别,训练 C 个二分类器 gk,k=1,2,…,C。
- 第 k 个分类器:将第 k 类 ωk 视为正类(+1),其余所有类视为负类(-1)。
判别函数:
gi(x)=wiTx=j=0∑dwijxj,x0=1判别准则1:若存在 i 使得 gi(x)>0,gothers exclude i<0,则预测 x 为第 i 类。其他情况(如多个分类器输出正类或全部输出负类)拒绝识别。
判别准则2(无拒识区域):gi(x)=argmaxjgj(x) ,如果 gi(x) 大于某一预先设定的值 T,则判别 x 属于 ωi 类;如果 gi(x) 小于等于某一预先设定的值 T ,拒识
优点:训练 C 个分类器,预测时只需计算 C 次。
缺点:类别不平衡(负类样本远多于正类);不同分类器的输出可能不可比(SVM的得分可能需校准)。
2. 一对一(One-vs-One, OvO)#
- 每两个类别之间训练一个二分类器,共 C(C−1)/2 个。
- 第 i 和 j 类之间的分类器 gij:将 ωi 视为正类(+1),ωj 视为负类(-1),其他类别样本不参与训练。
判别函数:
gij(x)=wijTx=k=0∑dwijkxk,x0=1,i=j判别准则1:gij(x)>0 则判别 x 属于 ωi 类,否则属于 ωj 类。其他情况(如多个分类器输出正类或全部输出负类)拒绝识别。
判别准则2:i=argmaxk∑j=kCsgn(gkj(x)),如果 i 大于某一预先设定的值 T,则判别 x 属于 ωi 类;其他情况拒绝识别。
优点:每个分类器只处理相关两类,训练快;无类别不平衡问题。
缺点:分类器数量随 C 平方增长,预测时需运行所有分类器,耗时。
二、直接构造多类线性分类器#
1. 多类感知机 / 多类SVM(Crammer & Singer)#
- 定义 C 个权重向量 w1,w2,…,wC。
- 决策函数:gk(x)=wkTx+bk,预测类别 argmaxkgk(x)。
- 训练时,希望正确类别的输出比其他所有类别的输出至少大一个间隔(如1)。
损失函数(多类SVM合页损失):
wmini=1∑N[k=yimax(wkTxi+bk−(wyiTxi+byi)+1)]+通常加正则化 ∑k∥wk∥2。
优点:直接优化多类目标,理论上更一致。
缺点:优化更复杂,变量多(C×(d+1))。
2. Softmax 回归(多项逻辑回归)#
-
输出概率:
P(y=k∣x)=∑j=1Cexp(wjTx+bj)exp(wkTx+bk)
-
训练:最大化对数似然(等价于最小化交叉熵损失)。
优点:给出概率估计;损失函数光滑凸,可用梯度下降。
缺点:仍为线性分类器(决策边界是线性的);对线性不可分数据效果有限。
三、非线性多分类器(扩展)#
- kNN:直接支持多类,投票即可。
- 神经网络:输出层使用 softmax,自动处理多类。
- 核方法:将核技巧应用于 OvR 或 OvO,也可直接用多类核SVM。
四、如何选择?#
| 情况 | 推荐策略 |
|---|
| 类别数少(<10),样本量中等 | OvO 或 多类SVM |
| 类别数多(>10),样本量小 | OvR(线性SVM或逻辑回归) |
| 类别数多,需要概率输出 | Softmax 回归 |
| 追求简单、快速原型 | OvR 逻辑回归 |
| 线性不可分 | 核方法(OvR 或 OvO)或神经网络 |
| 极度大规模类别(如ImageNet) | 神经网络 + softmax,或使用层次分类 |