处理巨大的数据集不平衡(2 类值)和适当的 ML 算法

数据挖掘 机器学习 数据集
2021-09-25 09:06:59

我适当地训练和测试了由 305000 个实例和 70000 个实例组成的按时间顺序排列的数据集。每个实例中有 15 个特征,只有 2 个可能的类值(NEW、OLD)。问题是训练集中只有 725 个 OLD 实例,而测试中有 95 个。

唯一能成功处理不平衡的算法是 Weka 中的 NaiveBayes(OLD 类精度为 0.02),其他(树)将每个实例分类为 NEW。在这种情况下,处理不平衡的最佳方法和适当的算法是什么?

先感谢您。

4个回答

我不允许发表评论,但我有更多建议:您可以尝试实施一些“过采样技术”,例如 SMOTE: http ://scholar.google.com/scholar?q=oversampling+minority+classes

您可以将聚类算法应用于多数类中的实例,并使用聚类算法提供的质心/中心点训练分类器。这是对多数类进行二次采样,与对少数类进行过采样相反。

除了对多数类进行欠采样(即只取几个 NEW),您可以考虑对少数类进行过采样(本质上是复制您的 OLD,但还有其他更聪明的方法可以做到这一点)

请注意,过采样可能会导致过拟合,因此请特别注意测试您的分类器

还要检查简历上的这个答案:

在 weka 中,您可以将权重分配给您的学习实例。分配与类频率权重成反比的权重,你应该很高兴。另一种方法是玩采样。