之前研究的分类算法比如SVM,LR等,解决的都是二分类问题,那如果问题用有多个类别呢?二分类问题转多分类问题,常用的策略有如下三种:
1、常见的二分类转多分类策略
1.1一对一的策略
给定数据集D这里有N个类别,这种情况下就是将这些类别两两配对,从而产生N(N−1)/2个二分类任务,在测试的时候把样本交给这些分类器,然后进行投票
1.2一对其余策略
将每一次的一个类作为正例,其余作为反例,总共训练N个分类器。测试的时候若仅有一个分类器预测为正的类别则对应的类别标记作为最终分类结果,若有多个分类器预测为正类,则选择置信度最大的类别作为最终分类结果。
1.3多对多分类策略
基于一种纠错输出码的分类策略,分为两个步骤:
编码:对N个类别做M次划分,每次划分将一部分类别划为正类,一部分划为反类,从而形成一个二分类训练集,这样一共产生M个训练集,可训练出M个分类器
解码M个分类器分别对测试样本进行预测,这些预测标记组成一个编码。将这个预测编码与每个类别各自的编码进行比较,返回其中距离最小的类别作为最终预测的结果
这里的类别划分通过编码矩阵指定,编码矩阵主要有,二元码(每个类别分别指定正类反类),三元码(正,反,停用)
编码示例如下图:
一般来说编码越长则纠错能力越强,但是意味着所需训练的分类器越多,计算存储的开销越大,不一定得到越好的训练效果,因为跟把样本进行分组也有关系