数据集类别不平衡通常发生在分类问题上,例如有两个类别(A,B)的数据集,A有80个,而B有20个,那么这个数据集是不平衡的。
大多数数据集每一个类别通常不是完全的平衡,小的不平衡不会有太大的问题。但是当样本分布差距很大的时候,就会有很大的影响。严重的不平衡会导致训练的模型大概率会输出数量较多的那个类别,使模型具有很强的偏向性。
1.获取更多的数据
这是一个最简单直接的办法,但往往数据并不是很容易获取,需要很大的人力成本。、
2. 改变评价指标
对于不平衡的数据集,准确率并不能很好的衡量整个模型的性能,可以使用以下一些评价指标:
- Confusion Matrix(混淆矩阵): A breakdown of predictions into a table showing correct predictions (the diagonal) and the types of incorrect predictions made (what classes incorrect predictions were assigned).
- Precision: A measure of a classifiers exactness.
- Recall(召回率): A measure of a classifiers completeness
- F1 Score (or F-score): A weighted average of precision and recall.
- Kappa (or Cohen’s kappa): Classification accuracy normalized by the imbalance of the classes in the data.
- ROC Curves: Like precision and recall, accuracy is divided into sensitivity and specificity and models can be chosen based on the balance thresholds of these values.
3.对数据进行重新采样
过采样:对于数量较少的类别重复出现。
欠采样: 将数量较多的类别中的样本删除一些,是类别数量均衡。
当有大量的数据时,进行欠采样
当数据量较小时,进行过采样
可以考虑随机采样或者非随机采样(分层采样)
考虑不同的重采样比例
4.生成合成数据
在图像领域,可以通过数据增强的方法,旋转,翻转,裁剪等方法,或者现在很多的使用GAN等网络生成新的数据。
5.尝试其他的方法
不要总是用同一种熟悉的方法解决所有问题,针对不同的问题,选择更加合适的方法。
例如决策树在数据分布不均衡时表现的更好。
6.惩罚模型
给模型加上惩罚,使模型训练时更偏重样本较少的类别。
7.转变视角
对于一些特殊问题,从直接研究到研究异常,研究变化。
8. 创新
比如将一个大的类别细分成几个小类别来使数据集均衡。