数据不平衡问题在业务中经常出现,特别总结下自己的业务经验以及其他大佬的经验。
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综合评估。
经验帖: