数据集:类别不平衡的数据集

本部分将探讨以下三个问题:

  • 类平衡数据集与类不平衡数据集有何区别?
  • 为什么训练不平衡的数据集很困难?
  • 如何克服训练不平衡数据集的问题?

类别平衡的数据集与类别不平衡的数据集

假设有一个数据集包含一个分类标签,其值为正类别或负类别。在类别平衡的数据集中,正类别负类别的数量大致相等。例如,包含 235 个正类和 247 个负类的数据集就是平衡数据集。

类别不平衡的数据集中,一个标签比另一个标签常见得多。在现实世界中,类别不平衡的数据集远比类别平衡的数据集常见。例如,在信用卡交易数据集中,欺诈性购买行为可能仅占样本的不到 0.1%。同样,在医疗诊断数据集中,患有某种罕见病毒的患者数量可能不到总样本数的 0.01%。在类别不平衡的数据集中:

训练严重类别不平衡的数据集的难度

训练旨在创建一个能够成功区分正类别和负类别的模型。为此,批次需要有足够数量的正面类和负面类。在轻度分类不平衡的数据集上训练时,这并不是问题,因为即使是小批次通常也包含足够的正类和负类示例。不过,如果数据集的类别严重不平衡,可能无法包含足够的少数类示例来支持适当的训练。

例如,假设有一个如图 6 所示的分类不平衡的数据集,其中:

  • 200 个标签属于多数类。
  • 2 个标签属于少数类。
图 6. 包含 202 个示例的数据集。其中 200 个示例的标签为“向日葵”,2 个示例的标签为“玫瑰”。
图 6. 一个高度不平衡的花卉数据集,其中包含的向日葵比玫瑰多得多。

 

如果批次大小为 20,则大多数批次不会包含任何少数类别的样本。如果批次大小为 100,则每个批次平均只包含一个少数类示例,这不足以进行适当的训练。即使批次大小大得多,仍会产生如此不平衡的比例,以至于模型可能无法正常训练。

训练类别不平衡的数据集

在训练期间,模型应学习两件事:

  • 每个类别的外观;也就是说,哪些特征值对应于哪些类别?
  • 每个类别的常见程度;也就是说,类别的相对分布情况如何?

标准训练会混淆这两个目标。相比之下,以下两步技术(称为对多数类进行下采样和上调权重)会分离这两个目标,使模型能够实现这两个目标。

第 1 步:对多数类进行下采样

降采样是指使用占比异常低的多数类样本进行训练。也就是说,您可以通过从训练中省略许多多数类示例,人为地强制使类不平衡的数据集变得更加平衡。下采样可大幅提高每个批次包含足够少数类示例的概率,从而能够正确高效地训练模型。

例如,图 6 中显示的不平衡类数据集包含 99% 的多数类示例和 1% 的少数类示例。将多数类降采样 25 倍,人为地创建一个更平衡的训练集(多数类占 80%,少数类占 20%),如图 7 所示:

图 7. 10 个示例,其中 8 个是向日葵,2 个是玫瑰。
图 7. 将多数类降采样 25 倍。

 

第 2 步:增加下采样后类别的权重

下采样会向模型展示一个类比现实世界更平衡的人工世界,从而引入预测偏差。为了修正这种偏差,您必须按降采样所依据的因子“上调”多数类别的权重。上调权重是指与少数类示例的损失相比,更严厉地处理多数类示例的损失。

例如,我们将多数类下采样了 25 倍,因此必须将多数类上调权重 25 倍。也就是说,当模型错误地预测了多数类时,将损失视为 25 个错误(将常规损失乘以 25)。

图 8. 少数类别的错误预测的损失会正常处理。不过,对于多数类别的错误预测,损失会受到 25 倍的惩罚。
图 8. 将多数类的权重提高 25 倍。

 

您应该下采样多少和上调权重多少才能重新平衡数据集? 为了确定答案,您应该尝试不同的下采样和上调权重系数,就像尝试其他超参数一样。

此技巧的优势

对多数类进行降采样和上调权重可带来以下好处:

  • 更好的模型:生成的模型“知道”以下两点:
    • 特征与标签之间的关联
    • 类别的真实分布
  • 更快收敛:在训练期间,模型会更频繁地看到少数类,这有助于模型更快地收敛。