核心观点
- 大数据+轻微的数据不平衡可以不做处理
- 小数据+轻微数据不平衡,上采样处理
- 大数据+中度数据不平衡,下采样处理,训练多个模型去做集成
- 小数据+中度数据不平衡,smote算法等来生成样本
- 大数据+重度不平衡,孤立森林,离群点异常检测
- 小数据+重度不平衡,一分类算法,无监督算法
概念定义
- 轻度:1:5 以上
- 中度:1:20以上
- 重度:1:100以上
- 大数据:至少是百万级别,千万级别
实战经验
- 如果用树模型等集成模型,正负样本比在1:100以内可以不进行处理,超过1:100下采样处理。
- 树模型是集成模型,可以从多角度捕捉少数类的特征
- 递归分割数据,最后哪怕是少数类也会被一起分到叶子结点
- 输出不用手动设置阈值
- 可以通过调参缓解不平衡问题,比如is_unbalance
- 如果用神经网络,正负样本比在1:20以内可以不进行处理,超过1:20可以下采样
- 只有正样本没有负样本,用pu_learning
- 数据量少的情况
- 用树模型
- 排查下特征归一化是否有异常值,激活函数relu改成prelu
- 负样本重采样,或者用算法构造一些负样本,让正负样本比降到1:5左右
- 如果是已经有成熟模型了,想额外关注不平衡的样本,用多任务学习吧,比如mmoe,ple,额外新增一个任务针对正样本进行优化