为什么过采样优于类权重?

数据挖掘 分类 预测建模 预处理 阶级失衡 不平衡学习
2021-10-14 00:38:07

我有一个高度不平衡的数据集。一类有 412 个(0 类)样本,而另一类有 67215(1 类)样本。对于它的分类,我使用的是 MLP。当我对 0 类使用 165 的类权重,对 1 类(在 keras 中)使用 1 时,我得到了非常糟糕的结果。但是,如果我对数据集进行过采样,我会得到非常好的结果。这背后的原因是什么?

1个回答

这可能是您的采样策略

如果您只是通过从 复制数据来进行过采样class 0,那么您很可能是过拟合了。将一遍又一遍地看到相同的数据点。

您可以尝试另一种过采样策略,例如 SMOTE 或 ADASYN。这些技术创建了最接近决策边界的数据点,因此您不太倾向于过度拟合“简单”的数据点。

打击和adasyn

您可以尝试的另一件事是同时对少数类进行过采样和对多数类进行欠采样。在选择一种方法来执行此操作时,请选择一种可以在决策边界附近进行过采样并在远离决策边界时进行欠采样的方法。例如,这里是 SMOTETomek。注意紫色和绿色类主要是如何过度采样的,而黄色类主要是欠采样的。

斯托梅托梅克

这些图像来自不平衡学习,这是一个 Python 包,可用于所有这些采样策略。

它可能是你的管道

如果您使用过采样数据来测试模型性能,您可能(不情愿地)操纵您的结果。您需要确保仅将增强数据用于训练,而不用于验证和测试。

          +-> training set ---> data augmentation --+
          |                                         |
          |                                         +-> model training --+
          |                                         |                    |
all data -+-> validation set -----------------------+                    |
          |                                                              +-> model testing
          |                                                              |
          |                                                              |
          +-> test set --------------------------------------------------+