过采样:整集或训练集

机器算法验证 神经网络 小样本 重采样 模型评估 过采样
2022-03-04 03:43:58

我有一个相当小的 4 000 个点(140 个特征)的数据集来提供给 NN 二元分类器。问题是其中只有约 700 个代表第二类。重新采样整个数据集然后拆分,还是先拆分然后重新采样更常见?各自的优点或缺点是什么?

我目前的方法是试图获得接近 1:1 的比例(2:1 似乎也可以正常工作):

  • 复制并添加属于第二类的元素最多 4 倍
  • 将数据打乱并分成 80:20 的训练/测试集

我得到了似乎不错的结果,但我认为相同的数据点很可能出现在两组中这一事实可能会扭曲结果。这些是不同方法的预测。

2:1 过采样整组

2:1 重采样

对训练集进行 4 倍过采样

训练重采样

当然,考虑到大量数据,这个问题将不存在,但既然如此:对整个数据集进行过采样会产生对评估无效的结果吗?还是在处理小样本时它甚至是首选方法?

任何见解将不胜感激!

编辑:

这个问题似乎解决了一个类似的问题,并说对整个数据集进行过采样是一个坏主意。但是,它没有提及任何特定的分类器。此外,这里的数据并没有严重失衡。但这是一个小样本。

编辑二:ADASYN

我使用 ADASYN 算法生成合成样本。对整个集合进行采样会产生更准确的结果,但对训练集进行采样却是优柔寡断的。准确性更差,但预测本身看起来更好。

1个回答

您的测试集应该尽可能接近您实际应用分类器的分布中的样本。我肯定会先拆分你的数据集(事实上,这通常是我获得数据集后要做的第一件事),收起你的测试集,然后在训练集上做你想做的一切。否则,偏见很容易蔓延。

这同样适用于您的验证集,例如,如果您使用交叉验证。您真正想要的是估计您的方法在样本外的工作情况,以便您可以选择最佳方法。最好的方法是根据实际的、未经修改的样本外数据评估您的方法。