不平衡数据处理
采样是为了解决数据不均衡的问题,数据不均衡问题即各类别的样本分布不均衡问题。如果不处理数据不均衡问题,会导致拟合出来的模型对训练集中样本数比较少的类别泛化能力较差。例如,对于二分类问题,训练集中A类别样本占比90%,B类别样本占比10%,测试集中A、B类别样本各占比50%,若不处理数据不均衡问题,训练出来的模型在测试集里对类别B的预测准确率会比较低,甚至低于50%(低于50%还不如不训练)。
解决数据不平衡问题主要有权重法和采样法。
假设样本数目A类比B类多(例如A100,B10),且严重不平衡,则有两种处理方法,一种是基于样本的,另一种是基于算法的。
1.基于样本的处理方法:
1)A类欠采样
- 随机欠采样
- A类分成若干子类,分别与B类进入ML模型(例如:取A的20%,与B进入ML,该过程重复若干次,每次形成Ti,最后形成若干颗树,用这个森林去做最终的分类)
- 基于聚类的A类分割(例如:聚类成10个簇,每个簇与B一起进入ML)
2)B类过采样
例如将B类数据复制5份,这样可以避免欠采样造成的信息丢失,但事实证明,欠采样比过采样效果好,因为欠采样的速度快。
3)B类数据合成新样本
- 随机插值得到新样本(其实就是造特征)
- SMOT
2.基于算法的处理方法:
降低A类权值,提高B类的权值。
例如,给A的样本权值设置为0.1,给B的样本权值设置为10(实际中B的权值设置为2就可以)