不均衡数据的重采样
在实际应用中,我们拿到的数据往往是正负样本比不均衡的,如:医疗诊断、网络入侵检测、信用卡反诈骗、推荐系统推荐等。而许多算法在面对不均衡的样本时往往会出现问题。
比如,最简单的,如果正负样本比例达到1:99,那么分类器将所有的样本都划分为负样本时的正确率能够达到99%,然而这并不是我们想要的,我们想要的往往是模型在正负样本上都有一定的准确率和召回率。
那么,为什么很多分类模型面对均衡的样本时会出现各种问题?
本质原因是模型在训练时优化的目标与在测试时使用的评价标准不一致。这种不一致可能是由于训练数据的样本分布于测试数据的样本分布不一致,也可能是训练阶段不同类别的权重(重要性)和测试阶段不一致导致的。
因此一般可以从两个角度处理样本不均衡问题。
基于数据的方法
对样本进行重采样,使得原本不均衡的数据变得均衡。记样本数大的类别为 $C_{maj}$, 样本数小的类别为 $C_{min}$,对应的样本集合分别为 $S_{maj}$ 和 $S_{min}$, 则根据题设,有 $|S_{maj}|>>|S_{min}|$。
采样一般分为欠采样和过采样。最简单的处理不均衡数据的方法是随机采样。随机过采样是从少数类样本集 $S_{min}$ 中随机有放回的抽取样本从而得到更多的样本;随机欠采样是从多数类样本集中通过有放回或者无放回的方式抽取出少数的样本。
直接随机采样虽然可以消除样本集的不均衡问题,但是,也带来了一些别的问题。如:过采样对少数类样本集进行多次复制,扩大了数据规模,但同时也增加了模型训练的复杂度,还容易陷入过拟合。而欠采样从多数类中抽取出一部分样本,会丢失剩下的样本,可能会丢失一部分的重要信息,使得模型仅仅学习到整体模型的一部分,降低了准确性。
因此,在实际应用中,通常在过采样的过程中,不是简单地复制样本,而是通过一定的手段构造出新的样本。例如:SMOTE算法。
SMOTE算法在扩充样本集时,对少数类样本集 $S_{min}