样本不平衡问题解决方法总结

样本不平衡问题:数据集中,每个类别下的样本数目相差很大。以下以二分类问题为例进行讨论:

  

    图示:坏样本占比:0.17%( 492(坏样本) : 284315(好样本))

扫描二维码关注公众号,回复: 6612082 查看本文章

理想的样本应该是50:50,但现实中某些场景就是非平衡数据,如金融领域(一般来说,好客户的样本要远远大于坏客户!)

解决方法总结:

一、数据上处理

二、权重设置

三、集成的思想

四、转化成异常检测问题

五、利用深度学习:自编码器.

六、确定适合样本不平衡问题的评价指标

一、数据上处理:

1.数据源:

  搜集更多的数据来使数据达到平衡,但是一般出现样本不平衡问题,就是不太可能以一种简单的方法获取到更多的样本

  (在金融领域,可以思考坏用户的定义是否过于严格)

2.数据增广:

  目前数据增广主要应用于图像领域,主要包括:水平/垂直翻转,旋转,缩放,裁剪,剪切,平移,对比度,色彩抖动,噪声等

3.欠采样:

  随机欠采样:随机去除多数类一些的样本

  缺点:会造成信息缺少 or 最后模型的欠拟合

4.过采样:

  4.1 随机过采样:随机增加少数类的一些样本

  缺点:因为随机过采样是简单的对初始样本进行复制采样,这就使得学习器学得的规则过于具体化,不利于学习器的泛化性能,造成过拟合

  4.2 SMOTE:在随机过采样上进行了改进,利用了K近邻的思想

二、权重设置:

1.设置类别权重:class_weight

2.设置样本权重:sample_weight

三、集成的思想:

1.采用boosting的集成算法:XGB,LGB等(对不平衡数据处理效果较好的模型)

2.模型融合:投票法

利用gbdt/lgb/xgb分别对正负样本按比例(1:2 1:5 1:10)进行训练,然后根据AUC分数的比例得到了三者的比例,最后进行投票得到最终模型

四、转化成异常检测问题:

在样本极度不平衡的情况下,换一个完全不同的角度来看待问题,可以把它看成异常检测问题

利用用异常检测算法(IF、LOF、OneClassSVM)建立一个单类分类器,检测异常点(少数类)。

五、利用深度学习:自编码器

利用AutoEncoder进行特征的抽取,再将抽取的特征送入分类器(LR)

六、确定适合样本不平衡问题的评价指标:

ROC,AUC,F1_score

猜你喜欢

转载自www.cnblogs.com/WuSehun/p/11082028.html
今日推荐