为什么类权重不能解决不平衡的分类问题?

数据挖掘 分类 阶级失衡 加权数据
2021-09-22 08:17:02

我知道在不平衡分类中,分类器倾向于将所有测试标签预测为更大的类标签,但如果我们在损失函数中使用类权重,那么期望问题得到解决是合理的。那么为什么我们需要一些方法,比如下采样或上采样来解决不平衡分类问题呢?

1个回答

类权重确实有助于解决不平衡问题(“解决”似乎太多了),但上采样在这方面有一定的优势。

如果您考虑一下,对每个类中的样本数量进行下采样/上采样以平衡数据集几乎与使用类权重完全相同。

例如,假设您有一个包含 3 个样本的数据集,分为 2 个类别:并且您正在使用 MSE 损失进行训练。

您可以选择对 B 类的样本数量进行上采样,这将在单个时期内为您提供以下成本函数:

这是小差异生效的地方,如果您在批量梯度下降中进行训练(每个时期更新单个权重),则对 2 个相同的 B1 样本的预测将是相同的,因此损失函数可以写为:

与使用加权损失函数完全相同但是,如果您使用小批量梯度下降(就像我们现在的大多数模型一样),两个不同的样本可能会出现在不同的小批量中,因此在同一时期对它们的预测将不一样(因为一个其中将通过一个已经更新过的模型)。

这是一个很小的差异,但有时它很重要。这意味着对于加权类,有效学习率在 mini-batch 之间有所不同在某些情况下,这会使学习变得不稳定。因此,在可能的情况下,上采样是更好的方法(实际上它会产生更好的结果)。

问题是您不能总是毫无顾虑地进行上采样/下采样。如果我们回到我们的示例,但这次我们有一个包含 5 个样本的数据集,分为 2 个类别:

下采样是有问题的——我们忽略了 3 个 A 类样本中的哪一个?

上采样是有问题的——我们复制了 2 个 B 类样本中的哪一个?

它可以通过随机选择在每个时期保留/忽略哪些样本来解决,但是对于非常大的数据集,这可能会导致处理速度变慢......所以加权类仍然是一个有效的选项