机器学习中存在一个众所周知的问题,类先天分布的倾斜性。无疑,在识别小类的时候是一个障碍,因为通常小类都是人们在实际应用中更为感兴趣的一类。本文尝试着对不平衡的数据集做一个科学的调用,旨在帮助读者了解先行的不平衡数据处理的研究现状以及经典方法。并试图提供一些具体的建议,以便项目开发或者研究工作。
特别声明,本文的原文内容来自文献【1】和文献【2】,文中的图片也均来自这两篇文献。
1 数据重采样
下采样,也称为欠采样(Under-Sampling),是一个为平衡数据类分布的移除大类数据的非启发式的方法。此方法的底层逻辑是平衡数据集进而克服算法的特异性。常用的方法有随机欠采样(Random Under-Sampling, RUS),即随机排除大类的观察值,和聚焦欠采样(Focused Under-Sampling, FUS), 即移除两类边界处的大类数据。
上采样,也称为过采样(Over-Samplig),是通过复制小类观察值,从而增加小类比例的一个方法。类似的,过采样也有随机过采样和聚焦过采样两种方法。
下采样方法的主要缺点是它可能移除了潜在有用的数据,而这对模型的训练进程可能是重要的,进而减弱分类器的性能。而上采样增加了训练集的大小,造成了模型训练需要更多的时间。而更糟糕的是样本的复制可能会导致过拟合;极端情况下,分类器可能会为了一个重复多次的样本而生成规则。同时由于过采样并没有引入新观察值,因此它并不是一个解决数据缺乏的基本方案;这就解释了为什么许多研究认为在提供模型泛化能力上,过采样是无用的。
另外,这两个方法还有一个更加复杂的问题,统计学习理论的目标是去评估目标对象的统计分布,我们试着去使用图标对象的随机样本表示得到其分布,而无论是下采样还是上采样都修改了样本分布,因此也就失去了随机性。
使用Tomek Link进行采样:Tomek link(或TLink)方法,是1976年Ivan Tomek提出的,它是一个最近邻的增强规则。Tlink的算法如下:
- 取不同类的两个观察点
- 用 表示这两个观察点
- 对子 称为TLink,如果不存在一个观察点 满足 或者
如果两个观察点是Tlink,要么其中一个是噪音,要么两个位于类边界。因此我们可以使用Tlink来指导下采样,或者数据清洗的方法。首先,大类的观察值会被移动,然后,两类的观察值会被放弃。
SMOTE方法:SMOTE(Synthetic Minority Oversampling Technique)方法是一个高级的过采样方法。它的目标是使得小类的决策边界更加一般,因此调整了基础过采样方法可能导致的过拟合问题。此方法的主要原理是在现存的小类数据上进行插值以便生成新的样本点。
- 对于每一个小类观察值 , 找到它的k近邻样本点。
- 随机选择一些近邻数量(取决于过采样的比率)
- 沿着 和其近邻的沿线,增加人造的观察点。
SMOTE方法是一个经典的过采样方法,后来还有学者提出了:
borderline-SMOTE,它只在小类的边界处进行过采样。其方法如图所示,
- 首先,a图表示原始数据集,黑色点是大类数据,而红色点是小类数据
- 然后,用蓝色标记出所有位于边界的小类数据
- 最后,应用SMOTE在所有蓝色数据中。
SMOTE Borderline方法的性能要好于原始的SMOTE,因为位于边界的观察值更可能被误分类。
学者Batista提出了联合SMOTE与TLink的方法,如图。
- a 是原始的不平衡数据集
- b 使用了SMOTE进行过采样
- c 使用TLink去除小类数据内的噪音
- d 排除噪音
这个方法能够显著的减弱大类数据对小类数据边界的损害。
One-Sided Selection OSS,OSS【3】是一个下采样的方法,它能够识别并排除大类数据冗余的观察点,噪音,边界。
- 首先运行TLink取检测噪音
- 然后,使用最近邻的原则取识别冗余数据
- 最后,两者都排除,剩下的大类数据和小类数据重构成训练集。
Neighbourhood Cleaning Rule NCL: NCL【4】是一个下采样的方法,使用了Wilson's Edited Nearest Neighbor Rule ENN【5】 移动大类中的一些观察值。首先,使用ENN识别每个观察点的三个最近邻,然后排除那些类标签不同于 2/3 近邻的观察点。ENN算法移除了观察点因为它聚集了更加靠近决策边界的边界点并避免了过拟合。
2 特征选择的不平衡数据分类方法
样本数量分布的不平衡性往往伴随着特征属性分布失衡,导致特征层面上信息的传递、表达不均衡,而特征选择能根据一定的评价标准,从特征集合中选取具有代表性的特征子集,有效区分数据集中的每个数据对象。
特征选择方法可以分为过滤式(Filter),封装式(Wrapper)和嵌入式(Embedded)3种模型。
- 过滤式:通过分析原始特征集的内在特性,并结合相应的评价准则来选择出特征子集。此法计算复杂度低,通用性强,但由于方法独立于分类器,分类正确率较低。
- 封装式:与分类器相结合,以分类错误率作为特征子集的平均指标,通过顺序式或启发搜索策略选择出能够取得较高正确率的特征子集。此法正确率虽高,但计算复杂度较大。
- 嵌入式:将特征选择与分类模型的学习过程相结合,在分类过程种包含特征选择功能,具有相对较低计算代价的同时能够保证较好的分类精度,成为目前特征选择的研究热点。
基于特征选择的方法主要应用于具有高维特性的不平衡数据处理种。但特征选择的过程可能存在信息丢失,对后续分类的影响较大。
3 分类算法层面
3.1 代价敏感学习
基于代价敏感学习的不平衡数据分类方法以代价敏感理论为基础,关注错误代价较高类别的样本,以分类错误总代价最低为诊断算法的优化目标. 目前对代价敏感学习的研究主要集中在代价敏感直接学习和代价敏感元学习两个方面。
代价敏感学习直接学习的基本思想是在传统学习算法的基础上引入代价敏感因子,通过改进分类器模型的内部构造,是基于最小错误率的分类器转化为基于最小代价的代价敏感分类器。目前,主流的分类算法——人工神经网络、SVM和决策树等都有着相应的代价敏感扩展算法。
代价直接学习
- 代价敏感神经网络【6】,直接嵌入各个类别的误分类代价以减少平均误分代价;
- 代价敏感支持向量机【7】分布给不同类别赋予不同的代价因子,获得最佳代价最小的分类结果;
- 代价敏感决策树【8】在分裂标准和剪枝阶段注入代价敏感的思想,提高少数类的权重。
- 代价敏感字典学习(Cost sensitive dictionary learning, CSDL)【9】结合稀疏表示字典学习以及代价敏感因子,在提升分类性能的同时解决了类不平衡的问题。
- Shen等【10】对CNN模型中的softmax分类器损失函数引入代价敏感因子,实现图像边缘检测;
- Chung等【11】将代价因子嵌入CNN的损失函数中,提升经典CNN对少数类样本的识别精度。
代价元学习:由于存在一些分类器不能直接应用代价敏感学习机制,此时只能间接地进行代价敏感学习,代表性的方法是代价敏感元学习,代价敏感元学习将样本相关的错分代价转换成样本权重,按权重对原始样本集进行重构。
- MetaCost【12】是一种典型的代价敏感元学习方法,通过估计训练样本的后验概率密度,结合代价矩阵计算每个训练样本的理想类别,然后根据理想类别修改原训练样本的类别,得到新的训练集,最后使用基于错误率的分类器学习这个新的训练集。
- Zhou等【13】改变训练数据集中各个类别的实例数据比例,使得分类器偏向于少数类,从而具有代价敏感的性质。
基于代价敏感学习的不平衡数据分类方法通过引入代价来指导学习过程,是处理不平衡数据分类问题的有效方法,但当少数类样本数量太少甚至没有少数类样本时,代价敏感的方法不再适用. 同时,基于代价敏感学习的不平衡数据分类方法的核心是错分代价的确定,在大多数情况下,很难对真实的错分代价做出准确的估计。当前,误分类代价的确定与各类别的样本个数密切相关,通常以各类在数据集中的样本数量或各类样本数的比例作为错误分类代价,不能较好地反映数据真实的类分布特征,无法保证代价敏感学习的效果. 可行的解决思路是以多数类和少数类的分类性能最佳为标准,结合数据的分布特性构造代价分布空间,利用搜索和优化技术,寻找一个最适应数据集特性的误分类代价。
3.2 单类学习
在很多情况下,比较容易得到大量的多数类数据样本,而少数类样本难以获得,表现为极端不平衡问题. 为了解决该问题, 单类学习提供了一种新思路. 基于单类学习的不平衡数据分类方法的主要思想是只对多数类样本进行训练,形成一个对该类别的数据模型. 目标在于从测试样本中识别出多数类样本,而不是对少数类和多数类进行区分。
- 单类支持向量机(One-class SVM)【14】, 在高维特征空间求解一个最优超平面实现多数类别与坐标原点的最大分离。
- 支持单类数据描述 (Support vector data description, SVDD)【15】通过映射到高维特征空间中找到一个尽可能小的超球体描述多数类样本的边界分别情况。
基于单类学习的不平衡数据分类方法只需要一类数据集作为训练样本,能有效减少时间开销, 适用于少数类样本非常少或类间不平衡度很高的极端情况, 但容易陷入对训练集中少数类样本的过拟合而导致泛化能力下降. 在单类学习中,样本类别的确定依赖于阈值,如何选取合理的阈值是需要解决的关键问题之一. 同时, 现有的单类学习方法大多基于核函数来寻找非线性决策边界,性能在很大程度上还依赖于核函数的选取,针对此问题,可通过采用一定的优化算法对参数进行优化选择,提高算法的收敛速度和泛化能力.
3.3 集成学习方法
Bagging方法集成不同的分类器通过选择的输入,在训练集时,使用自助法选择样本迭代或者分配权重给观察点;最后的预测阶段使用了多数投票的原则,这能够确保误差被忽略。Bagging较多联系到对于相关性不稳定且对输入敏感的算法比如决策树。
但是,直接使用Bagging对于不平衡数据集仍然是不合理的,这是因为自助法采样是不管数据标签的,因而不平衡的分布会被子样本数据集所继承。为了使不平衡数据在内容上更加有效,由许多不同的变体被提出了.
- Asymmetric bagging【16】:每次迭代时,全部小类数据保留,从大类数据中分离一个与小类数据一样大的子集
- SMOTEBagging【17】:结合了SMOTE与bagging,先使用SMOTE生成更加全面的小类数据,然后应用bagging
- Over Bagging【17】:每次迭代时应用随机过采样在小类数据
- Under Bagging【18】:每次迭代时应用随机下采样在大类数据
- Lazy Bagging【19】:只在使用KNN算法识别的K个近邻点上使用bagging
Boosting: Adaboost(Adaptive Boosting)是一种迭代促进的方法。在训练种它分配不同的权重给观察值。具体来说,在每次迭代中,误分的观察值的权重增加,而正确分类的观察值的权重减少。从而,训练过程中,模型会更加聚焦于误分类的数据,因而提高了分类结果的正确率。
尽管boosting是一个有效且易于执行的方法,但是它位于类边界的限制,以及对奇异值进行训练的风险,会影响它学习的效果。因此有一些方法对此进行改进。
- SMOTEBoost 【20】: 结合了SMOTE方法代替简单的增加小类观察点的权重
- BalanceCascade 【21】: 是典型的双重集成算法,采用Bagging作为基本的集成学习方法,并在训练每个Boostrap数据时,使用AdaBoost作为分类算法。
随机深林
随机深林对于高维度数据是更加相关和有效的。相比较标准决策树比如&RT,C5.0和adaboost,随机深林由一个显著的性能提升。
Balanced Random Forest BRF :在许多不平衡数据使用随机深林的情形中,当自助迭代时,由很大的概率包含一点或没有小类样本,这会引起决策树的预测性能很差。而分层自助,是用平衡随机深林(BRF)所提供的资源进行自助迭代,可以解决这个问题。BRF如下:
- 对于每次随机深林迭代,取一个小类数据的自助样本
- 抽取大类中同样数目的观察点,样本就会被平衡
- 随机选择一定数目变量为每次自助样本产生一棵树
- 使用多数投票进行预测
Weighted Random Forest WRF :WRF是另一个随机深林的方法,它更加适应高倾斜数据学习。通过引入类权重,我们能够分配一个重要的惩罚系数给误分的小类数据。而权重在两个位置,一是在决策树中的权重用于平衡基尼系数,二是每课树中的叶节点。
代价敏感的集成学习:此方法不再调整单个分类器来体现不同类的误分代价,而是通过集成学习算法来引导代价的最小化过程. 通过这种方法,避免了对基分类器的不断调整。目前解决不平衡分类问题的代价敏感集成方法主要采用不同的方法更新Adaboost的权重,使得算法对不同类别区别对待。代表性方法由AdaCost、AdaC1、AdaC2、AdaC3 【24】等。
基于集成学习的不平衡数据处理方法取得了一定的成功,但集成算法对基分类器的训练过程较为复杂,时间花费较高,并在处理高维数据上存在一定的局限性。同时,现有的基于集成学习的不平衡数据处理方法大多存在基分类器类型和数量的选择难题。针对此问题,可尝试结合数据的特性,选择不同类型的基分类器进行组合,并以不平衡数据分类性能为目标,对各基分类器的数量进行寻优,从而获得较好的分类性能。
4 不平衡数据集分类方法性能评价
对于二分类,假设分类器与预测标签的混肴矩阵如下:
则比较经典的几个评价指标:
1
2
3
4 ROC 曲线
5 AUC(ROC曲线下的面积)
5 公共不平衡数据集
表1 公共不平衡数据集
表2 基于F-measures下不同算法在不平衡数据集的表现
从上述表格可以参考不同方法在不同数据集的效果,能够发现,事实上,并没有一个万能的方法能够适用于不同的数据集,具体方法的选择主要还是根据数据的特性。
参考文献
- 李艳霞, 柴 毅, 胡友强, et. al. 不平衡数据分类方法综述. 控制与决策. 2019, 4. Vol 34, No 4.
- Mohamed Bekkar, Dr. Taklit Akrouf Alitouche. Imbalanced Data Learning Approaches Review. International Journal of Data Mining & Knowledge Management Process. 2013, 7. Vol 3, No 4.
- Kubat M, Matwin S, (1997),“Addressing the curse of imbalanced training sets: One-sided selection”;In Douglas H. Fisher, editor, ICML, pages 179–186. Morgan Kaufmann.
- Laurikkala J, (2001), “Improving Identification of Difficult Small Classes by Balancing Class Distribution”, AIME, LNAI 2101, pp. 63–66, Springer-Verlag Berlin Heidelberg.
- Wilson D L (1972), “Asymptotic Properties of Nearest Neighbor Rules Using Edited Data”, IEEE Transactions on Systems, Man, and Communications 2, 3, 408-421.
- Zhang Z L, Luo X G, Garca S. Cost-sensitive back-propagation neural networks with binarization techniques in addressing multi-class problems and non-competent classifiers[J]. Applied Soft Computing, 2017, 56(C): 357-367.
- Dhar S, Cherkassky V. Development and evaluation of cost-sensitive universum-SVM[J]. IEEE Trans on Cybernetics, 2017, 45(4): 806-818.
- Sahin Y, Bulkan S, Duman E. A cost-sensitive decision tree approach for fraud detection[J]. Expert Systems with Applications, 2013, 40(15): 5916-5923.
- Zhang G, Sun H, Ji Z, et al. Cost-sensitive dictionary learning for face recognition[J]. Pattern Recognition, 2016, 60: 613-629.
- Shen W, Wang X, Wang Y, et al. Deepcontour: A deep convolutional feature learned by positive-sharing loss for contour detection[C]. Proc of the IEEE Conf on Computer Vision and Pattern Recognition. Boston: IEEE, 2015: 3982-3991.
- Chung Y A, Lin H T, Yang S W. Cost-aware pre-training for multiclass cost-sensitive deep learning[C]. Proc of the 25th Int Joint Conf on Artificial Intelligence(IJCAI). New York: IJCAI, 2016: 1411-1417.
- Domingos P. MetaCost: A general method for making classifiers cost-sensitive[C]. Proc of the 5th ACM SIGKDD Int Conf on Knowledge Discovery and Data Mining. San Diego: ACM, 1999: 155-164.
- Zhou Z H, Liu X Y. On multi-class cost-sensitive learning [C]. Proc of the 21st National Conf on Artificial Intelligence. Boston: AAAI, 2006: 567-572.
- Maldonado S, Montecinos C. Robust classification of imbalanced data using one-class and two-class SVM-based multiclassifiers[J]. Intelligent Data Analysis, 2014, 18(1): 95-112.
- Chaki S, Verma A K, Routray A, et al. A one class classifier based framework using SVDD: Application to an imbalanced geological dataset[C]. Proc of the 3rd IEEE Students’ Technology Symposium. Kharagpur: IEEE, 2014: 76-81.
- Tao D., Tang X., Li X., Wu X., (2006), “Asymmetric bagging and random subspace for support vector machines-based relevance feedback in image retrieval”, IEEE Transactions on Pattern Analysis and Machine Intelligence, 28(7):1088–1099.
- Wang S & Yao X (2009), “Diversity Analysis on Imbalanced Data Sets by using Ensemble Models”, In Proc. of The IEEE Symposium on Computational Intelligence and Data Mining.
- Liu Y., Chawla N, V., Harper M., Shriberg E., Stolcke A.,(2006), “A Study in Machine Learning from Imbalanced Data for Sentence Boundary Detection in Speech”; Computer Speech and Language, 20, 468-494.
- Zhu X & Yang Y, (2008),“A Lazy Bagging Approach to Classification”, Pattern Recognition, 41(10):2980 – 2992.
- Chawla N,V., Lazarevic A., Hall L, O., Bowyer K, W., (2003),“Smoteboost: Improving prediction of the minority class in boosting”, In 7th European Conference on Principles and Practice of Knowledge Discovery in Databases, pages 107–119, Dubrovnik, Croatia.
- Liu X Y, Wu J, Zhou Z H. Exploratory undersampling for class-imbalance learning[J]. IEEE Trans on Systems, Man, and Cybernetics-Part B, 2009, 39(2): 539-550.
- Sun Y, Kamel M S, Wong A K C, et al. Cost-sensitive boosting for classification of imbalanced data[J]. Pattern Recognition, 2007, 40(12): 3358-3378.