一. 基本思想
在之前的博客中,我们讨论了逻辑回归模型(Logistic Regression)解决分类问题。但是我们发现,逻辑回归模型解决的是二分问题。但是在现实情境下,我们的训练集往往包含多个类,那我们可不可以把把多分类问题转化为二分类问题呢?答案是肯定的。多分类问题的基本思想就是,将多分类任务拆解为若干个二分类任务求解。
二. 拆分策略
假设样本数据中有N个类别。
1. 一对一拆分(OvO)
- 基本思想:
将N个类别两两匹配,每次使用2个类别的数据训练分类器,从而产生N(N−1)/2个二分类器。使用时,将样本提交给所有的分类器,得到了N(N−1)/2个结果,最终属于哪个类别通过投票产生。 - 分类器个数:
N(N−1)/2个 - 特点:
分类器较多,且每个分类器在训练时只使用了2个类别的样本数据。
2. 一对多拆分(OvR)
- 基本思想:
每次将一个类作为样例的正例,其他所有均作为反例,得到N个分类器。也就是说,每个分类器能识别一个固定类别。使用时,若有一个分类器为正类,则就为该类别;若有多个分类器为正类,则选择置信度最高的分类器识别的类别。 - 分类器个数:
N个 - 特点:
相比OvO分类器较少,且每个分类器在训练时使用了所有样本数据。
3. 多对多拆分(MvM)
- 基本思想:
每次将若干个类作为正例、若干个类作为反例。显然OvO、OvR都是其特例。MvM的正、反类设计必须有特殊的设计,常用的一种技术:”纠错输出码”,简称ECOC。
ECOC是将编码的思想引入类别的划分,并可能在解码过程中具有容错性。ECOC工作过程主要分为两步:
1.对N个类做M次划分,每次划分将一部分作为正类,一部分划分反类,从而形成一个二分类训练集。一共产生M个训练集,训练出M个分类器。
2.M个分类器分别对测试样本进行预测,这些预测标记组成一个编码。将这个预测编码与每个类各自的编码进行比较,返回其中距离最小的类别作为最终结果。 - 分类器个数:
M个 - 特点:
对同一个学习任务来说,ECOC编码越长,纠错能力越强。然而编码越长所需要的训练的分类器越多,计算存储开销都会增大;另一方面对于有限类别码长超过一定范围就没有意义了。对于同等长度的编码,理论上来说,任务两个类别之间的编码距离越远,则纠错能力越强。
三. 类别不平衡问题
我们在之前讨论的分类问题中,往往都是假设样本是平衡的,也就是正类与反类的样本个数相近。但实际中,很有可能正类与反类个数差别悬殊。我们假设有这种情况,训练数据有反例998个,正例2个,模型是一个永远将新样本预测为反例的学习器,就能达到99.8%的精度,这样显然是不合理的。
解决这个问题,主要有3种方法:(假设反类个数大于正类)
1.欠采样法
对训练集里的反例样本进行“欠采样”,即去除一些反例使得正反例数目接近,再进行学习。由于丢弃很多反例,会使得训练集远小于初始训练集,所以有可能导致欠拟合。所以提出以下策略
代表算法:EasyEnsemble
利用集成学习机制,每次从大多数类中抽取和少数类数目差不多的重新组合,总共构成n个新的训练集,基于每个训练集训练出一个AdaBoost分类器(带阈值),最后结合之前训练分类器结果加权求和减去阈值确定最终分类类别。
2. 过采样法
增加一些正例使得正反例数目接近,然后再学习。需要注意的是不能只是对初始正例样本重复采样,否则导致严重的过拟合。所以提出以下策略
代表算法:SMOTE
合成新的少数样本的策略是,对每个少类a样本,从最近邻中随机选一个样本b,在a、b之间连线上随机选一点作为合成新样本。
3. 再缩放思想
一般我们在训练模型时,正反样本数目是相近的,所以在逻辑回归中,φ(z)≥0.5判断为1类,反之为0类。
但如果训练集中正反例数目相差悬殊,令m+表示正例数目,m-表示反例数目,假设训练集是无偏采样,观测几率就代表了真实几率,只要分类器的预测几率高于观测几率就判定为正例,即
![](https://img.haomeiwen.com/i10902146/9449af1cba069506.png)
即判定为正例,实际上想想也很简单,本来是假设正负例各占一半,所以是0.5,现在类别样本数目不均衡,所以需要大于实际正例数目所占比。
实际上,再缩放实际操作起来不现实,因为假设的前提训练集是真实的样本总体的无偏采样往往不成立,所以观测几率未必反映真实几率。
网友评论