SMOTE过采样和交叉验证

时间:2015-08-06 12:52:21

标签: machine-learning weka text-classification

我正在研究Weka中的二进制分类问题,其中包含高度不平衡的数据集(一个类别为90%,另一个类别为10%)。我首先将SMOTE(http://www.cs.cmu.edu/afs/cs/project/jair/pub/volume16/chawla02a-html/node6.html)应用于整个数据集以使类别均匀,然后对新获得的数据执行10倍交叉验证。我发现(过度?)乐观的结果,F1大约90%。

这是由于过采样吗? 对应用SMOTE的数据执行交叉验证是不好的做法吗? 有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:10)

我认为你应该首先在测试和训练上分割数据,然后在训练部分上执行SMOTE,然后在没有合成示例的数据集部分测试算法,这将给你一个更好地了解算法的性能。

答案 1 :(得分:2)

根据我的经验,手动划分数据并不是解决这个问题的好方法。当你有1个数据集时,你应该对你使用的每个分类器进行交叉验证,你的交叉验证的1倍是你的测试集_你不应该在它上面实现SMOTE,你有9个其他的折叠作为你的训练集你必须有一个平衡的数据集。在循环中重复此操作10次。那么你将获得比手动分割整个数据更好的结果。

很明显,如果您在测试和训练集上应用SMOTE,那么您将拥有合成测试集,它可以提供实际上不正确的高精度。