weka 上的 smote 和欠采样的组合

Posted

技术标签:

【中文标题】weka 上的 smote 和欠采样的组合【英文标题】:combination of smote and undersampling on weka 【发布时间】:2015-03-12 23:01:18 【问题描述】:

根据 chawla 等人 (2002) 撰写的论文 平衡数据的最佳性能是将欠采样与 SMOTE 相结合。

我尝试使用欠采样和 SMOTE 组合我的数据集, 但我对欠采样的属性有点困惑。

在 weka 中有 Resample 来减少多数类。 Resample 中有一个属性 biasToUniformClass -- 是否对统一类使用偏差。值 0 保持类分布不变,值 1 确保类分布在输出数据中是均匀的。

我使用值 0,多数类的数据下降,所以少数类的数据下降,当我使用值 1 时,多数类的数据减少,但少数类的数据上升。

我尝试为该属性使用值 1,但我没有使用 smote 来增加少数类的实例,因为数据已经平衡,结果也很好。

那么,这与我将 SMOTE 和欠采样结合起来是否相同,或者我仍然必须尝试在该属性中使用值 0 并执行 SMOTE?

【问题讨论】:

【参考方案1】:

对于欠采样,请参阅 EasyEnsemble 算法 (a Weka implementation was developed by Schubach, Robinson, and Valentini)。

EasyEnsemble 算法允许您将数据拆分为一定数量的平衡分区。要达到这种平衡,请将 numIterations 参数设置为:

(# of多数实例) / (#少数实例) = numIterations

例如,如果总共有 30 个实例,其中 20 个属于多数类,10 个属于少数类,则将 numIterations 参数设置为 2(即 20 个多数实例 / 10 个实例等于 2 个平衡分区)。这 2 个分区应各包含 20 个实例;每个都有相同的 10 个少数实例以及来自多数类的不同 10 个实例。

然后该算法在每个平衡分区上训练分类器, 在测试时,集成在每个平衡分区上训练的一批分类器进行预测。

【讨论】:

以上是关于weka 上的 smote 和欠采样的组合的主要内容,如果未能解决你的问题,请参考以下文章

测试折叠上的 CV 和欠采样

如何在交叉验证和 GridSearchCV 中实现 SMOTE

1.7 非平衡数据的处理方法大全

[1] 样本不均衡问题及其解决办法

spark实现smote近邻采样

Python 过采样在管道中组合了多个采样器