首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理这个不平衡的类倾斜的数据集?

如何处理这个不平衡的类倾斜的数据集?
EN

Stack Overflow用户
提问于 2016-09-15 13:20:57
回答 2查看 1.7K关注 0票数 2

我必须处理Class Imbalance Problem,并在培训数据集中对输入测试数据集执行binary-classification,其中大多数类标签为1(另一个类标签为0)。

例如,以下是培训数据的一部分:

代码语言:javascript
复制
93.65034,94.50283,94.6677,94.20174,94.93986,95.21071,1
94.13783,94.61797,94.50526,95.66091,95.99478,95.12608,1
94.0238,93.95445,94.77115,94.65469,95.08566,94.97906,1
94.36343,94.32839,95.33167,95.24738,94.57213,95.05634,1
94.5774,93.92291,94.96261,95.40926,95.97659,95.17691,0
93.76617,94.27253,94.38002,94.28448,94.19957,94.98924,0

最后一列是class-label - 01。实际的数据集与类的10:1比率有很大的偏差,即大约700个样本的class label为0,而其余的6800个样本的class label为1。

上面提到的只是给定数据集中所有样本中的几个,但是实际的数据集包含了关于样本的90%class-label1,其余的是class-label0,尽管几乎所有的样本都非常相似。

哪种分类器最适合处理这种数据集?

我已经尝试过logistic-regressionsvm,并将class-weight参数设置为"balanced",但在准确性方面没有明显的提高。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-15 13:46:34

但在准确性上没有明显的提高。

准确性不是要走的路(例如见精度悖论)。使用10:1的类比例,只要总是预测class-label 0,就可以很容易地获得90%的准确率。

一些好的起点是:

  • 尝试一种不同的性能指标。例如F1评分马修斯相关系数
  • “重采样”数据集:从表示不足的类中添加示例(过采样)/从过度表示的类中删除实例(低采样;您应该有很多数据)。
  • 另一种观点:对于不平衡的数据集,异常检测是一个很好的尝试。
  • 另一种可能是另一种不同的算法,但不是银牌射击。也许您应该从决策树开始(通常在不平衡的数据集上表现良好)

编辑(现在知道你在使用scikit-learn)

来自class_weight参数的权重被用来训练分类器(所以balanced是可以的),但是精确性是一个很差的选择来知道它有多好。

sklearn.metrics模块实现了对度量分类性能的几个损失、评分和实用函数。还请看一下如何计算精度,回忆,准确性和F1-评分的多类案件与科学知识学习?

票数 0
EN

Stack Overflow用户

发布于 2016-09-16 09:55:33

你有没有试过绘制ROC曲线和AUC曲线来检查你的参数和不同的阈值?如果不是,那应该给你一个好的起点。

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

https://stackoverflow.com/questions/39512140

复制
相关文章

相似问题

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