首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用SMOTE时,验证集的性能较差

在使用SMOTE时,验证集的性能较差
EN

Stack Overflow用户
提问于 2013-06-13 13:17:07
回答 1查看 2.3K关注 0票数 4

我想用两个类别进行分类。当我不使用击打进行分类时,我得到( 10倍交叉验证的平均值):

代码语言:javascript
复制
Precision       Recall            f-1
0,640950987     0,815410434       0,714925374

当我使用smote:(超过200%的少数类样本,k= 5) (也是10个交叉验证,这意味着我的测试和训练集中有合成数据。

代码语言:javascript
复制
Precision        Recall           f-1
0,831024643      0,783434343      0,804894232

正如你所看到的,这很有效。

然而,当我在验证数据上测试这个经过训练的模型时(它没有任何合成数据,也没有被用来构造合成数据点)。

代码语言:javascript
复制
Precision        Recall           f-1
0,644335755      0,799044453      0,709791138

这太可怕了。我用随机决策林来分类。

有谁知道为什么会发生这种情况&解决这个问题的方法吗?任何有用的技巧,关于额外的测试,我可以尝试获得更多的洞察力,也欢迎。

更多的信息:我没有触及多数阶级。我在Python中为scikit工作-学习和这种算法为SMOTE。

测试数据(有合成数据)的混淆矩阵:

验证集中的混淆矩阵(既没有任何合成数据,也没有用作创建合成数据的基础):

编辑:,我读到问题可能在于Tomek链接是创建的。因此,我编写了一些代码来删除Tomek链接.虽然这并不能提高分类分数。

Edit2:我读到,问题可能在于有太多的重叠。解决这一问题的方法是一种更智能的合成样本生成算法。因此我实现了

ADASYN:用于不平衡学习的自适应合成抽样方法

。我的实现可以找到这里。它的表现比击打还差。

EN

回答 1

Stack Overflow用户

发布于 2013-06-15 11:29:51

重叠可能是原因。如果给定变量的类之间存在重叠,则SMOTE将生成影响可分性的合成点。正如您所指出的,可以生成Tomek链接以及损害分类的其他点。我建议你尝试其他类型的击打,如安全弹或硼线弹。你可以在以下几个方面找到他们的想法:

91

43

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17088051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档