SMOTE w/随机森林后少数类的过度拟合

数据挖掘 Python 随机森林 熊猫 阶级失衡 超参数
2021-10-14 20:50:27

我使用 SMOTE 制作了一个预测模型,1 类有 1800 个样本,0 类样本有 35000+ 个。因此,根据 SMOTE,创建了合成样本并训练了随机森林。

但是,当我测试我的模型时,我现在得到的大多数结果都是 1 类。我只是尝试在训练集上对其进行测试,这就是我得到的:

没有 SMOTE

没有 SMOTE

使用 SMOTE

使用 SMOTE

我也尝试过超参数优化,但没有奏效

谢谢

PS:在库中pandas使用了SMOTE 实现UnbalancedDataset

1个回答

smote 算法取决于您拥有的数据集。如果您有严重的数据不平衡,例如在您的案例中,如果少数类中的变化非常高并且两个类之间的相似性非常高,则 smote 算法可能无法提供帮助。但是如何知道是否是这种情况。尝试从少数类中复制样本,训练非线性支持向量机并检查结果,如果分类准确度非常低,那么就是这种情况。

Smote 使用 knn 创建新样本,但如果少数类中的变化非常大,那么使用 smote 将使用甚至不是真正邻居的样本。老实说,这个问题没有明确的解决方案,但我可以提出以下建议: 1. 尝试边界 smote:它是 smote 算法的修改版本 2. 尝试 smote boosting:它是 adaboost 的修改版本,其中 adaboost算法增加了 smote 3。如果您可以修改 smote 提升以考虑边界 smote 而不是 smote