多分类学习

多分类问题
现实中常遇到多分类学习任务 。有些二分类学习方法可直接推广到多分类 。但在更多情形下,我们是基于一些基本策略,利用二分类学习器来解决多分类问题 。所以多分类问题的根本方法依然是二分类问题 。通常地,使用的是拆分法,也就是将一个多分类转换为多个二分类,然后将多个预测结果进行集成最后得出预测结果 。
【多分类学习】具体来说,有以下三种策略:
一、一对一 (OvO)
假如某个分类中有N个类别,我们将这N个类别进行两两配对(两两配对后转化为二分类问题) 。那么我们可以得到个二分类器 。(简单解释一下,相当于在N个类别里面抽2个)
之后,在测试阶段,我们把新样本交给这个二分类器 。于是我们可以得到个分类结果 。把预测的最多的类别作为预测的结果 。
下面,我给一个具体的例子来理解一下 。
上图的意思其实很明显,首先把类别两两组合(6种组合) 。组合完之后,其中一个类别作为正类,另一个作为负类(这个正负只是相对而言,目的是转化为二分类)这个正负可以理解为AB或者甲乙只是一个编号而已 。然后对每个二分类器进行训练,可以得到6个二分类器 。然后把测试样本在6个二分类器上面进行预测 。从结果上可以看到,类别1被预测的最多,故测试样本属于类别1 。
二、一对其余 (OvR)
一对其余其实更加好理解,每次将一个类别作为正类,其余类别作为负类 。此时共有(N个分类器) 。在测试的时候若仅有一个分类器预测为正类,则对应的类别标记为最终的分类结果 。例如下面这个例子 。
大概解释一下,就是有当有4个类别的时候,每次把其中一个类别作为正类别,其余作为负类别,共有4种组合,对于这4种组合进行分类器的训练,我们可以得到4个分类器 。对于测试样本,放进4个分类器进行预测,仅有一个分类器预测为正类,于是取这个分类器的结果作为预测结果,分类器2预测的结果是类别2,于是这个样本便属于类别2 。
其实,有人会有疑问,那么预测为负类的分类器就不用管了吗?是的,因为预测为负类的时候有多种可能,无法确定,只有预测为正类的时候才能唯一确定属于哪一类 。比如对于分类器3,分类结果是负类,但是负类有类别1,类别2,类别4三种,到底属于哪一种?
OvO和OvR有何优缺点?
容易看出,OvR只需训练N个分类器,而OvO需训练N(N - 1)/2个分类器,因此,OvO的存储开销和测试时间开销通常比OvR更大 。但在训练时,OvR的每个分类器均使用全部训练样例,而OvO的每个分类器仅用到两个类的样例,因此,在类别很多时,OvO的训练时间开销通常比OvR更小 。至于预测性能,则取决于具体的数据分布,在多数情形下两者差不多 。
综上:
三、多对多(MvM)
MvM是每次将若干个类作为正类,若干个其他类作为反类 。显然,OvO和OvR是MvM的特例 。MvM的正、反类构造必须有特殊的设计,不能随意选取 。这里我们介绍一种最常用的MvM技术"纠错输出码" (ErrorCodes,简称 ECOC)
ECOC是将编码的思想引入类别拆分,并尽可能在解码过程中具有容错性 。
ECOC工作过程主要分为两步:
类别划分通过"编码矩阵"指定 。编码矩阵有多种形式,常见的主要有二元码和三元码 。前者将每个类别分别指定为正类和反类,后者在正、反类之外,还可指定"停用类" 。
图3.5给出了一个示意图,在图 3.5(a) 中:
在图3.5(b)中:
在解码阶段,各分类器的预测结果联合起来形成了测试示例的编码,该编码与各类所对应的编码进行比较,将距离最小(海明距离或者欧式距离)的编码所对应的类别作为预测结果 。