对于 N N N个类别 C 1 , C 2 , … , C N C_1,C_2,\ldots,C_N C1,C2,…,CN,多分类学习的基本思路是拆解法,即将多分类任务拆分成若干个二分类任务求解,拆分策略如下所示:
将 N N N个类别两两配对,产生 N ( N − 1 ) / 2 N(N-1)/2 N(N−1)/2个二分类任务,每个任务使用一个二分类学习器进行学习;
多个二分类学习器预测得到结果中,最多的类别作为最终的分类结果。
每次将一个类别作为正例,其余其他类别样例均作为反例,产生 N N N个二分类任务;
若有多个二分类器预测为正类,则通常考虑各分类器的预测置信度,选择置信度最大的类别作为分类结果。
每次将若干个类作为正类,若干个其他类作为反类,MvM的正反类构造必须有特殊的设计,不能随意选取;
最常用的MvM技术是:纠错输出码(Error Correcting Output Codes, ECOC);
ECOC工作过程主要分为2步:
上图是ECOC编码示意图,其中, C i C_i Ci表示第 i i i个类别, f i f_i fi表示第 i i i个学习器,“+1”和“-1”分别表示学习器 f i f_i fi将该类样本作为正、反例,“0”(三元码中, C 2 C_2 C2行 f 2 , f 3 , f 4 , f 7 f_2,f_3,f_4,f_7 f2,f3,f4,f7列, C 4 C_4 C4行 f 3 , f 6 f_3,f_6 f3,f6列)表示学习器 f i f_i fi不使用该类样本,测试示例即各学习器预测结果编码。
海明距离:在信息编码中,两个合法代码对应位上编码不同的位数称为码距;
欧式距离:是一个通常采用的距离定义,指在m维空间中两个点之间的真实距离;
二元ECOC码:
测试示例:-1 -1 +1 -1 +1
C 1 C_1 C1编码: -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} 0+22+22+22+0=23
C 2 C_2 C2编码: +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 22+0+22+22+22=4
C 3 C_3 C3编码: -1 +1 +1 -1 +1 海明距离 = 1 欧式距离 = 0 + 2 2 + 0 + 0 + 0 = 2 \sqrt{0+2^2+0+0+0}=2 0+22+0+0+0=2
C 4 C_4 C4编码: -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} 0+0+0+22+22=22
C 3 C_3 C3对应的海明距离和欧式距离均最小,因此最终结果为 C 3 C_3 C3类。
三元ECOC码:
测试示例:-1 +1 +1 -1 +1 -1 +1
C 1 C_1 C1编码: -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 0+22+0+22+22+22+0=4
C 2 C_2 C2编码: -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 0+12+12+12+0+0+12=2
C 3 C_3 C3编码: +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} 22+0+22+0+22+22+22=25
C 4 C_4 C4编码: -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+12+22+22+12+0=10
其中,对于“0”,即学习器没使用的类别,海明距离记0.5。
C 2 C_2 C2对应的海明距离和欧式距离均最小,因此最终结果为 C 2 C_2 C2类。
OvO的的存储开销和测试时间开销通常比OvR大;
OvO需要训练 N ( N − 1 ) / 2 N(N-1)/2 N(N−1)/2,而OvR只需要训练 N N N个分类器。
在类别很多的时候,OvO的训练时间开销通常比OvR小;
OvO每个学习器使用2个类别的样例进行训练,而OvR的学习器需要用到全部样例进行训练。
ECOC对个别学习器的分类错误具有一定的容忍和修正能力;
ECOC编码越长,即学习器数量越多,纠错能力越强,但是计算、存储开销会增大;
对有限类别数,ECOC编码长度超过一定范围就会失去意义。