多分类问题学习器拆分策略

多分类问题学习器拆分策略

对于 N N 个类别 C 1 , C 2 , , C N C_1,C_2,\ldots,C_N ,多分类学习的基本思路是拆解法,即将多分类任务拆分成若干个二分类任务求解,拆分策略如下所示:

一对一(One vs. One, OvO)

N N 个类别两两配对,产生 N ( N 1 ) / 2 N(N-1)/2 个二分类任务,每个任务使用一个二分类学习器进行学习;

多个二分类学习器预测得到结果中,最多的类别作为最终的分类结果。

一对其余(One vs. Rest, OvR)

每次将一个类别作为正例,其余其他类别样例均作为反例,产生 N N 个二分类任务;

若有多个二分类器预测为正类,则通常考虑各分类器的预测置信度,选择置信度最大的类别作为分类结果。

多对多(Many vs. Many, MvM)

每次将若干个类作为正类,若干个其他类作为反类,MvM的正反类构造必须有特殊的设计,不能随意选取;

最常用的MvM技术是:纠错输出码(Error Correcting Output Codes, ECOC);

ECOC工作过程主要分为2步:

  • 编码:对 N N 个类别做M次划分,每次划分将一部分类别划为正类,一部分划为反类,从而形成一个二分类训练集;这样一共产生 M M 个训练集,可以训练出 M M 个分类器;
  • 解码: M M 个分类器分别对测试样本进行预测,这些预测结果标记组成一个编码;将这些预测结果编码与每个类别各自的编码进行比较,返回其中距离最小的类别作为最终预测结果;

ECOC

上图是ECOC编码示意图,其中, C i C_i 表示第 i i 个类别, f i f_i 表示第 i i 个学习器,“+1”和“-1”分别表示学习器 f i f_i 将该类样本作为正、反例,“0”(三元码中, C 2 C_2 f 2 , f 3 , f 4 , f 7 f_2,f_3,f_4,f_7 列, C 4 C_4 f 3 , f 6 f_3,f_6 列)表示学习器 f i f_i 不使用该类样本,测试示例即各学习器预测结果编码。

海明距离:在信息编码中,两个合法代码对应位上编码不同的位数称为码距;

欧式距离:是一个通常采用的距离定义,指在m维空间中两个点之间的真实距离;

二元ECOC码:

测试示例:-1 -1 +1 -1 +1

C 1 C_1 编码: -1 +1 -1 +1 +1 海明距离 = 3 欧式距离 = 0 + 2 2 + 2 2 + 2 2 + 0 = 2 3 \sqrt{0+2^2+2^2+2^2+0}=2\sqrt{3}

C 2 C_2 编码: +1 -1 -1 +1 -1 海明距离 = 4 欧式距离 = 2 2 + 0 + 2 2 + 2 2 + 2 2 = 4 \sqrt{2^2+0+2^2+2^2+2^2}=4

C 3 C_3 编码: -1 +1 +1 -1 +1 海明距离 = 1 欧式距离 = 0 + 2 2 + 0 + 0 + 0 = 2 \sqrt{0+2^2+0+0+0}=2

C 4 C_4 编码: -1 -1 +1 +1 -1 海明距离 = 2 欧式距离 = 0 + 0 + 0 + 2 2 + 2 2 = 2 2 \sqrt{0+0+0+2^2+2^2}=2\sqrt{2}

C 3 C_3 对应的海明距离和欧式距离均最小,因此最终结果为 C 3 C_3 类。

三元ECOC码:

测试示例:-1 +1 +1 -1 +1 -1 +1

C 1 C_1 编码: -1 -1 +1 +1 -1 +1 +1 海明距离 = 4 欧式距离 = 0 + 2 2 + 0 + 2 2 + 2 2 + 2 2 + 0 = 4 \sqrt{0+2^2+0+2^2+2^2+2^2+0}=4

C 2 C_2 编码: -1 0 0 0 +1 -1 0 海明距离 = 2 欧式距离 = 0 + 1 2 + 1 2 + 1 2 + 0 + 0 + 1 2 = 2 \sqrt{0+1^2+1^2+1^2+0+0+1^2}=2

C 3 C_3 编码: +1 +1 -1 -1 -1 +1 -1 海明距离 = 5 欧式距离 = 2 2 + 0 + 2 2 + 0 + 2 2 + 2 2 + 2 2 = 2 5 \sqrt{2^2+0+2^2+0+2^2+2^2+2^2}=2\sqrt{5}

C 4 C_4 编码: -1 +1 0 +1 -1 0 +1 海明距离 = 3 欧式距离 = 0 + 0 + 1 2 + 2 2 + 2 2 + 1 2 + 0 = 10 \sqrt{0+0+1^2+2^2+2^2+1^2+0}=\sqrt{10}

其中,对于“0”,即学习器没使用的类别,海明距离记0.5。

C 2 C_2 对应的海明距离和欧式距离均最小,因此最终结果为 C 2 C_2 类。

对比分析

OvO的的存储开销测试时间开销通常比OvR大;

OvO需要训练 N ( N 1 ) / 2 N(N-1)/2 ,而OvR只需要训练 N N 个分类器。

在类别很多的时候,OvO的训练时间开销通常比OvR小;

OvO每个学习器使用2个类别的样例进行训练,而OvR的学习器需要用到全部样例进行训练。

ECOC对个别学习器的分类错误具有一定的容忍和修正能力;

ECOC编码越长,即学习器数量越多,纠错能力越强,但是计算、存储开销会增大;

对有限类别数,ECOC编码长度超过一定范围就会失去意义。

猜你喜欢

转载自blog.csdn.net/kuaizi_sophia/article/details/84887077