数据不平衡
数据不均衡
所谓的不平衡指的是不同类别的样本量差异非常大,或者少数样本代表了业务的关键数据(少量样本更重要),需要对少量样本的模式有很好的学习。样本类别分布不平衡主要出现在分类相关的建模问题上。样本类别分布不平衡从数据规模上可以分为大数据分布不平衡和小数据分布不平衡两种。
- 大数据分布不均衡。这种情况下整体数据规模大,只是其中的少样本类的占比较少。但是从每个特征的分布来看,小样本也覆盖了大部分或全部的特征。例如拥有1000万条记录的数据集中,其中占比50万条的少数分类样本便于属于这种情况。
- 小数据分布不均衡。这种情况下整体数据规模小,并且占据少量样本比例的分类数量也少,这会导致特征分布的严重不平衡。例如拥有1000条数据样本的数据集中,其中占有10条样本的分类,其特征无论如何拟合也无法实现完整特征值的覆盖,此时属于严重的数据样本分布不均衡。
如果不同分类间的样本量差异达到超过10倍就需要引起警觉并考虑处理该问题,超过20倍就要一定要解决该问题。
主要有三种解决方法: - 欠采样:在少量样本数量不影响模型训练的情况下,可通过对多数类样本欠采样,实现少数样本和多数样本均衡。 - 过采样:在少量样本数量不支持模型训练的情况下,可以通过对少数类样本过采样,实现少数样本和多数样本的均衡。 - 模型算法:通过引入有权重的模型算法,针对少量样本着重拟合,以提升对少量样本特征的学习。
欠采样
通过减少分类中多数类样本的样本数量来实现样本均衡。通过欠采样,在保留少数类样本的同时,会丢失多数样本中的一些信息。经过欠采样,样本数量在变少。因此我个人并不倾向于这种方法。
随机法
随机的删除一些多数类样本,使少数类样本和多数类样本数量达到均衡。
原型生成
PG
算法主要是在原有样本的基础上生成新的样本来实现样本均衡,对多数类样本生成新的样本去替代原样本,使得样本数目减少,
具体做法如下:
原型选择
原理:从多数类样本中选取最具代表性的样本用于训练,主要是为了缓解随机欠采样中的信息丢失问题。 NearMiss 采用一些启发式的规则来选择样本,根据规则的不同可分为 3 类,通过设定 version 参数来确定: - NearMiss-1:选择到最近的 K 个少数类样本平均距离最近的多数类样本 - NearMiss-2:选择到最远的 K 个少数类样本平均距离最近的多数类样本 - 3: 对于每个少数类样本选择 K 个最近的多数类样本,目的是保证每个少数类样本都被多数类样本包围
过采样
过采样(over-sampling)方法通过增加分类中少数的数量来实现样本均衡,最直接的方法是简单的复制少数类样本形成多条记录,这种方式可能导致样本特征少而可能出现过拟合的问题。经过改进的过抽样方法通过在少数类中加入随机噪声、干扰数据或者通过一定规则产生新的合成样本。
随机复制
就是随机选择少量样本进行复制。
SMOTE
在随机过采样的基础上,通过样本构造一方面降低了直接复制样本代理的过拟合的风险,另一方法实现了样本的均衡。比如样本构造方法 SMOTE(Synthetic minority over-sampling technique)及其衍生算法。
模型算法
cost sensitive算法
focal loss
可以查看本博客focal loss内容Focal Loss