数据处理之数据不平衡问题

来源:互联网 发布:java 线程池 运行状态 编辑:程序博客网 时间:2024/05/16 11:07

最近有被频繁的问到数据不平衡(样本比例失衡)问题,而这一部分在日常数据处理中也算是比较重要的一部分了,处理的好坏对后续的模型训练结果还是会有很大的影响的,今天就专门归纳总结一下,以供以后参考。

1.数据不平衡概述

1.1 数据不平衡介绍

数据不平衡,又称样本比例失衡。对于二分类问题,在正常情况下,正负样本的比例应该是较为接近的,很多现有的分类模型也正是基于这一假设。但是在某些特定的场景下,正负样本的比例却可能相差悬殊,如社交网络中的大V判断电商领域的恶意差评检测金融领域的欺诈用户判断风控领域的异常行为检测医疗领域的肿瘤诊断等。

1.2 数据不平衡的常见形式及特点

根据数据量的多少数据不平衡程度,可以将数据不平衡问题分为以几类:

(1)大数据+轻微数据不平衡(正负样本数量相差在一个数量级内)

豆瓣上的电影评分数据分布等,此类问题常见的机器学习模型即可解决,无须额外处理。

(2)小数据 + 轻微数据不平衡(正负样本数量相差在一个数量级内)

此类问题可以通过加随机扰动的上采样方法处理。

(3)大数据 + 中度数据不平衡(正负样本数量相差在两个个数量级内)

此类问题可以通过下采样的方法处理。

(4)小数据 + 中微数据不平衡(正负样本数量相差在两个数量级内)

医学图像分析。此类问题可以用数据合成的方法来解决。

(5)大数据 + 重度数据不平衡(正负样本数量相差超过两个数量级)

金融领域的欺诈用户判断,风控领域的异常行为检测。此类问题可以通过一分类(one-class Learning)离群点异常检测方法来解决。

(6)小数据 + 重度度数据不平衡(正负样本数量相差超过两个数量级)

医疗领域的肿瘤诊断。此类问题可以通过一分类(one-class Learning)离群点异常检测方法来解决。

2.常见的解决办法

2.1 数据采样

数据采样通过对原始数据集进行处理,使各类别数据比例维持在一个合理的比例。可分为上采样下采样

(1)上采样上采样(Oversampling)是通过把少量数据类别的数据重复复制的方法使各类别数据比例维持在合理的比例,但是基于这样采样方法训练出来的模型容易出现过拟合,可以在每次生成新数据的时候加入轻微随机扰动。

(2)下采样下采样(Undersampling)是通过从多数数据类中筛选出部分数据使各类别数据比例维持在合理的比例,但是这种采样方法容易丢失关键数据,可以通过多次随机下采样来解决。

2.2 数据合成

数据合成利用已有样本的特征相似性生成更多新的样本,主要应用在小数据场景下,如医学图像分析。

2.3 加权

加权的方法是通过对不同类别分类错误施加不同权重的代价,使得不同类别的加权损失值近似相等

2.4 一分类

当正负样本比例严重失衡时,靠单纯的采样和数据合成已经并不能很好地解决问题。因为上述方法虽然解决了训练数据的正负样本比例问题,但却严重偏离了原始数据的真实分布情况,会导致模型训练结果并不能真正反映实际的情况,会有很大的偏差。

此时,可以考虑用一分类(One-class Classification)来解决。最常见的一分类方法是One-class SVM,其基本思路如下:利用高斯核函数将样本空间映射到核空间,在核空间中找到一个能够包含所有数据的一个球体,当进行判别时,如果测试数据位于这个高维球体之中,则将其归为多数类,否则就归为少数类。一分类除了可用来解决数据严重不平衡时的分类问题,还可以应用于金融医疗领域异常检测

总结来说,在样本数据量较大,且正负样本比例相差并不悬殊(两个数量级以内)的情况下,可以考虑使用采样加权的方法解决;在正负样本数据都非常之小时,可以考虑用数据合成的方法解决;在正负样本数据比例相差悬殊的情况下,可以考虑用一分类的方法解决。