1

我正在针对分类问题训练机器学习模型。我的数据集是10000个观测值,包含37个分类类别。但是数据不平衡,我有一些类有100 个观察值,而其他一些类有30004000 个观察值。

在搜索了如何对此类数据进行一些特征工程以提高算法的性能之后。我找到了2个解决方案:

  • 上采样意味着获得更多关于少数类的数据
  • 下采样,这意味着删除关于多数类的数据

根据第一个解决方案:我有很多类有一些观察,所以它需要更多的数据和很长时间。所以这对我来说很难!
并且通过应用第二个:我认为所有类都会有一些观察结果,并且数据会非常小,因此算法很难概括。

那么我可以尝试解决这个问题的另一种解决方案吗?

4

2 回答 2

1

您可以更改损失函数中的权重,以便在优化时较小的类具有更大的重要性。例如,在 keras 中,您可以使用weighted_cross_entropy_with_logits

于 2020-01-03T18:14:42.150 回答
0

你可以使用两者的组合。

如果您对所有少数类进行上采样以匹配多数类,听起来您会担心得到一个太大的数据集。如果是这种情况,您可以将多数类下采样到 25% 或 50%,同时对少数类进行上采样。上采样的替代方法是使用 SMOTE 等算法为少数类合成样本。

如果您正在批量训练神经网络,最好确保训练集被正确打乱,并且您在小批量中具有均匀分布的少数/多数样本。

于 2021-05-06T20:37:38.213 回答