假设某个数据集包含分类标签,该标签的值是 肯定或否定。在均衡的数据集中,正数 和负标签大致相等。不过,如果一个标签更常见 与另一个标签相比,则数据集 不平衡。 不平衡数据集中的主要标签称为多数类;不太常见的标签称为少数类。
下表提供了不同程度的失衡的普遍接受名称和范围:
属于少数类的数据所占的百分比 | 不平衡程度 |
---|---|
占数据集 20-40% 的百分比 | 温和 |
1-20% 的数据集 | 中 |
不到数据集的 1% | 极端 |
例如,假设一个病毒检测数据集,其中少数类占数据集的 0.5%,多数类占 99.5%。这种极不均衡的数据集在医学领域很常见, 绝大多数实验对象都不会感染病毒
不平衡的数据集有时不包含足够的少数类示例,无法正确训练模型。也就是说,正例标签太少,模型几乎完全依靠负例标签进行训练,无法充分学习正例标签。例如: 如果批次大小为 50,则许多批次都不包含正值标签。
通常,尤其是对于轻度不平衡和部分中度不平衡的数据集,不平衡并不是问题。因此,您应先尝试 使用原始数据集进行训练。如果模型表现良好,就说明完成了。 否则,至少该次优模型能够提供良好的 未来实验的基准。 之后,您可以尝试使用以下方法来解决由不平衡的数据集造成的问题。
降采样和上调权重
处理不平衡数据集的一种方法是对多数类进行抽样并增加权重。这两个新术语的定义如下:
第 1 步:对多数类进行下采样。假设病毒数据集 图 5 中每 200 个负类别标签对应 1 个正类别标签的比率。 按 10 的比例进行下采样可将正负例比例调整为 1 比 20(5%)。虽然生成的训练集仍然略不平衡,但正例与负例的比率远远优于原始的极不平衡比率 (0.5%)。
第 2 步:提高降采样类的权重:向降采样类添加示例权重。按 10 的比例进行下采样后,示例权重应为 10。(是的,这可能看起来违反直觉,但我们稍后会解释原因。)
术语权重 并非指模型参数(如 w1 或 w2)。这里的权重是指示例权重,它会在训练期间提高单个示例的重要性。示例权重为 10 表示模型会将该示例视为权重为 1 的示例的 10 倍重要(在计算损失时)。
weight 应等于您用于降采样的因数:
\[\text{ \{example weight\} = \{original example weight\} × \{downsampling factor\} }\]
在下采样后添加示例权重可能看起来很奇怪。毕竟,您正尝试让模型在少数类别上取得更好的效果,那么为什么要对多数类别进行加权?事实上,增加多数类的权重往往会降低预测偏差。也就是说,在下采样后增加权重往往会缩小模型预测结果的平均值与数据集标签的平均值之间的差异。
重新平衡比率
您应按什么比例下采样和上调权重,才能使数据集重新平衡? 为了确定答案,您应对重新平衡比率进行实验,就像对其他超参数进行实验一样。不过,最终的答案取决于以下因素:
- 批次大小
- 失衡比率
- 训练集中的示例数
理想情况下,每个批次应包含多个少数类示例。如果批处理不包含足够的少数类,则训练效果会非常差。批处理大小应是失衡比率的数倍。例如,如果不平衡比率为 100:1,则批次大小应 至少为 500。
练习:检查您的理解情况
请考虑以下情况:
- 训练集包含略多于 10 亿个示例。
- 批处理大小为 128。
- 不平衡比率为 100:1,因此训练集的划分如下:
- 约 10 亿个多数类别样本。
- 约 1,000 万个少数类样本。