序言
- 数据集制作过程中需要关注样本均衡问题,学习笔记,简单记录
1. 样本不均衡
- 分类任务中不同类别样本数差别很大的情况,样本比例大于比如4:1可以认为样本不均衡,样本不均衡现象比较常见
- 那么到底差异多少才算失衡呢,按照google developer的说法,我们一般可以把失衡分为三个程度:
- 少数类 : 多数类 = 20%~40%, 轻度不均衡
- 少数类 : 多数类 = 1%~20%, 中度不均衡
- 少数类 : 多数类 < 1%, 极度不均衡
2. 样本不均衡的影响以及样本均衡的意义
-
样本不均衡的影响
- 假如”好、坏”两类样本占比是1000:1,只要预测为”好”,就能得到很高的准确率,那么模型学到的不是如何分别好坏,而是”好远比坏多”这样的先验信息,这样就背离了用模型去分别好坏的初衷;
- 导致模型不能学习更本质的特征,影响模型的鲁棒性;
-
样本均衡的意义
- 通过解决样本不均衡,可以减少模型学习样本比例的先验信息,以获得能学习到辨别好坏这种本质特征的模型
3. 什么时候需要进行样本均衡/数据均衡
- (1) 简单的线性可分任务,样本是否均衡可能影响不大
- (2) 判断样本与真实样本分布是否一致且稳定,如果不是,数据如果带有先验信息可能就有副作用
- (3) 某一类样本非常稀少的情况,模型很可能学习不好
4. 数据不均衡的解决办法
-
数据均衡本质上是:通过某种方法使得不同类别的样本对于模型学习中的loss(或梯度)贡献是比较均衡的。以消除模型对不同类别的偏向性,学习到更本质的特征
-
数据均衡的方法简单记录:
-
(1) 样本层面
- 过采样和欠采样
- 过采样会导致样本重复,可能导致过拟合:最直接的方法是简单的复制少数类样本形成多条记录,这种方式可能导致样本特征少而可能出现过拟合的问题;经过改进的过抽样方法通过在少数类中加入随机噪声、干扰数据或者通过一定规则产生新的合成样本
- 欠采样可能导致类别间有重要差别的重要实例丢失,在过滤少量样本不影响模型训练的情况下,随机的删除一些多数类样本
- 数据增强:
- 使用常见的数据增强方法增加样本数据,如翻转、旋转、改变对比度、随机裁剪等
- 过采样和欠采样
-
(2) loss层面: 主流的是代价敏感学习法cost sensitive,为不同的分类错误给与不同惩罚力度/权重
- scikit的’class weight’方法
- 为不同样本提供不同权重,少数类有更高权重,从而平衡各类别的学习,避免决策边界偏重多数类的现象
- OHEM和focal loss
- OHEM: Online Hard Example Mining, 算法的核心是选择一些困难样本(多样性和高损失的样本)作为训练的样本,针对性地改善模型学习效果;对于数据的类别不平衡问题,OHEM的针对性更强
- Focal Loss: 在交叉熵损失函数CE的基础上增加了类别的不同权重以及困难样本的权重,使训练时更专注于难分类的样本,以改善模型的学习效果
- scikit的’class weight’方法
-
(3) 模型层面:模型层面主要是选择一些对样本不均衡比较不敏感的模型,比如 逻辑回归在利用反向传播来优化参数时,数量少的那一类在反向传播求梯度时影响比较小,梯度容易向数量多的样本方向下降,所以对样本分布不均衡比较敏感。决策树基于特征的划分去创建分类树,可以强制的将不同类别样本分开,在样本不均衡上比较不敏感一些
- 采样 + 集成学习的方法,训练若干分类器进行集成学习;采样过程是必须的,否则同样会有利于多数类
- 异常检测:在样本类别极端不均衡的情况下,比如少数类只有几十个样本,分类问题考虑成异常检测问题可能会更好
-
(4) 决策及评估指标层面:采用不均衡的数据训练模型时,采用更好的决策和客观的评估,比如对比分类问题采用recall precision F1分数 混淆矩阵,样本不均衡时会明显改变这些指标的表现
- 分类阈值移动:对于不均衡下模型的预测,调整模型对于不同类别偏好的的情况,如模型偏好预测负样本,偏向0,则我们分类阈值也往下调整,达到决策时类别平衡的目的
- 低于类别不均衡的模型评估,可以采用AUC、AUPRC评估模型表现,对正负样本的比例情况不敏感
【参考文章】
样本不均衡的解决办法
样本不均衡介绍及解决办法
created by shuaixio, 2023.10.24