多分类器算法的思想

一. 基本思想

在之前的博客中,我们讨论了逻辑回归模型(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-表示反例数目,假设训练集是无偏采样,观测几率就代表了真实几率,只要分类器的预测几率高于观测几率就判定为正例,即

 

即判定为正例,实际上想想也很简单,本来是假设正负例各占一半,所以是0.5,现在类别样本数目不均衡,所以需要大于实际正例数目所占比
实际上,再缩放实际操作起来不现实,因为假设的前提训练集是真实的样本总体的无偏采样往往不成立,所以观测几率未必反映真实几率。



作者:躺在稻田里的小白菜
链接:https://www.jianshu.com/p/70a842f327c0
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值