所谓的不平衡数据集指的是数据集各个类别的样本量极不均衡。以二分类问题为例,假设正类的样本数量远大于负类的样本数量,通常情况下通常情况下把多数类样本的比例接近100:1这种情况下的数据称为不平衡数据。不平衡数据的学习即需要在分布不均匀的数据集中学习到有用的信息。
本文主要介绍从数据角度出发的不平衡数据集的处理方法以及对应的python库(imblearn)。
1.过采样
从少数类的样本中进行随机采样来增加新的样本,对应Python库中函数为RandomOverSampler:
from imblearn.over_sampling import RandomOverSampler
ROS = RandomOverSampler(random_state=0)
X_resampled, y_resampled = ROS.fit_sample(X, y)
2.欠采样
与过采样相反,欠采样是从多数类样本中随机选择少量样本,再合并原有少数类样本作为新的训练数据集。
随机欠采样有两种类型分别为有放回和无放回两种,无放回欠采样在对多数类某样本被采样后不会再被重复采样,有放回采样则有可能。
对应Python库中函数为RandomUnderSampler,通过设置RandomUnderSampler中的replacement=True参数, 可以实现自助法(boostrap)抽样。
from imblearn.under_sampling import RandomUnderSampler
RUS = RandomUnderSampler(random_state=0)
X_resampled, y_resampled = RUS.fit_sample(X, y)
3.SMOTE采样</