所谓的不平衡数据集指的是数据集各个类别的样本量极不均衡。以二分类问题为例,假设正类的样本数量远大于负类的样本数量,通常情况下通常情况下把多数类样本的比例接近100:1这种情况下的数据称为不平衡数据。不平衡数据的学习即需要在分布不均匀的数据集中学习到有用的信息。
不平衡数据集的处理方法主要分为两个方面:
1、从数据的角度出发,主要方法为采样,分为欠采样和过采样以及对应的一些改进方法。
2、从算法的角度出发,考虑不同误分类情况代价的差异性对算法进行优化,主要是基于代价敏感学习算法(Cost-Sensitive Learning),代表的算法有adacost;
另外可以将不平衡数据集的问题考虑为一分类(One Class Learning)或者异常检测(Novelty Detection)问题,代表的算法有One-class SVM。
本文主要介绍从数据角度出发的不平衡数据集的处理方法以及对应的python库(imblearn)。
未处理之前:
from imblearn.under_sampling import RandomUnderSampler
sampler = RandomUnderSampler(random_state=2021)
X_sample, y_sample = sampler.fit_resample(X, y)
处理之后: