拆解法
多分类问题的一般方法,是将多分类任务拆分为多个二分类任务求解,这里设有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码的性质
一般来说:在同一个学习任务中
码长度⇑,纠错能力⇑,训练分类器⇑,计算存储开销⇑。
对同等长度的编码,任意两个类别之间的编码距离越远,则纠错能力越强。