我有一个不平衡的 PyTorch 数据集。 我想 ballanase 我的数据集,即使我必须删除属于流行类别的样本。怎么办?
现在我只删除某些类别的样本,如果它们的数量超过某个固定值。这在技术上很复杂,也不方便。也许有一些 sklearn 或 PyTorch 方法可以使这个算法更容易实现?
从主流类别中移除样本不是推荐的策略:
相反,您可以使用多种策略来平衡数据集,包括:
Oversampling:为少数类生成新样本以增加它们在数据集中的代表性。这可以通过以下技术来完成:
一个。合成少数过采样技术 (SMOTE)
b.自适应合成采样 (ADASYN)。
欠采样(你正在做的):减少多数类别的样本数量以匹配少数类别的样本数量。这可以通过以下技术来完成:
一个。随机欠采样
b. Tomek 链接。
过采样和欠采样的组合:这涉及使用过采样和欠采样技术的组合来平衡数据集。
PyTorch 中有几种方法可以帮助平衡数据集: