(1)想办法获取更多的数据。
前段时期的数据,较多呈现红色部分的数据较少呈现蓝色部分的数据;后半时期,产生数据的趋势发生变化,较多呈现蓝色部分数据较少呈现红色部分数据。所以,想办法获取更多的数据。
(2)换个评判方式
通常我们会用精度(Accuracy)和错误率(error)来评价模型的好坏。这两个指标在数据不均衡时,均不能客观的衡量模型。
解决办法:
通过Confusion Matrix,计算查准率(Precision)和查全率(recall),然后再计算F1 Score。这种衡量模型的标准可以成功的区分数据不均衡问题,并且能给出模型客观的评价。
对模型评价标准不熟悉的,可以看我之前的文章:
https://blog.csdn.net/program_developer/article/details/79937291
https://blog.csdn.net/program_developer/article/details/79946787
(3)重组数据
这种方式简单粗暴!!!!
1. 过采样(oversampling):复制较少的样本,使它和较多类样本差不多数量。
这样做的缺点:过采样法增加了很多较少类的样本,其训练集大于初始训练集,导致训练模型的时间开销较多。并且,过采样法不能简单地对初始较少类样本进行重复采样,否则会招致严重的过拟合。
解决办法:
过采样法的代表性算法是:SMOTE【Chawla et al.,2002】,该算法通过对训练集里的少类进行插值来产生额外的少类样本。
2. 欠采样(undersampling):删除较多数量类的样本,使它和较少类样本数量一致。
这样做的缺点:欠采样法如果随机的丢弃多类的样本,可能丢失一些重要的信息。
解决办法:
欠采样法的代表性算法是:EasyEnsembale【Liu et al.,2009】,该算法是利用集成学习机制,将较多类样本划分为若干个集合供不同学习器使用,这样对每个学习器来看都进行了欠采样,但在全局来看却不会丢失重要的信息。
(4)使用其他的机器学习方法
举个例子:
比如说,神经网络面对不均衡数据就变得束手无策,但是决策树它不会受到样本不均衡的影响。
(5)修改算法
对于Sigmoid激活函数,如果样本均衡的时候,它的阈值一般设置为0.5比较合适;如果样本不均衡的时候,我们可以设置更大的阈值,让算法比较有把握的时候,在输出类别较少的样本类。
观看视频笔记:https://www.bilibili.com/video/av16009140?spm_id_from=333.338.__bofqi.21