如何处理机器学习分类问题的小和不平衡数据集

时间:2015-11-19 20:48:24

标签: machine-learning classification data-analysis

我正在处理一个非常具有挑战性的分类问题,我有三个问题:一个小数据集(大约800个样本),不平衡数据集(4个类别,其中1 - 600个样本,2/3/4 - 每个50个样本)并且丢失其中一项功能中的数据。

我一直在考虑的一些事情:

  • 生成合成数据,例如使用SMOTE(合成少数过采样技术)。

  • 将分类转换为少数和多数之间的二元分类。

  • 组合不同的分类器,为负样本提供更多权重(如果我变成二元分类器)。

  • 通过在成本函数中应用特定权重来进行成本敏感性学习(类似于之前的,但使用所有4个类)。

我打算使用Naive Bayes,SVM,Random Forests和Neural Networks以及2折交叉验证作为分类器。后来我可能会移动到5到10倍。

功能的一些特征:

  • 5连续,其中3个是基于图形位置(最小值,最大值和分布)的不同属性,其中一些具有非常低的方差和重复数据

  • 2个二进制功能,其中一个缺少数据。

数据摘录:

Y   X1  X2_min  X2_max  X2_distribution X3  X4  X5
3   6   1       11      3.3058739       0   1   1
3   662 1       11      1.7779095       1   15  1
1   6   1       7       3.060274        0   1   1
3   8   1       6       2.9697127       0   1   1
3   82  1       14      3.0341356       0   1   1
2   39  1       7       4.2189913       0   1   1
4   1   3       14      4.6185904           1   1

我非常感激任何想法。

2 个答案:

答案 0 :(得分:2)

我建议增加权重或复制属于较小类的数据。一种方法是将随机噪声添加到较小类的实例中,同时复制它。可以根据每个类中的特征的方差来估计噪声的方差。

答案 1 :(得分:1)

如果小数据集是最具代表性的示例(例如,目前正在进行甚至深度学习技术应用于小数据集的进展),则它不是问题。如何判断您的数据集是否具有代表性?它需要适当的采样技术,如分层采样,而不是随机采样。

要解决不平衡的数据集,有各种技术:欠采样(由于数据集较小而不适用于您的情况),过采样(可以工作,但存在模型过度拟合的风险)和成本敏感的学习(请参阅用于实现的Vowpal Wabbit工具包