首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解决班级不平衡问题的最佳方法是什么?

解决班级不平衡问题的最佳方法是什么?
EN

Data Science用户
提问于 2017-11-18 22:59:13
回答 3查看 1.4K关注 0票数 2

我有一个数据集我需要在那里发现欺诈。99%不是欺诈,1%是欺诈。

在类不平衡的情况下,可以使用什么方法来解决问题?

EN

回答 3

Data Science用户

发布于 2017-11-19 03:48:51

有两种技术:

  1. 过度取样:在这种情况下有许多技术,玫瑰和击打是最著名的过度取样技术。在玫瑰,它只是增加了少数群体的阶级。在SMOTE中,它综合产生了更多稀有的少数群体阶级,以求平衡。大多数场景比ROSE提供更好的效果,但是您应该两者都尝试。除此之外,只有另一种技术,就是复制记录,使其等于n个数字。这个链接是用来在Python中实现SMOTE的。
  2. UnderSampling:在这方面也有很多技术,但是这个链接-1链接-2给了你更好的关于欠采样的想法。一般来说,我不喜欢少取样,因为你会失去一些信息。

你需要使用这些技术的原因是,如果我们不使用,那么模型的准确性就会很高--它将能够以99%的准确率正确地预测那些不是欺诈的案件,而我们不想这样做。如果它能同样准确地预测出欺诈行为,那么这是一个伟大的洞察力。这只能通过使用上述任何一种技术来实现。

请看一看,如果你还有其他问题,请告诉我。

票数 2
EN

Data Science用户

发布于 2018-05-12 18:03:30

您可以按照这两种方法进行操作。

  1. 正如其他人已经提到的,您可以在培训数据集中将发行版更改为50-50。
  2. 您可以使用加权随机林算法在两个类之间创建一个平衡。在该算法中,随机森林本身增加了两个类的权重,以达到50-50 %的权重。
票数 0
EN

Data Science用户

发布于 2019-02-27 12:48:34

您可以在所有类型的算法中使用一些相关参数,如成本函数,如KappaCENMCEN

免责声明:

如果您正在使用Python,则可以使用PyCM模块。该模块在接收到数据的混淆矩阵后,可以根据数据集的特点,提出适合于评估算法的参数。

下面是从这个模块获取推荐参数的简单代码:

代码语言:javascript
复制
>>> from pycm import *

>>> cm = ConfusionMatrix(matrix={"Class1": {"Class1": 1, "Class2":2}, "Class2": {"Class1": 0, "Class2": 5}})  

>>> print(cm.recommended_list)
["Kappa", "SOA1(Landis & Koch)", "SOA2(Fleiss)", "SOA3(Altman)", "SOA4(Cicchetti)", "CEN", "MCEN", "MCC", "J", "Overall J", "Overall MCC", "Overall CEN", "Overall MCEN", "AUC", "AUCI", "G", "DP", "DPI", "GI"]
票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/24905

复制
相关文章

相似问题

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