七、类别不平衡问题

  1. 通常在机器学习中都有一个基本假设:不同类别的训练样本数目相当。

    • 如果不同类别的训练样本数目稍有差别,通常影响不大。

    • 如果不同类别的训练样本数目差别很大(极端情况下,如正类样本只有十个,反类样本一百万个),则会对学习过程造成影响。这就是类别不平衡问题(class-imbalance)。

      这里讨论中,假设正类样本偏少、反类样本偏多。

  2. 对于类别不平衡问题,常用的有三种方法:

    • 基于再缩放策略进行决策,称之为阈值移动threshold-moving
    • 直接对训练集里的反类样本进行欠采样undersampling
    • 直接对训练集里的正类样本进行过采样oversampling
  3. 对于正负样本极不平衡的场景,可以完全换一个不同的角度来看问题:将它看作一分类One Class Learning或者异常检测Novelty Detection问题。

    此时可以用One-class SVM模型。

7.1 再缩放

  1. 假设对样本 七、类别不平衡问题 - 图1 进行分类时,预测为正类的概率为 七、类别不平衡问题 - 图2。常规的做法是将 七、类别不平衡问题 - 图3 与一个阈值,比如 0.5 , 进行比较。 如果 七、类别不平衡问题 - 图4 时,就判别该样本为正类。

    概率 七、类别不平衡问题 - 图5 刻画了样本为正类的可能性, 几率 七、类别不平衡问题 - 图6 刻画了正类可能性与反类可能性的比值。

  2. 当存在类别不平衡时,假设 七、类别不平衡问题 - 图7 表示正类样本数目,七、类别不平衡问题 - 图8 表示反类样本数目,则观测几率是 七、类别不平衡问题 - 图9

    假设训练集是真实样本总体的无偏采样,因此可以用观测几率代替真实几率。于是只要分类器的预测几率高于观测几率就应该判断为正类。即如果 七、类别不平衡问题 - 图10 , 则预测为正类。

  3. 通常分类器都是基于概率值来进行预测的,因此需要对其预测值进行调整。在进行预测的时候,令:

    七、类别不平衡问题 - 图11

    然后再将 七、类别不平衡问题 - 图12 跟阈值比较。这就是类别不平衡学习的一个基本策略:再缩放rescalling

  4. 再缩放虽然简单,但是由于“训练集是真实样本总体的无偏采样”这个假设往往不成立,所以无法基于训练集观测几率来推断出真实几率。

7.2 欠采样

  1. 欠采样会去除一些反类使得正、反类数目接近。

  2. 欠采样若随机抛弃反类,则可能丢失一些重要信息。

    常用方法是将反类划分成若干个集合供不同学习器使用,这样对每个学习器来看都是欠采样,但是全局来看并不会丢失重要信息。

7.3 过采样

  1. 过采样会增加一些正类使得正、反类数目接近。

  2. 过采样不能简单的对原始正类进行重复采样,否则会导致严重的过拟合。

    通常在原始正类之间插值来生成额外的正类。

  3. 常见的有以下过采样策略:

    • SMOTE方法:对于每个正类样本 七、类别不平衡问题 - 图13 ,从它的 七、类别不平衡问题 - 图14 近邻中随机选取一个样本点 七、类别不平衡问题 - 图15 ,然后根据下式生成一个新的正类样本:七、类别不平衡问题 - 图16 ,其中 七、类别不平衡问题 - 图17 是随机数。

      该方法有两个问题:

    • 增加了正类样本之间重叠的可能性。

    • 生成了一些没有提供有益信息的样本。

    • Borderline-SMOTE方法:它类似SMOTE,但是对于每个正类样本 七、类别不平衡问题 - 图18 ,首先要评估:是否应该为该正类样本生成新的样本点。

      • 评估准则是:如果 七、类别不平衡问题 - 图19七、类别不平衡问题 - 图20 近邻中,有超过一半以上的反类样本,则为该正类样本生成新样本。

        反类样本超过一半,则说明该正类样本位于正类与反类的边界。如果 七、类别不平衡问题 - 图21七、类别不平衡问题 - 图22 近邻中正类样本比较多,则该正类样本很可能就是处于一群正类样本的内部。

      • 该方法生成新样本的算法与SMOTE方法相同。