多类不平衡数据集欠采样 imblearn

数据挖掘 Python 多类分类 阶级失衡 不平衡学习
2022-03-06 04:04:33

我有一个不平衡的数据集。我正在寻找样本不足。尽管过采样过程花费的时间更少,但模型训练需要很多时间。我看过不平衡学习网站。有几种欠采样方法。我正在研究尝试对具有尽可能多完整信息的类进行欠采样的方法。我尝试.ClusterCentroids()了一些方法,发现平衡类需要很长时间。

我尝试了网站中提到的其他方法。但是,即使具有sampling_strategy相等的值,例如:sampling_strategy={0: 2000, 1: 2000, 2: 2000}生成的数据集不平衡。比如 in.CondensedNearestNeighbour().AllKNN()方法。谁能帮助我使用这些方法创建一个类平衡数据集。

谢谢

迈克尔

1个回答

如果您正在寻找一种快速的解决方法来解决这个问题,您必须增加n_neighbors参数 in AllKNN,但我不建议您使用这种类型的欠采样算法来做您想做的事情!


解释:

AllKN是一种基于Edited Nearest Neighbors的欠采样技术。这些技术试图通过删除接近少数类的样本来对多数类进行欠采样,以使您的类更加可分离。他们的工作方式是从多数类中删除在少数类中至少有 1 个最近邻的样本。问题是,如果类足够可分离并且大多数样本没有少数最近邻,它们就不能被删除!

如果您想要一种对数据进行欠采样的技术,以便从少数类和多数类中获得完全相同数量的样本,我建议您使用不同的技术(例如ClusterCentroids,您使用的就是这样)。基于 ENN 的欠采样技术不是为此而构建的。您还可以阅读本教程,该教程比较了不同的重采样算法 imblearn。

最后,如果可能的话,我建议过采样...