拆解法
多分类问题的一般方法,是将多分类任务拆分为多个二分类任务求解,这里设有
N
个类别:
具体做法
1:将多分类问题拆解为若干个二分类问题
2:为每个二分类问题训练一个分类器
3:得出每个二分类问题的预测结果
4:对这些二分类问题的结果进行集成最后得到多分类结果
拆分策略
给定数据集:
拆分方法如下:
OvO
OvO−(One vs ˙One)
“一对一”
将
N
个类别两两配对,从而产生了
图解
OvR
OvR−(One vs ˙Rest)
每次将一个类的样例作为正例,其他类的样例作为反例来训练
N
个分类器,在测试时仅有一个分类器预测为正类,则对应的类别标记就作为最终分类结果。
OvO 和
OvR
的比较
分类器个数:
OvO
需要训练
N(N−1)2
个分类器
OvR
只需要训练
N
个分类器,
分类器的样例:
OvR
每个分类器使用所有样例
时间开销:
在类别比较少的情况下:
OvO
的训练器比较多,所以存储开销和测试时间开销通常都比
OvR
的大。
在类别比较多的情况下:
OvO
的训练器的样例比较少,所以训练时间开销通常都比
OvR
的少。
MvM
MvM−(Many vs ˙Many)
做法
每次将若干个类作为正类,其他若干个类作为反类。
纠错输出码 ECOC
ECOC=(Error Correcting Output Codes)
编码:
对
N
个类别做
解码:
M
个分类器分别对测试样本进行预测,这些预测标记组成一个解码,将这个预测解码与每个类别各自的编码进行比较,返回其中距离最小的类别作为最终结果。
编码矩阵
“+1”和“-1”分别表示学习器
主要形式:
ECOC 码的性质
一般来说:在同一个学习任务中
码长度
⇑
,纠错能力
⇑
,训练分类器
⇑
,计算存储开销
⇑
。
对同等长度的编码,任意两个类别之间的编码距离越远,则纠错能力越强。