机器学习中,最重要的一个过程就是模型训练,但是在做模型训练之前需要对数据进行预处理也就是常见的数据清洗和特征工程。
数据清洗过程中,比较重要的一步就是查看正负样本是否均衡。
那么数据集中出现正负样本不均衡,怎么解决呢?
常用的有一下几种方法:
- 采样,采样主要包括上采样(oversampling,有的称为过采样)和下采样(undersampling,有的称为降采样)
- 数据合成,利用已有样本来生成更多的样本,这种方法在小数据场景下有很多成功案例。
- 除了采样和生成新数据等方法,还可以通过加权的方式来解决数据不平衡问题,即对不同类别分错的代价不同
下面主要介绍采样方式处理正负样本不均衡问题:
1、上采样
通过将小众类样本复制多份,来得到多个不同数据集的方式,每个数据集训练一个模型。
2、下采样
通过从大众类众剔除一些样本,或者只从大众类样本中选取部分样本。
利用模型融合的方式(Ensemble),多次下采样(放回采样,产生多个相互独立的数据集),进而训练多个不同的分类器,通过组合多个分类器的结果进而得到最终的结果,这种方式称为EasyEnsemble。
利用增量训练的思想(Boosting),先通过一次下采样产生训练集,训练一个分类器,对于那些分类正确的大众样本不放回,然后对这个更小的大众样本下采样产生训练集,训练第二个分类器,以此类推,最终组合所有分类器的结果得到最终结果,这种方式称为BalanceCascade。
总结:随机采样的优点是简单,但缺点也很明显。上采样后的数据集中会反复出现一些样本,导致训练出来的模型有一定的过拟合;而对于下采样,由于是采用从大众类众剔除一些样本,那么会丢失一部分信息,模型只学到了总体模式的一部分,容易欠拟合。