机器学习中,样本不平衡问题如何解决?

数据不平衡问题在业务中经常出现,特别总结下自己的业务经验以及其他大佬的经验。

1、数据方向

最好的解决方案是负样本补齐,但这是一句废话,样本补齐后,原有的数据分布可能发生了变化,另外正样本时间窗口延长,新的数据特征可能被稀释。

一般的操作:上采样,下采样,数据合成,数据加权

上采样和下采样都有利有弊,一般数据尽量多才能保证模型学习更好,优先上采样。

数据合成:smoth,adasyn,不多介绍,业界主流Borderline-SMOTE

数据加权:改变模型中数据权重。

2、模型学习方向

数据是有限的,学习是无限的,所以k_fold交叉验证应运而生,提高对现有数据的学习深度,要注意过拟合。

部分模型在数据不平衡的样本上一样可以产出较高的准确率,例如xgboost,SVM(可以调整正负样本权重)。

3、转变思路

分类问题学习可以转变为异常检测,当负样本很少的情况下,可以将负样本预测转变为异常值检测问题。

 

python操作,对应Python库中函数为SMOTE:

1 from imblearn.over_sampling import SMOTE
2 
3 X_smote, y_smote = SMOTE().fit_sample(x, y)

 

个人经验:双拳难敌四手,组合的方法优于单一方法,因此,数据层面和模型学习层面都应该考虑,另外不平衡问题很容易演变成过拟合,因此模型评估指标上也要多方面考虑,召回率,精准率以及AUC综合评估。

 

经验帖:

如何解决不平衡问题

非平衡问题处理

 

posted @ 2019-11-25 16:26  Christbao  阅读(354)  评论(0编辑  收藏  举报