【问题标题】:Feature Engineering on imbalanced data不平衡数据的特征工程
【发布时间】:2020-01-03 18:01:15
【问题描述】:

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

搜索了如何对这类数据做一些特征工程来提高算法的性能。我找到了 2 个解决方案:

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

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

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

【问题讨论】:

  • 有几种欠采样和过采样技术,您可以在开源 Python pacakge 不平衡学习 (imbalanced-learn.org/stable) 中查看。您还可以实施成本敏感的学习,或平衡装袋或提升。现在所有这些都是改变数据集分布的技术,以便您获得对少数类的更好表示。特征工程技术是指对变量的实际转换。

标签: machine-learning feature-engineering imbalanced-data


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您可以将两者结合使用。

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

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

    【讨论】:

      猜你喜欢
      • 2014-09-13
      • 2017-06-17
      • 2018-02-27
      • 2019-12-26
      • 2014-06-19
      • 2016-12-31
      • 2020-06-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多