具有偏差百分比的分类数据集称为不平衡。大部分数据集包含的类称为大多数类。构成较小的比例为少数类。
哪些情况会被视为不平衡?答案可能从轻度到重度不等,如下表所示。
不平衡程度 | 少数族裔比例 |
---|---|
轻度 | 数据集的 20-40% |
中 | 数据集的 1-20% |
极端 | 不到 1% 的数据集 |
为什么要留意不平衡的数据?如果您的数据集任务具有不平衡的数据集,则可能需要应用特定的采样方法。
请看以下用于检测欺诈的模型示例。此数据集每 200 次交易发生一次欺诈实例,因此在真实分布中,大约 0.5% 的数据为正值。
为什么会出现问题?相对于负例而言,正类别很少,因此机器学习模型会将大部分时间用于负例,且不能从正类别中学习足够多的数据。例如,如果批次大小为 128,则许多批次没有正例,因此渐变信息不全面。
如果您的数据集不平衡,请先尝试对真实分布进行训练。如果模型效果良好且能够泛化,您就大功告成了!如果没有,请尝试以下降采样和加权方法。
降采样和加权
处理不平衡数据的有效方法是对大多数类别进行降采样和加权。我们先定义以下两个新术语:
- 下采样(在此上下文中)意味着使用大多数类示例的不成比例的比例进行训练。
- 加权是指将示例权重添加到降采样的类中,等于降采样所依据的因子。
第 1 步:对多数类进行降采样。我们再来看一下欺诈性数据集的示例,其中 1 个正例到 200 个负例。以 10 为因数进行降采样可将余额从 1 个正数提高到 20 个负值 (5%)。虽然产生的训练集仍然适度不平衡,但正类别与负类别的比例远远高于原始极不平衡比例 (0.5%)。
第 2 步:对降采样类进行加权:最后一步是向降采样类添加示例权重。由于我们以 10 为因子进行降采样,因此示例权重应为 10。
在涉及模型参数(如神经网络中的连接)时,您可能会听到“权重”这个术语。在这里,我们将介绍示例权重,这意味着在训练期间更具体地统计单个样本的数量。示例权重为 10 表示模型将权重视为 10 的一个示例(在计算损失时)的重要性为 10 倍。
权重应该等于您降采样时使用的因子:
\[\text{ \{example weight\} = \{original example weight\} × \{downsampling factor\} }\]
为什么要降采样和超量?
在降采样后添加示例权重似乎很奇怪。我们尝试改进模型以改进少数类,为什么我们要优先考虑大多数模型?以下是生成的更改:
- 更快的收敛:在训练期间,我们看到少数类会更频繁,这有助于模型更快地收敛。
- 磁盘空间:通过将多数类别整合到权重更高的示例中,节省的磁盘空间更少。这种节省为少数类提供了更多磁盘空间,因此我们可以从该类收集更多数量的样本和更广泛的示例。
- 校准:权重分配可确保我们的模型仍然会校准;输出仍会被视为概率。