对数据不平衡的应对
在比赛中经常会遇到数据不平衡的问题,各个类别之间的数据量不平衡容易导致模型对数据量少的类别的检测性能较低。数据不平衡问题可以分为以下两种情况:
大数据分布不均衡。这种情况下整体数据规模大,只是其中的少样本类的占比较少。但是从每个特征的分布来看,小样本也覆盖了大部分或全部的特征。例如拥有1000万条记录的数据集中,其中占比50万条的少数分类样本便于属于这种情况。
小数据分布不均衡。这种情况下整体数据规模小,并且占据少量样本比例的分类数量也少,这会导致特征分布的严重不平衡。例如拥有1000条数据样本的数据集中,其中占有10条样本的分类,其特征无论如何拟合也无法实现完整特征值的覆盖,此时属于严重的数据样本分布不均衡。
样本分布不均衡将导致样本量少的分类所包含的特征过少,并很难从中提取规律;即使得到分类模型,也容易产生过度依赖于有限的数据样本而导致过拟合的问题,当模型应用到新的数据上时,模型的准确性和鲁棒性将很差。
1 数据扩充
我们的训练模型是为了拟合原样本的分布,但如果训练集的样本数和多样性不能很好地代表实际分布,那就容易发生过拟合训练集的现象。数据增强使用人类先验,尽量在原样本分布中增加新的样本点,是缓解过拟合的一个重要方法。
常用的数据数据增强手段有以下几点:
水平、垂直翻转
$90^。,180^。,270^。$翻转
翻转+旋转
亮度、饱和度、对比度的随机变换
随机裁剪
随机缩放
加模糊(blurring)
加高斯噪声(Gaussian Noise)
除了前面三种之外,后面几种会改变数据的特征,需要谨慎使用。以下内容借鉴自:Kaggle经验:
需要小心的是,数据增强的样本点最好不要将原分布的变化范围扩大,比如训练集以及测试集的光照分布十分均匀,就不要做光照变化的数据增强,因为这样只会增加拟合新训练集的难度,对测试集的泛化性能提升却比较小。另外,新增加的样本点最好和原样本点有较大不同,不能随便换掉几个像素就说是一个新的样本,这种变化对大部分模型来说基本是可以忽略的。
对于这个卫星图像识别的任务来说,最好的数据增强方法是什么呢?显然是旋转和翻转。具体来说,我们对这个数据集一张图片先进行水平翻转得到两种表示,再配合0度,90度,180度,270度的旋转,可以获得一张图的八种表示。以人类的先验来看,新的图片与原来的图片是属于同一个分布的,标签也不应该发生任何变化,而对于一个卷积神经网络来说,它又是8张不同的图片。比如下图就是某张图片的八个