从二分类到多分类
从二分类到多分类,实际采用的是拆解法思想:将多分类问题拆分成许多二分类问题,为每一个二分类问题训练一个分类器。测试时,对这些分类器的结果进行集成,得到最终预测结果。
根据拆分策略不同,分为以下三类:
一对一(One vs. One, OvO)
训练:将N个类别两两配对,产生N(N−1)/2个二分类任务,每个任务使用一个二分类学习器进行学习;
测试:多个二分类学习器预测得到结果中,最多的类别作为最终的分类结果。
一对其余(One vs. Rest, OvR)
训练:每次将一个类别作为正例,其余其他类别样例均作为反例,产生N个二分类任务;
测试:若仅有一个分类器预测为正类,则属于该分类器所属类别。若有多个二分类器预测为正类,则通常考虑各分类器的预测置信度,选择置信度最大的类别作为分类结果。
多对多(Many vs. Many, MvM)
每次将若干个类作为正类,若干个其他类作为反类(可见OvO和OvR是MvM的特例),MvM的正反类构造必须有特殊的设计,不能随意选取;以下一种最常用的MvM技术是:纠错输出码(Error Correcting Output Codes, ECOC);
ECOC编解码(训练和预测):
编码:对N个类别做M次划分,每次划分将一部分类别划为正类,一部分划为反类,从而形成一个二分类训练集;这样一共产生M个训练集,可以训练出M个分类器;
解码:M个分类器分别对测试样本进行预测,这些预测结果标记组成一个编码;将这些预测结果编码与每个类别各自的编码进行比较,返回其中距离最小的类别作为最终预测结果;
值得注意的是,在划分时,有两种形式:一是二元码,即每一类要么划分为正类要么负类;二是三元码,即除了正负类,也可以作为停用类。下面举个例子:
以图(a)二元码为例,使用五种划分方式,以f3为例,可以看出C3和C4类被划为正类,C1和C2被划为负类。测试样本被每个分类器预测,得到一组编码,和每类编码进行距离比较,取最近的进行标注。三元码同理,距离计算如下:
ECOC特点:
ECOC对个别学习器的分类错误具有一定的容忍和修正能力(因此被称为纠错输出码);
ECOC编码越长,即学习器数量越多,纠错能力越强,但是计算、存储开销会增大;
对有限类别数,ECOC编码长度超过一定范围就会失去意义。