首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大不平衡数据的机器学习模型建议

大不平衡数据的机器学习模型建议
EN

Stack Overflow用户
提问于 2016-05-22 02:42:58
回答 4查看 582关注 0票数 4

我有分类问题的数据集。我总共上了50节课。

代码语言:javascript
复制
 Class1: 10,000 examples 
 Class2: 10 examples
 Class3: 5 examples 
 Class4: 35 examples
 .
 .
 . 
and so on.

我尝试用支持向量机(线性核和高斯核)训练分类器。在测试数据上,我的准确率分别是65 %和72%。现在我在考虑一个神经网络。你对大型不平衡数据的机器学习模型和算法有什么建议吗?这对我会有很大帮助

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-05-22 13:48:53

您应该提供有关数据集特性和类分布的更多信息,这将有助于其他人向您提供建议。无论如何,我不认为神经网络适合这里,因为这个数据集太小了。

假设50%或更多的样本属于1类,那么我首先要寻找一个分类器来区分1类和非1类样本(二进制分类)。该分类器的性能应该优于朴素分类器(benchmark),后者随机选择一个与训练集类分布相对应的分类。例如,假设有1000个样本,其中700个属于第一类,那么基准分类器将一个新样本分类为1类,概率为700 /1000=0.7(就像抛硬币一样)。

一旦你找到了一个精度很高的分类器,下一个阶段可以是将非第一类分类样本分类为其他49个类别之一,假设这些分类比RF、NB和KNN更平衡。

票数 3
EN

Stack Overflow用户

发布于 2022-09-02 06:06:48

有多种处理不平衡数据集的方法,您可以尝试

  1. 上采样
  2. 下采样
  3. 类权

我建议要么进行抽样,要么提供等级权重来平衡。

https://towardsdatascience.com/5-techniques-to-work-with-imbalanced-data-in-machine-learning-80836d45d30c

你应该考虑一下你的性能指标,不要用准确性评分作为你的性能指标,你可以使用日志丢失或任何其他合适的度量

https://machinelearningmastery.com/failure-of-accuracy-for-imbalanced-class-distributions/

票数 1
EN

Stack Overflow用户

发布于 2016-05-22 13:32:44

根据我的经验,处理不平衡班级最成功的方法是:

  1. 输入的更改分布: 20000样本(所拥有的示例的大致数目)不是一个大的数字,因此您可以简单地通过多次使用来自较少频率的类的每个样本来更改数据集分布。根据不同的类,您可以将它们中的示例数设置为例如,在您的培训集中,每个类的示例数为6000或8000。在这种情况下,请记住不要更改测试和验证集上的分布。
  2. 增加训练时间:在神经网络的情况下,当改变输入的分布是不可能的时候,我强烈建议你尝试学习网络相当长的时间(例如1000个时代)。在这种情况下,你必须记住正规化。我通常使用退出l2加权正则化,并通过随机搜索算法学习它们的参数。
  3. 减少批处理大小:在神经网络情况下,减少批处理大小的可能会提高较少频繁类的性能。
  4. Crossentropy更改您的丢失函数:在中使用MAPE的也可以提高不太频繁的类的准确性。

感觉被邀请去测试不同的方法组合,例如随机搜索算法。

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

https://stackoverflow.com/questions/37370011

复制
相关文章

相似问题

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