计算机视觉与机器学习等领域不平衡数据处理综述

在现实世界中,我们收集的数据在大多数时候是严重不平衡的,所谓不平衡数据集就是训练样本不是平均分布在目标类中,例如,如果我们以个人贷款分类问题为例,就很容易得到“未批准”的数据,而不是“已批准”的信息,结果,模型会更偏向具有大量训练实例的类,这降低了模型的预测能力。在典型的二元分类问题中,它还会II型错误的增加。这一障碍不仅局限于机器学习模型,而且也主要存在于计算机视觉和自然语言处理领域。


这些问题可以通过对每个区域分别使用不同的技术来有效地处理。注意:本文将简要概述各种可用的数据增强方法,但不深入技术细节,这里展示的所有图像都来自Kaggle。


1. 机器学习——不平衡数据

处理类不平衡的两种主要方法是上采样/过采样和下采样/欠采样。抽样过程只应用于训练集,对验证和测试数据不作任何更改。python中的Imblearn库可以方便地实现数据重采样。上采样是将合成生成的数据点(对应于少数类)注入数据集的过程,在这个过程之后,两个标签的计数几乎是相同的,这种均衡过程防止了模型向多数类倾斜,而且目标类之间的交互(边界)保持不变,同时,上采样机制由于附加信息的存在而给系统带来偏差。我们可以通过分析Google Analytics的贷款预测问题来解释这些步骤。这里使用的训练数据集可以在以下链接中找到。


2. 计算机视觉——不平衡数据

对于非结构化数据,如图像和文本输入,上述平衡技术将不会有效。在计算机视觉中,模型的输入是图像中像素的张量表示,所以只是随机改变像素值(为了添加更多的输入记录)就可以完全改变图片本身的意义。有一种概念叫做数据增强,即图像经过大量转换后仍然保持其意义不变。各种图像转换包括缩放、剪切、翻转、填充、旋转、亮度、对比度和饱和度变化,通过这样做,仅使用单个图像,就可以创建一个庞大的图像数据集。让我们看看Analyticsvidhya中发布的计算机视觉hackathon,使用的数据集可以在这里找到。


3. NLP——不平衡数据

自然语言处理模型处理序列数据,如文本、移动图像,其中当前数据与之前的数据有时间依赖性。由于文本输入属于非结构化数据,所以我们要以不同的方式处理这些场景。例如,以票据分类语言模型为例,其中IT票据必须根据输入文本中出现的单词顺序分配给不同的组。谷歌翻译(google trans python包): 这是扩展少数群体数量的有用技术之一。

在这里,我们把给定的句子翻译成“非英语”语言,然后再翻译成“英语”,通过这种方式,可以维护输入消息的重要细节,但是单词的顺序/有时具有相似意义的新词作为新记录引入,从而增加了不足类的计数。输入文字- "warning for using windows disk space"数据补充文字-“Warning about using Windows storage space”即使上面的句子的意思是一样的,它也引入了新单词,从而通过扩大输入样本的数量来提高语言模型的学习能力。


结论到目前为止,我们已经讨论了不同领域处理不平衡数据的各种方法,如机器学习、计算机视觉和自然语言处理。尽管这些方法只是解决多数Vs少数目标群体问题的开始,还有其他先进的技术可以进一步探索。