多分类问题学习器拆分策略
对于 个类别 ,多分类学习的基本思路是拆解法,即将多分类任务拆分成若干个二分类任务求解,拆分策略如下所示:
一对一(One vs. One, OvO)
将 个类别两两配对,产生 个二分类任务,每个任务使用一个二分类学习器进行学习;
多个二分类学习器预测得到结果中,最多的类别作为最终的分类结果。
一对其余(One vs. Rest, OvR)
每次将一个类别作为正例,其余其他类别样例均作为反例,产生 个二分类任务;
若有多个二分类器预测为正类,则通常考虑各分类器的预测置信度,选择置信度最大的类别作为分类结果。
多对多(Many vs. Many, MvM)
每次将若干个类作为正类,若干个其他类作为反类,MvM的正反类构造必须有特殊的设计,不能随意选取;
最常用的MvM技术是:纠错输出码(Error Correcting Output Codes, ECOC);
ECOC工作过程主要分为2步:
- 编码:对 个类别做M次划分,每次划分将一部分类别划为正类,一部分划为反类,从而形成一个二分类训练集;这样一共产生 个训练集,可以训练出 个分类器;
- 解码: 个分类器分别对测试样本进行预测,这些预测结果标记组成一个编码;将这些预测结果编码与每个类别各自的编码进行比较,返回其中距离最小的类别作为最终预测结果;
上图是ECOC编码示意图,其中, 表示第 个类别, 表示第 个学习器,“+1”和“-1”分别表示学习器 将该类样本作为正、反例,“0”(三元码中, 行 列, 行 列)表示学习器 不使用该类样本,测试示例即各学习器预测结果编码。
海明距离:在信息编码中,两个合法代码对应位上编码不同的位数称为码距;
欧式距离:是一个通常采用的距离定义,指在m维空间中两个点之间的真实距离;
二元ECOC码:
测试示例:-1 -1 +1 -1 +1
编码: -1 +1 -1 +1 +1 海明距离 = 3 欧式距离 =
编码: +1 -1 -1 +1 -1 海明距离 = 4 欧式距离 =
编码: -1 +1 +1 -1 +1 海明距离 = 1 欧式距离 =
编码: -1 -1 +1 +1 -1 海明距离 = 2 欧式距离 =
对应的海明距离和欧式距离均最小,因此最终结果为 类。
三元ECOC码:
测试示例:-1 +1 +1 -1 +1 -1 +1
编码: -1 -1 +1 +1 -1 +1 +1 海明距离 = 4 欧式距离 =
编码: -1 0 0 0 +1 -1 0 海明距离 = 2 欧式距离 =
编码: +1 +1 -1 -1 -1 +1 -1 海明距离 = 5 欧式距离 =
编码: -1 +1 0 +1 -1 0 +1 海明距离 = 3 欧式距离 =
其中,对于“0”,即学习器没使用的类别,海明距离记0.5。
对应的海明距离和欧式距离均最小,因此最终结果为 类。
对比分析
OvO的的存储开销和测试时间开销通常比OvR大;
OvO需要训练 ,而OvR只需要训练 个分类器。
在类别很多的时候,OvO的训练时间开销通常比OvR小;
OvO每个学习器使用2个类别的样例进行训练,而OvR的学习器需要用到全部样例进行训练。
ECOC对个别学习器的分类错误具有一定的容忍和修正能力;
ECOC编码越长,即学习器数量越多,纠错能力越强,但是计算、存储开销会增大;
对有限类别数,ECOC编码长度超过一定范围就会失去意义。