简介
在现实世界中,我们收集的数据在大多数时候是严重不平衡的,所谓不平衡数据集就是训练样本不是平均分布在目标类中,例如,如果我们以个人贷款分类问题为例,就很容易得到“未批准”的数据,而不是“已批准”的信息,结果,模型会更偏向具有大量训练实例的类,这降低了模型的预测能力。
在典型的二元分类问题中,它还会II型错误的增加。这一障碍不仅局限于机器学习模型,而且也主要存在于计算机视觉和自然语言处理领域。这些问题可以通过对每个区域分别使用不同的技术来有效地处理。
注意:本文将简要概述各种可用的数据增强方法,但不深入技术细节,这里展示的所有图像都来自Kaggle。
目录
机器学习——不平衡数据(上采样和下采样)
计算机视觉——不平衡数据(图像数据增强)
NLP——不平衡数据(Google交易和分类权重)
1. 机器学习——不平衡数据
处理类不平衡的两种主要方法是上采样/过采样和下采样/欠采样。抽样过程只应用于训练集,对验证和测试数据不作任何更改。python中的Imblearn库可以方便地实现数据重采样。
上采样是将合成生成的数据点(对应于少数类)注入数据集的过程,在这个过程之后,两个标签的计数几乎是相同的,这种均衡过程防止了模型向多数类倾斜,而且目标类之间的交互(边界)保持不变,同时,上采样机制由于附加信息的存在而给系统带来偏差。
我们可以通过分析Google Analytics的贷款预测问题来解释这些步骤。这里使用的训练数据集可以在以下链接中找到。
https://datahack.analyticsvidhya.com/contest/practice-problem-loan-prediction-iii/
下面提到的所有代码都可以在GitHub存储库中找到。
https://github.com/NandhiniN85/Class-Imbalancing
SMOTE(SyntheticMinorityOversamplingTechnique)——upsampling: 上采样
SMOTE基于knearestneighbors算法,综合生成数据点,这些数据点位于已经存在的数量被超过的群体附近。应用此方法时,输入记录不应包含任何空值。
#import imblearn library
from imblearn.over_sampling import SMOTENC
oversample = SMOTENC(categorical_features=[0,1,2,3,4,9,10], random_state = 100)
X, y = oversample.fit_resample(X, y)