机器学习读书笔记-4(多分类学习与类别不平衡问题)

时间:2024-05-23 08:48:08

1 多分类学习

现实中常常遇到的是多分类的学习任务,有些二分类的学习方法可以直接推广到多分类,在更多情况下,我们是基于一些基本策略,利用二分类学习器来解决多分类问题。
机器学习读书笔记-4(多分类学习与类别不平衡问题)
下面介绍三种最经典的策略。

1.1 “一对一”(one vs one, 简称OvO)

OvO将这N个类别进行两两配对,从而产生N(N-1)/2 个二分类任务,通过训练将得到N(N-1)/2 个二分类模型。在测试阶段,新样本将同时提交到所有的二分类模型当中,从而得到N(N-1)/2 个分类结果,最终的结果可以通过投票决策产生。分类示意图如下图所示:
机器学习读书笔记-4(多分类学习与类别不平衡问题)

1.2 “一对其余”(one vs rest,简称OvR)

OvR是每次将一个类别作为正例,其余所有的类别统称为反例,从而训练N个分类器。在测试阶段,若仅有一个分类器预测为正类,则对应的类别标记作为最终分类结果(这里不太明白的,可以好好思考一下,很容易明白的);若有多个分类器预测为正类,则通常考虑各个分类器的预测置信度,选择置信度最大的类别标记作为最终分类结果。分类示意图如下所示:
机器学习读书笔记-4(多分类学习与类别不平衡问题)
容易看出,OvR只需要训练N个分类器,而OvO需要N(N-1)/2 个分类器,因此OvO的存储开销和测试时间开销通常比OvR更大;但在训练阶段,OvR的每个分类器均使用全部训练样例,而OvO的每个分类器仅仅用到了两个类别的样本数据,因此,在类别很多时候,OvO的训练时间开销通常比OvR更小。至于预测性能,则取决于具体的数据分布,在多数情况下两者相差不多。

1.3 “多对多”(many vs many,简称MvM)

MvM是每次将若干个类别作为正类,若干个其他类别作为反类。显然,OvO和OvR都是MvM的特例。MvM的正、反类构造必须有特殊的设计,不能随意选取。常用的一种选取技术时:“纠错输出码”(error correcting output codes,简称ECOC)。

ECOC是将编码的思想引入类别拆分,并尽可能在解码过程中具有容错性。主要步骤如下:
机器学习读书笔记-4(多分类学习与类别不平衡问题)
类别的划分通过“编码矩阵”(coding matrix)指定。编码矩阵有多种形式,常见的主要有二元码和三元码。

ECOC编码对分类器的错误有一定的容忍和修正能力。一般来说,对同一个学习任务,ECOC编码越长,纠错能力越强,然而,编码越长,意味着所需训练的分类器就越多,计算、存储开销都会增大;另一方面,对有限类别数,可能的组合数目是有限的,码长超过一定的范围就失去了意义。对同等长度的编码,理论上来说,任意两个类别之间的编码距离越远,则纠错能力越强。

2 类别不平衡问题

类别不平衡(class-imbalance)就是指分类任务中不同类别的训练样例数目差别很大的情况。例如有1000个样本集中有998个反例、2个正例,那么训练得到的学习器只会预测为反例,而且可以达到99.8%的精度,然而这样的学习器是没有价值的。处理类别不平衡的问题一般有三种方法:
(我么对于一个正类样例少的数据集来分析。)

1)欠采样(undersampling)
欠采样的方法就是去除数据集当中一些反例,使得正、反例数目接近,然后再进行学习。去除反例不能随机丢弃,这样会失去一些重要的信息,欠采样法的代表性算法EasyEnsemble则是利用集成学习机制,将反例划分为若干个集合供不同的学习器使用,这样对每个学习器来看都进行了欠采样,但在全局来看却不会失去重要信息。

2)过采样(oversampling)
即增加一些正例使得正、反例数目接近,然后再进行学习。过采样不能简单的对初始正例样本进行重复采样,否则会导致严重的过拟合;过采样法的代表性算法SMOTE是通过对训练集里的整理进行插值来产生额外的正例。

3)阈值移动(threshold-moving)
阈值移动简单来说就是改变分类器进行预测时所采用的阈值。在一般不存在类别平衡问题时候,y值表示正例的可能性,1-y表示反例的可能性,一般用y / (1-y) > 1来表示正例,等于1表示正、反例可能性相同。但是在存在类别平衡问题的情况下,零m+表示训练集的正例数据,m-表示训练集的反例数目,则m+ / m- 表示观测几率,由于我们通常假设训练集是真是样本总体的无差别采样,因此观察几率就代表了真实几率。于是,分类器的预测几率高于观测几率就判定为正例,即
机器学习读书笔记-4(多分类学习与类别不平衡问题)
根据上面描述,对分类器采用的预测值进行调整,即
机器学习读书笔记-4(多分类学习与类别不平衡问题)