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

Posted

技术标签:

【中文标题】如何处理机器学习分类问题的小型和不平衡数据集【英文标题】:How to deal with small AND unbalanced datasets for machine learning classification problems 【发布时间】:2016-02-22 04:44:27 【问题描述】:

我正在处理一个非常具有挑战性的分类问题,其中存在三个问题:小数据集(大约 800 个样本)、不平衡的数据集(4 个类别,其中 1 - 600 个样本,每个类别 2/3/4 - 50 个样本)和缺失特征之一的数据。

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

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

将分类变成少数与多数之间的二元分类。

组合不同的分类器,赋予负样本更多的权重(以防我变成二元分类器)。

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

我打算用作分类器 Naive Bayes、SVM、随机森林和神经网络以及 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

如果有任何第二个想法,我将不胜感激。

【问题讨论】:

【参考方案1】:

我建议要么增加权重,要么复制属于较小类别的数据。一种方法是在复制时向较小类的实例添加随机噪声。噪声的方差可以从每个类中特征的方差来估计。

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于如何处理机器学习分类问题的小型和不平衡数据集的主要内容,如果未能解决你的问题,请参考以下文章

机器学习中如何处理不平衡数据?

机器不学习:如何处理数据中的「类别不平衡」?

机器学习中非平衡数据的处理

[转]如何处理机器学习中的不平衡类别

如何处理数据不均衡问题(分类问题)

在分类中,如何在数据集不平衡的情况下验证模型?