如何平衡 PyTorch 数据集?

问题描述 投票:0回答:1

我有一个不平衡的 PyTorch 数据集。 The number of A and V samples is much lower than the others 我想 ballanase 我的数据集,即使我必须删除属于流行类别的样本。怎么办?

现在我只删除某些类别的样本,如果它们的数量超过某个固定值。这在技术上很复杂,也不方便。也许有一些 sklearn 或 PyTorch 方法可以使这个算法更容易实现?

python deep-learning pytorch
1个回答
0
投票

从主流类别中移除样本不是推荐的策略:

  1. 丢失重要信息,
  2. 可能会导致模型偏向少数类。

相反,您可以使用多种策略来平衡数据集,包括:

  1. Oversampling:为少数类生成新样本以增加它们在数据集中的代表性。这可以通过以下技术来完成:

    一个。合成少数过采样技术 (SMOTE)
    b.自适应合成采样 (ADASYN)。

  2. 欠采样(你正在做的):减少多数类别的样本数量以匹配少数类别的样本数量。这可以通过以下技术来完成:

    一个。随机欠采样
    b. Tomek 链接。

  3. 过采样和欠采样的组合:这涉及使用过采样和欠采样技术的组合来平衡数据集。

PyTorch 中有几种方法可以帮助平衡数据集:

  1. WeightedRandomSampler:此采样器允许您为每个类指定权重,可用于对少数类进行过采样或对多数类进行欠采样。
  2. DataLoader:该类提供了多个用于混洗和批处理数据的选项,这有助于确保每个批次包含类的平衡表示。
© www.soinside.com 2019 - 2024. All rights reserved.