APP下载

SMOTE 过采样及其改进算法研究综述

2019-02-27石洪波陈雨文陈鑫

智能系统学报 2019年6期
关键词:标签噪声分类

石洪波,陈雨文,陈鑫

(山西财经大学 信息学院,山西 太原 030031)

不平衡数据的分类问题在疾病检测[1]、欺诈检测[2]以及故障诊断[3]等应用领域中受到了广泛关注。不平衡数据是指类分布明显不均衡的数据,其中样本数目多的类为多数类,而样本数目少的类为少数类。由于少数类样本数目过少,导致传统分类器的准确率偏向于多数类,即便准确率很高也无法保证少数类样本均分类正确。然而在现实生活中,少数类样本的预测结果才是人们关注的重点,如疾病检测中,人们对阳性病人检测为阴性的容忍度要远远低于阴性病人检测为阳性的容忍度。

为了提高不平衡数据的分类模型性能,近年来不少学者做了大量研究工作,主要分为算法层面和数据层面。本文重点关注数据层面的研究。在分类之前通过移除或添加一部分数据来平衡类分布是数据层面常用的做法,主要包括欠采样和过采样。传统的处理不平衡数据集的采样方法主要有随机欠采样和随机过采样。随机欠采样是指随机地移除部分多数类样本,但该方法可能会丢失部分有用的信息,导致分类器性能下降。随机过采样则是随机的复制少数类样本,使得数据的类分布平衡,但该方法由于反复复制少数类样本,增加了分类模型过拟合的可能性。为解决上述问题,Chawla 等[4]提出了SMOTE(synthetic minority oversampling technique)方法,该方法通过在数据中增加人工合成的少数类样本使类分布平衡,降低了过拟合的可能性,提高了分类器在测试集上的泛化性能。

SMOTE 为解决不平衡问题提供了新的方向,成为处理不平衡数据有效的预处理技术,并成功地应用于许多不同领域。SMOTE 促进了解决不平衡分类问题方法的产生,同时为新的监督学习范式做出了重大贡献,如多标签分类、增量学习、半监督学习以及多实例学习等[5]。许多研究人员根据SMOTE 提出了改进的算法,以克服SMOTE导致的过泛化等问题,从而提高不同应用背景下不平衡问题的分类模型性能。SMOTE 方法已经成为现阶段不平衡分类领域的热点技术之一。在CNKI 库与Web of Science 核心集中,以“SMOTE”为关键词的近10 年的发文数量总体呈逐年上升趋势,其中2018 年CNKI 发文量达到61 篇,SCI发文量达到106 篇。而以“SMOTE”和“不平衡数据”为联合关键词的近10 年的发文数量总体也呈上升趋势,这种现象说明了SMOTE 研究不平衡数据分类问题的重要性。此外,SMOTE 论文[4]在SCI 库中的引用频次逐年上升,尤其在2018 年达到644 次。这些数据从另一种角度说明了SMOTE 方法的重要性。

1 SMOTE 原理

SMOTE 方法是Chawla 等[4]提出的应用于不平衡问题的数据预处理技术。不同于随机过采样的简单复制样本机制,SMOTE 通过线性插值的方法在两个少数类样本间合成新的样本,从而有效缓解了由随机过采样引起的过拟合问题。

SMOTE 的基本原理通过图1 进行说明。首先从少数类样本中依次选取每个样本xi作为合成新样本的根样本;其次根据向上采样倍率n,从xi的同类别的k(k一般为奇数,如k=5)个近邻样本中随机选择一个样本作为合成新样本的辅助样本,重复n次;然后在样本xi与每个辅助样本间通过式(1)进行线性插值,最终生成n个合成样本。

图1 SMOTE 算法插值说明图Fig.1 The interpolation illustration of SMOTE algorithm

算法SMOTE 算法

输入少数类样本集T,向上采样倍率n,样本近邻数k;

输出合成少数类样本集S。

1) fori= 1 to |T| do

2) 计算xi的k个近邻样本并存入Xik集合;

3) forl= 1 tondo

4) 从Xik中随机选取样本xij;

5) 生成[0, 1]之间的随机数 γ;

6) 利用公式(1)合成xij与xi间新样本xnew的每个属性值xnew,attr;

7) 将xnew添加到集合S中。

8) endfor

9) endfor

SMOTE 是基于特征空间的一种过采样方法,在少数类样本及其最近邻样本间合成新特征,然后组成新样本。SMOTE 通过人工合成样本缓解了由随机复制样本引起的过拟合,并在许多领域得到了广泛应用,但同时也存在一些问题。

① 合成样本的质量问题

由SMOTE 算法可知,新样本的合成取决于根样本与辅助样本的选择。若根样本与辅助样本均处于少数类区域,则合成的新样本被视为是合理的。然而,若根样本与辅助样本中有一个属于噪声样本,则新样本将极有可能落在多数类区域,即新样本将会成为噪声而扰乱数据集的正确分类,此时该新样本通常被视为不合理的。

② 模糊类边界问题

SMOTE 算法在合成少数类样本时不考虑多数类样本的分布。如果SMOTE 从处于类边界的少数类样本中合成新样本,其k近邻样本也处于类的边界,则经插值合成的少数类样本同样会落在两类的重叠区域,从而更加模糊两类的边界。

③ 少数类分布问题

少数类样本分布不均匀,既有密集区也有稀疏区时,经SMOTE 过采样合成的少数类样本根据近邻原则也会分布在相应的位置,即原少数类分布密集区经SMOTE 后依然相对密集,而分布稀疏区依然相对稀疏,因此,分类算法不易识别稀疏区的少数类样本而影响分类的准确性。

如果少数类样本分布稀疏且由若干碎片块组成,即使采用SMOTE 方法,生成的样本也极有可能仍位于每个碎片块内,几乎不改变数据集的分布,导致识别稀疏区的样本更加困难。

2 SMOTE 的改进与扩展

针对上述问题,不少学者开展了新的研究,旨在提升SMOTE 合成样本后数据的分类模型性能。本文搜集并整理了SMOTE 算法的主要相关文献,并将其划分成SMOTE 改进算法和其他方法与SMOTE 相结合的算法。

2.1 SMOTE 的改进算法

多数SMOTE 改进算法的关键在于根样本和辅助样本的选择。由于根样本是少数类样本,如果辅助样本分布在多数类周围时,则合成的新样本会加重两类的重叠。基于此,许多学者对SMOTE做了相应的改进,以提高少数类的分类效果,部分经典的改进方法见表1。

表1 SMOTE 改进算法Table 1 The improved SMOTE algorithms

Han 等[6]只考虑分布在分类边界附近的少数类样本,并将其作为根样本,提出了Borderline -SMOTE 方法。首先通过k-NN 方法将原始数据中的少数类样本划分成“Safe”、“Danger”和“Noise”3 类,其中“Danger”类样本是指靠近分类边界的样本。根据SMOTE 插值原理,对属于“Danger”类少数类样本进行过采样,可增加用于确定分类边界的少数类样本。Safe-Level-SMOTE 算法[7]则关注SMOTE 带来的类重叠问题,在合成新样本前分别给每个少数类样本分配一个安全系数,新合成的样本更加接近安全系数高的样本,从而保证新样本分布在安全区域内。ADASYN 算法[8]根据少数类样本的分布自适应地改变不同少数类样本的权重,自动地确定每个少数类样本需要合成新样本的数量,为较难学习的样本合成更多的新样本,从而补偿偏态分布。SMOM 算法是Zhu等[9]为多类不平衡问题提出的一种过采样技术,通过对辅助样本的选择,进而确定合成样本的位置。SMOM 算法通过给每个少数类样本xi的k个近邻方向分配不同的选择权重来改善SMOTE引起的过泛化问题,其中选择权重的大小代表沿该方向合成样本的概率,权重越大说明沿该方向合成的样本越安全。G-SMOTE 算法[10]通过在每个选定的少数类样本周围的几何区域内生成人工样本,加强了SMOTE 的数据生成机制。

2.2 欠采样与SMOTE 结合的方法

数据集中存在噪声样本时,采用SMOTE 过采样会加剧两类样本的重叠,从而影响该数据集的分类效果。文献[11-12]的实验结果表明,混合采样后数据的分类模型性能往往优于单个采样方法。融合欠采样和过采样的混合采样成为改进SMOTE 方法的一种新的思路,本文介绍了部分经典的融合算法,如表2 所示。

表2 欠采样与SMOTE 结合的方法Table 2 Methods combining undersampling with SMOTE

AdaBoost-SVM-MSA 算法[13]按一定规则将SVM 分错的样本划分成噪声样本、危险样本与安全样本,然后直接删除噪声样本,采用约除法处理危险样本,并对安全样本进行SMOTE 过采样。基于聚类的混合采样(BDSK)[14]将SMOTE的过采样与基于K-means 的欠采样相结合,旨在扩大少数类样本集的同时有效剔除噪声样本。BMS 算法[15]通过设置变异系数阈值将样本划分成边界域和非边界域,然后使用SMOTE 以及基于欧氏距离的随机欠采样方法(OSED)[16]分别对边界域的少数类样本和非边界域的多数类样本进行采样,旨在解决在剔除噪声时由于误删少数类样本而丢失部分样本信息的问题。OSSU-SMOTEO算法[17]使用单边选择(OSS)欠采样移除多数类样本中冗余样本和边界样本,然后采用SMOTE 对少数类样本过采样,从而平衡数据集,提高SVM在预测蛋白质s-磺酰化位点的分类精度。文献[18]的HybridSampling 使用DBSCAN 和KNN 剔除多数类中的模糊样本;然后采用SMOTE 对重叠区域的少数类样本过采样,达到平衡数据集的目的。SDS-SMOT 算法[19]利用安全双筛选丢弃远离决策边界的多数类样本和噪声样本,实现原始数据集的欠采样,采用SMOTE 合成新样本实现过采样,使数据集达到基本平衡。基于SVM分类超平面的混合采样算法(SVM_HS)分别对多数类样本和较为重要的少数类样本进行欠采样和过采样从而平衡数据集[20]。

2.3 过滤技术与SMOTE 结合的方法

混合采样是克服不平衡问题中噪声样本的一种手段,然而结合噪声过滤技术同样可以消除由SMOTE 合成的错误样本,如表3 所示。常见的过滤技术包括基于粗糙集的过滤、数据清洗等。

表3 过滤技术与SMOTE 结合的方法Table 3 Methods combining filtering technique with SMOTE

Ramentol 等[21]将粗糙集理论的编辑技术与SMOTE 算法融合,提出了SMOTE-RSB*算法。SMOTE-IPF 算法[22]采用迭代分区滤波器(iterative-partitioning filter,IPF) 将噪声过滤器与SMOTE 融合,旨在克服不平衡问题中的噪声和边界问题。BST-CF 算法[23]将SMOTE 与噪声过滤器CF(classification filter)结合,在平衡数据集的同时,从多数类中消除位于边界区域的噪声样本。SSMNFOS 算法[24]是一种基于随机灵敏度测量(SSM)的噪声过滤和过采样的方法,从而提高过采样方法对噪声样本的鲁棒性。NN-FRIS-SMOTE算法[25]则先筛选出代表性的样本,再使用模糊粗糙实例选择(RSIS)技术过滤噪声样本,然后使用SMOTE 过采样少数类样本,从而增加了正确识别产品缺陷的可能性。基于数据清洗的过滤算法中典型的有SMOTE-Tomek 和SMOTE-ENN 算法[26],SMOTE-Tomek 利用SMOTE 对原始数据过采样来扩大样本集,移除采样后数据集中的Tome Link 对,从而删除类间重叠的样本,其中Tome Link 对是指分属不同类别且距离最近的一对样本,这类样本通常位于类间或者是噪声样本。SMOTE-ENN 则是通过对采样后的数据集采用k-NN 方法分类,进而剔除判错的样本。

2.4 聚类算法与SMOTE 结合的方法

聚类算法和SMOTE 结合是调整数据分布的另一种思路,其主要策略通常有两种:一是直接采用聚类算法将少数类样本划分成多个簇,在簇内进行插值;二是利用聚类算法识别样本类型,对不同类型的样本采用不同的方式处理,然后再使用SMOTE 进行过采样,部分算法如表4 所示。

MWMOTE 算法[27]按照与多数类样本的距离对难以学习的少数类样本分配权重,采用聚类算法从加权的少数类样本合成样本,从而保证这些新样本位于少数类区域内。对于多类不平衡问题,FCMSMT 算法[28]使用模糊C 均值(FCM)对样本多的目标类聚类,选出与平均样本数相同数量的样本,而对样本少的目标类使用SMOTE 过采样,从而降低类内与类间的错误,提高分类性能。K-means SMOTE 算法[29]利用K-means 对输入数据集聚类,在少数类样本多的簇内进行SMOTE过采样,从而避免噪声的生成,有效改善类间不平衡。

CB-SMOTE 算法[30]根据“聚类一致性系数”找出少数类的边界样本,再根据最近邻密度删除噪声样本,同时确定合成样本的数量,然后从这些边界样本中人工合成新样本。CURE-SMOTE 算法[31]采用CURE(clustering using representatives)对少数类样本聚类并移除噪声和离群点,然后使用SMOTE 在代表性样本和中心样本间插值以平衡数据集。HPM 算法[32]通过整合DBSCAN 的离群检测、SMOTE 和随机森林,从而成功预测糖尿病和高血压疾病。IDP-SMOTE 算法[33]利用改进的密度峰值聚类算法(improved-DP)对各个类进行聚类,识别并剔除噪声样本,然后采用自适应的方法对每个少数类样本进行SMOTE 过采样。

3 面向特定应用背景的SMOTE

3.1 面向高维数据的SMOTE

高维不平横数据中的数据分布稀疏、特征冗余或特征不相关等问题是影响传统学习算法难以识别少数类样本的原因。SMOTE 在处理这类问题时效果甚至不如随机欠采样方法[34],而目前常见的做法是在分类前使用现有的技术对数据进行降维,然后在新的维度空间下学习。常见的降维技术有主成分分析(PCA)[35]、特征选择、Bagging[36]、内核函数(kernel functions)[37]、流形技术(manifold techniques)[38]和自动编码器(auto-encoders)[39]等。

Li 等[40]提出了基于LASSO 的特征选择模型,首先使用特征选择和其他方法删除数据中冗余和不相关的特征,然后采用基于LASSO 的特征权重选择模型增加关键数据的权重,再利用SMOTE 平衡数据集,从而有效消除高维数据中噪声和不相关数据。Zhang 等[41]通过改进的SVMRFE[42]算法(SVM-BRFE)对高维数据进行特征选择,并采用改进的重采样PBKS 算法对不平衡数据进行过采样,提出了针对高维不平衡数据二分类的BRFE-PBKS-SVM 算法。在处理高维不平衡的医疗数据时,许召召等[43]将SMOTE 与Filter-Wrapper 特征选择算法相融合,并将其应用于支持临床医疗决策。Guo 等[44]使用基于随机森林(RF)的特征选择方法降低计算复杂度,然后通过结合SMOTE 和Tomek Link 的重采样平衡数据集,从而提高膜蛋白预测的准确性。

3.2 面向回归问题的SMOTE

不平衡数据的回归问题是指预测连续目标变量的罕见值的问题。目标变量为离散值的不平衡分类问题一直以来得到了深入的研究,而不平衡回归问题的研究成果却少之又少。回归问题可以分为两类:传统回归与序数回归。

传统回归是指在不考虑数据集有序特性的情况下,对连续型目标变量的预测问题。SMOTER算法[45]是处理不平衡回归数据的一种改进的SMOTE 过采样方法,通过人为给定的阈值将极少数实例定义成极高值和极低值,并将这两种类型作为单独的情况处理,而合成样本的目标变量值则是通过两个所选样本目标变量的加权平均值确定。Moniz 等[46]考虑时间序列的特性,将SMOTER 算法推广到不平衡的时间序列问题中,从而提出了SM_B、SM_T 和SM_TPhi 3 种方法。Branco等[47]结合SMOTER 方法,提出了基于bagging 的集成方法(REBAGG),以解决不平衡回归问题。

序数回归则考虑数据集的有序特征,将原始数据的目标变量值按人为给定的阈值依次划分成多个有序的类标签,然后对这些类标签分类。在序数回归的有序类标签中,两端的类通常是极端情况,这类样本也占少数,因此序数回归本质上是一种类不平衡问题。Pérez-Ortiz 等[48]提出了OGONI, OGOISP 和 OGOSP 3 种基于图的过采样方法,旨在平衡有序信息。但是,这3 种方法只考虑到少数类及其相邻类的局部排序,忽略了其他类的排序。因此,Zhu 等[49]提出了SMOR 算法,对每个少数类样本,找到与其类别相同和相邻的k个近邻样本,沿每个近邻样本分配不同的权重,以控制合成的样本更加靠近少数类,从而保证样本结构的有序性。

3.3 面向分类型数据的SMOTE

SMOTE 过采样是从特征的角度生成新样本,新样本的特征是从根样本与辅助样本对应的特征间插值产生,而插值的关键在于距离的度量。SMOTE 过采样所选择的欧氏距离只能处理数值型数据,而对分类型数据过采样的方法有两种:分类型数据数值化和改进距离度量公式。

分类型数据数值化方法对数值化后的数据使用SMOTE 插值,是处理分类型数据常用的方法之一。然而,插值后属性值是否合理是SMOTE方法面临的问题。Chawla 等[4]对含有分类型属性数据分别提出了SMOTE-NC 和SMOTE-N 算法,前者仍采用欧氏距离来计算,对分类型属性间的距离则采用连续属性标准差的中值来代替;后者则采用VDM(value difference metric)距离公式[50]来度量两个样本间的距离。Kurniawati 等[51]也利用VDM 改进了ADASYN,提出了ADASYNN 和ADASYN-KNN 算法,用来处理具有分类型数据的多类数据集。针对含有分类型属性的距离度量,现阶段已经得到了广泛研究,相比VDM 度量,HVDM(heterogeneous value difference metric)度量[52]在处理混合属性的数据时更具优势。其他处理含有分类型属性的距离度量包括Ahmad’s距离度量[53]、KL 散度[54]以及基于context 的距离度量[55]等。图2 总结了上述3 种不同应用背景下处理不平衡数据的相关技术或方法。

图2 面向不同应用的SMOTE 改进方法Fig.2 The improved SMOTE methods for different applications

4 SMOTE 研究展望

SMOTE 算法在处理不平衡数据时表现出良好的优势,然而现实中数据的表现形式多种多样,在面临不同类型不平衡数据(如大数据、流数据等)时,如何利用SMOTE 等技术来提升学习算法性能仍需深入研究。

4.1 不平衡大数据

基于分布式计算的分类算法是处理大数据的主要解决思路。典型的分布式计算技术MapReduce 及其开源实现Hadoop-MapReduce 为处理大数据提供了成熟的框架和平台。然而,在处理不平衡大数据时,由于高维、缺乏少数类样本等因素,以至于分布在每个站点的数据块所包含的少数类样本更少,而直接采用SMOTE 过采样将变得更加困难。Rio 等[56]将SMOTE 算法应用于大数据的MapReduce 工作流中,将输入数据分割成若干个独立的数据块并传输到各个机器,每个Map 任务负责使用SMOTE 从相应的分区中生成数据,Reduce 阶段随机化Map 阶段的输出,最终形成一个平衡的数据集。当数据集中存在小碎片时,结果可能会产生严重的偏差。SMOTE 合成样本是基于k-NN 算法的,对同一个少数类样本而言,其在独立数据块的近邻样本极有可能与原始数据不同,因此经过插值得到的数据很可能有偏,甚至扰乱原始数据的分布。如何改进分布式环境中的SMOTE 算法,提高分布式系统中合成样本的质量需要继续探索。

4.2 不平衡流数据

不平衡分类问题处理的数据通常是静态的,然而现实中的数据大多是以流的方式出现的动态数据,其数据分布也会随时间延续而不断变化。不平衡流数据在网络监控、故障检测等领域广泛出现,在线学习是处理流数据的关键技术,但在线实时学习数据流时可能会面临一些困难[57]。一方面,流数据的分布随时间而改变,导致内在结构不稳定从而产生概念漂移[58]。另一方面,由于缺乏先验知识,无法事先获取新增数据的类标签,导致数据的不平衡状态不稳定,无法确定哪个类是少数类或者多数类[59-60]。集成框架下的代价敏感学习[61-62]与SMOTE 预处理技术[63]是解决上述问题的主要手段。从SMOTE 预处理技术的角度而言,窗口化过程意味着只向预处理算法提供总数据的一个子集,从而影响了合成数据的质量[5]。因此如何有效利用流数据,提高合成数据质量,进而提升SMOTE 算法性能是下一步需要解决的问题。

4.3 少量标签的不平衡数据

监督学习的重要前提是获得足够多的有标签数据来训练预测模型。然而现实中的数据通常是未经标记的无标签数据,有标签数据只占少数,且获得大量有标签数据非常困难。特别是在不平衡数据中,从少量少数类数据中获取带标签的数据更是难上加难。如何利用少量标签数据提升学习器的泛化性能是目前不平衡分类问题的瓶颈之一。主动学习是处理这类问题的技术之一,通过引入专家知识对信息量大的无标签数据进行标记从而提高模型精度。半监督学习[57]则是另一种技术,该技术不依赖于外界交互,而是自动地利用无标签数据的内在信息改进分类模型,从而提高学习性能。此外一些学者试图在这种学习范式中,利用SMOTE 生成新的数据,从而弥补由大量无标签数据引起的缺陷[64-67]。然而如何选择和使用信息量丰富的数据仍需进一步深入研究。

4.4 其他类型数据

除上述3 种类型的数据外,还存在其他不同类型的不平衡数据,如高维数据、数值型标签数据以及二值属性数据等。尽管关于这类型数据取得了一些成果(见第3 节),但仍面临一些问题。

高维数据由于其分布稀疏、特征维数高的特点,导致传统学习算法处理起来过于困难,在预处理前对数据进行降维是目前主要解决方案。虽然已经研究出许多可用的降维技术,但是,如何扩展或修改SMOTE 算法,使其能够直接应用于高维数据,避免数据降维工作,是一个值得深入研究的方向。

调整数值型标签数据的分布是回归领域中预处理所面临的问题,将数值型标签转换为离散型是一种解决思路。但对一些特殊的回归问题,经过离散化标签后的数据本质上存在一种有序关系,如何调整合成样本的区域,使得生成的新样本位于其类内或相邻类内,而不改变原始数据的本质特性是这类问题的关键。

二值属性数据是分类型数据的特殊形式,分类型数据数值化是其中一种处理方式,使用SMOTE 对数值化后的数据进行过采样,是对这类问题常见的预处理解决方案。但合成的新样本通常会不合理,如某二值属性取值为0(红)和1(蓝),经过插值生成的新样本的对应特征值为0.65,则该特征值显然没有任何意义,因此,合成新样本的特征取值需要考虑其原始属性值的范围,然后对其进行调整,以符合实际意义。将分类型数据的距离度量与SMOTE 融合是处理分类型不平衡数据的另一个流行方法,因此,合理考虑这类问题的本质特性,探索有效的距离度量方法是目前另一个研究热点。

5 结束语

SMOTE 过采样解决了随机过采样的过拟合问题,是数据层面流行的预处理技术。本文主要阐述了SMOTE 过采样的研究现状与工作原理,针对SMOTE 存在的问题,对一些改进的SMOTE算法进行了综述,同时概述了不同应用背景下关于SMOTE 算法的研究工作,最后分析了SMOTE算法在处理不平衡大数据、不平衡流数据、少量标签的不平衡数据等数据时需要进一步探索和研究的问题。本文可为SMOTE 的研究和应用提供有价值的借鉴和参考。

猜你喜欢

标签噪声分类
舰船通信中的噪声消除研究
分类算一算
分类讨论求坐标
汽车制造企业噪声综合治理实践
无惧标签 Alfa Romeo Giulia 200HP
数据分析中的分类讨论
不害怕撕掉标签的人,都活出了真正的漂亮
教你一招:数的分类
让衣柜摆脱“杂乱无章”的标签
科学家的标签