首发于书桌

极端类别不平衡数据下的分类问题S01:困难与挑战

不平衡学习是机器学习问题的一个重要子域,其主要关注于如何从类别分布不均衡的数据中学习数据的模式。在这篇文章中我们主要关注不平衡分类问题,特别地,我们主要关注类别极端不平衡场景下的二分类问题所面临的困难。为简洁起见,文中出现的Min代表”少数类样本”,Maj代表”多数类样本”。

Note: 本文性质类似随笔,结构较混乱。
查看更新请移步:极端类别不平衡数据下的分类问题S02:问题概述,模型选择及人生经验
刘芷宁:极端类别不平衡数据下的分类问题S02:问题概述,模型选择及人生经验zhuanlan.zhihu.com图标
我们针对不平衡分类的工作已被数据库与数据挖掘顶会ICDE2020接收:"Self-paced Ensemble for Highly Imbalanced Massive Data Classification"[arXiv][Github],欢迎Issue,欢迎Star,欢迎Cite!详情请见这篇文章
刘芷宁:Self-paced Ensemble: 高效、泛用、鲁棒的不平衡学习框架zhuanlan.zhihu.com图标

Problems that imbalance brings to classification:

通常来讲在不平衡分类问题中我们对多数类/少数类样本有不同的关注程度:一般我们更关注模型正确分类少数类样本的能力,若关心多数类的模式,则该问题可以退化为anomaly detection问题 (将少数类样本作为noisy points去除即可 = =)。

有关异常检测 (Anomaly detection)
Anomaly detection 除数值分析类方法外,同样有一系列的经典方法;如One-class SVM 及其派生的One-class NN,周志华老师的Isolation Forest,以及一系列Auto Encoder-Decoder based methods (One class NN 某种意义上也属于此类)。 由于只关心多数类的分布,这些方法一般为unsupervised / weakly-supervised,只使用单类别数据训练。
分类问题的一个underlying assumption是各个类别的数据都有自己的分布,当某类数据少到难以观察结构的时候,我们可以考虑抛弃少数类样本,转而以anomaly detection的方法学习更容易学习也更为明显的多数类的模式,而后将不符合多数类模式的样本判断为异常/少数类,某些时候会有更好的效果。

对于一般的机器学习方法,最常见的评价指标无疑是分类准确度ACC (accuracy),ACC的含义非常直观并且在通常情况下都很有效,但在评估分类器在不平衡数据上的表现时使用ACC不完全合理。考虑以下情况:在一个二分类的数据集中,正类样本占样本总数的1%,此时一个分类器只需要全部输出0就能在原始数据集上得到0.99的accuracy score。这是一个相当高的结果,但显然只会输出0的分类器并不是一个好的分类器。由于ACC等传统评价指标的特性,在数据分布不平衡时其往往会导致分类器的输出倾向于在数据集中占多数的类别:输出多数类会带来更高的分类准确率,但在我们所关注的少数类中表现不佳。

显然我们需要针对类别不平衡的问题重新设计pipeline:从数据预处理,到训练方法,直至评估指标。常见的处理不平衡数据所使用的技术有:

  1. 收集更多数据总是有帮助的,但多数情况下难以实现。
  2. 更换评价指标:
    1. 通过混淆矩阵计算precision/recall (也称作specificity/sensitivity)
    2. F1-score (precision-recall 的一种可控加权平均)
    3. Use Kappa (由类别不平衡程度normalized的一种准确度度量)
    4. ROC curves – calculates sensitivity/specificity ratio
  3. data-level methods
    1. 基本思想是通过数据预处理改变数据的类别分布,将问题转化为平衡分类问题。
    2. 过采样(oversampling)通过向数据集中加入少数类样本来得到平衡的训练数据集。(该类方法一般在数据量较少时使用)
    3. 降采样(undersampling)方法通过丢弃数据集种的多数类样本来得到平衡训练数据集。(该类方法一般在数据量相对较多时使用)
  4. algorithm-level methods
    1. 此类方法通常通过改变已有的学习算法来使其倾向于重视少数类数据的模式,这一过程可通过加入数据权重(e.g. boosting)或者对误分类数据的惩罚(cost-sensitive learning)来使学习算法在不平衡数据上工作。
  5. hybrid methods
    1. 混合类方法同时应用上述方法3, 4来解决类别不平衡问题。

我们在此快速概览一下上述的3、4、5三类方法。

Data-level Methods

基于降采样的方法会丢弃一部分多数类的数据(会丢失一部分信息),因此该类方法通常与集成学习方法(ensemble learning)一起部署,通过多次降采样并训练多个基学习器来弥补information loss。但即便是多次随机降采样仍有可能会丢弃含有重要信息的多数类数据,一些研究尝试解析数据中的内在结构,并在降采样时尽量保持原有的数据结构来保证不会丢弃含有重要信息的数据点。

过采样方法通过加入新的少数类数据来产生平衡的数据集,简单随机过采样即随机选择原始的少数类数据,复制并加入原始数据集中。这种方法非常容易导致overfitting:在某一点上存在多个同样的样本会导致输入空间中不平滑的分布,从而学习出一个不平滑的decision boundary。

为解决该问题,SMOTE [1] 是一个被广泛采用的方法,该方法计算每一个少数类样本的K-nearest neighbor,根据每一个样本的KNN中少数/多数类样本的占比来判断该样本邻近的数据结构,目标是在少数类样本的cluster内部通过均值产生多个新的样本。这样产生的数据分布更为平滑,可以在完善少数类数据分布的同时一定程度上缓解过采样带来的overfitting。

Algorithm-level Methods

该类方法主要通过对已有的平衡学习算法做出适应性的修改,来修正其对多数类的分类偏好,该类方法最广为人知的一个分支即代价敏感学习(cost-sensitive learning) [2]。顾名思义即对不同类别的误分类样本施加不同的罚项(penalty),以二分类问题为例,我们会增大将Min误分类为Maj的penalty (i.e. 将Min分类为Maj会贡献更多的Loss) 来使模型的输出更加倾向于少数类。

Hybrid Methods

即组合上述两种处理方法,一般定义比较模糊,以周志华老师的BalanceCascade
[3] (后称BC)方法为例。该方法是一种典型的undersampling + ensemble方法,基学习器为AdaBoost类决策树。BC在每一次迭代中从多数类采样空间中随机降采样得到一个1:1的训练集,以从该训练集得到的Adaboost模型输出为依据,每一次迭代都从多数类采样空间中丢弃一部分已经被很好地分类的多数类样本。该多次迭代过程在逐步缩小采样空间降低random undersampling的随机性的同时,在BC过程后期产生的学习器会更加关注不易分的样本,并通过ensemble的方式最终得到一个鲁棒的强分类器。

BalanceCascade

BalanceCascade的idea非常有启发性,过程直观并易于理解,但我在将其部署到一个large-scale (Over 3e8 instances), extremely-imbalance (Minority ratio < 0.0003)的实际问题中时发现该方法并不能很好地handle这类极端类别不平衡问题,具体原因请见后文。

Extremely imbalance

相当一部分不平衡学习方法在extremely imbalance的情况下都失效了。

例如在前文异常检测处提到的NN一整个mini batch只有多数类样本 = =
(为叙述方便,下文中以IR代表imbalance ratio)

对基于undersampling + ensemble的方法:

极端不平衡的类别意味着需要更小的采样率来产生一个平衡的训练数据集。这意味着每个模型只能观察到很少的多数类信息(数百甚至数千分之一):首先information loss会很严重,很难保证随机采样得到的都是informative的数据点

采样率过低带来的另一个问题是很大的randomness,直观来讲也很容易理解:从原始分布中采样1000分之1得到的子集很难较好地表示原始分布,与此同时,多次随机采样得到的不同子集之间也有很大的区别,这样便导致每个基学习器之间的表现天差地别

此外,在IR=10时,为了弥补single learner的information loss我们引入ensemble方法,可以通过Kfold划分10份training / test data来保证使用数据中的全部信息,训练10个模型然后取mean/voting。但在IR=1000+时,若使用全部信息则需要训练1000个甚至更多的模型。。。这可能需要大量的时间或者计算资源。如果想要训练较少的模型降低cost,如何决定减少的程度来保证最终结果的稳定性/控制最终结果的performance loss?

上述问题(理论上)可以通过有指导的数据选择过程解决

  1. Trainable Undersampling [4] :比较新鲜的尝试,AAAI‘。RL-based,训练一个采样器对每一个数据点做keep/drop,reward是验证集上的评价指标,因为需要跑好多遍需要大量的时间与计算资源。论文中使用的数据集基本都是toy。)
  2. 自步学习(Self-paced Learning) [5] 与课程学习(Curriculum Learning) [6],basic idea是模拟人类从易到难的学习过程,先学习易被分类的样本,然后通过这些”容易”样本所提供的背景知识来帮助模型学习更难的样本。(BalanceCascade方法某种程度上具有这类方法的思想)
  3. Learning to Teach [6],模拟人类在教师指导下学习的过程,通过增加一个teacher model来帮助student model达到更好的表现。这种”指导”此处指数据选择过程 (跟meta learning差不多…) 但不限于选data,其他还有teach loss function (loss由一个model计算), teach on structure(自动确定网络结构,AutoML那一套…) 等等

为什么BalanceCascade会失效?

根据BalanceCascade的方法,在每一轮迭代时对多数类进行降采样得到一个1:1的平衡数据集,用于训练本轮的学习器;而后根据本轮学习器在所有多数类样本上的输出,丢弃已被很好分类的多数类样本。

  1. 初始random sample导致的误差累积:在extremely imbalance的情况下初始的几轮1:1采样面临着相当高的降采样率,此时降采样得到的多数类样本子集并不一定能够较好地反应总体数据的真实分布(namely, Bad undersampling),使用这些bad undersampling得到的数据集训练得到的学习器学习到的自然也是一个biased分布,这意味着使用该学习器输出所丢弃的那一部分样本可能并不是我们想要丢弃的”soft”样本(错误地丢弃了含有重要信息的样本)。又由于在前几轮我们丢弃了多数类样本中一些重要的结构信息,在后续迭代中得到bad undersampling的概率变得更高,从而陷入了(bad sampling -> bad base learner -> bad drop -> even worse sampling)的恶性循环。
  2. 后期一味关注样本的分类难度并不可取:与extremely imbalance随之而来的通常有类别分布在样本空间的严重重叠(overlapping)。设想两个类别各自服从一个只有中心点不同的高斯分布Gmaj与Gmin,少数类样本在Gmin上采样100次,多数类样本在Gmaj上采样1e5次 (IR=1000)。我们可以观察到即使两个类别所属的分布看起来可以被轻易区分开来,但在两者的样本数量差距悬殊的情况下,即便在少数类分布最密集的地方也存在相当多的多数类样本(见下图)。如果仍然秉持单纯关注样本的hardness的方法论,最后几轮迭代中这部分overlapping area中多数类样本的占比只会越来越多,可想而知使用这些样本训练得到的模型会具有相当糟糕的泛化能力(根据我自己的实验结果几乎等于没有泛化能力 = =)。
Non-overlapped / Overlapped underlying distribution with different IR

BalanceCascade所出现的问题可以通过一些手段缓解:如每一次迭代中进行多次undersample训练多个模型,以ensemble的输出决定drop哪些数据,减少randomness带来的影响。此外我们还可以在多数类样本中使用一些去噪的方法来识别overlapping area的多数类样本,减少后期由于过度关注这些样本导致泛化性能的损失。等等

对于oversampling方法:

们以使用最广泛的SMOTE [1] 为例,在极端不平衡条件下由于严重的overlapping (以及一般同时出现的较少的少数类样本数量),少数类样本通常缺乏较好的表示 / 清晰的分布结构。在这种情况下直接依赖于分析少数类样本之间的关系来产生新数据的oversampling方法 (如:SMOTE及其变体[9, 10]) 通常会失效,甚至反向优化 [8]。
有一些SMOTE的变体尝试改善这类算法在high imbalance ratio下失效的情况,其中的典型代表是使用Rough set theory来清理那些SMOTE产生的人工数据点,避免产生噪声样本或者导致整体分布不连续性的样本 [11]。如此可以避免SMOTE在highly imbalance下的反向优化。

但在extremely imbalance下,由于少数类样本分布的稀疏性,使用上述方法处理生成的样本点会将相当大一部分的生成样本都作为噪声样本去除掉。。。换言之,最终只会留下很少一部分的人工样本,并不能有效地解决类别不平衡的问题。= =

In cases with such a high imbalance the minority class is often poorly represented and lacks a clear structure. Therefore, straightforward application of pre-processing methods that rely on relations between minority objects (like SMOTE) can actually deteriorate the classification performance. Using randomized methods may also be inadvisable due to a high potential variance induced by the imbalance ratio. Methods that will be able to empower the minority class and predict or reconstruct a potential class structure seem to be a promising direction.

-Krawczyk, Bartosz. “Learning from imbalanced data: open challenges and future directions.” Progress in Artificial Intelligence 5.4 (2016): 221-232.

[1] Chawla, Nitesh V., et al. “SMOTE: synthetic minority over-sampling technique.” Journal of artificial intelligence research 16 (2002): 321-357.
[2] Zhou, Z.-H., Liu, X.-Y.: On multi-class cost-sensitive learning. Comput. Intell. 26(3), 232–257 (2010)
[3] X. Liu, J. Wu and Z. Zhou, “Exploratory Under-Sampling for Class-Imbalance Learning,” Sixth International Conference on Data Mining (ICDM’06)(ICDM), Hong Kong, 2006, pp. 965-969.
[4] Peng M, Zhang Q, Xing X, et al. Trainable Undersampling for Class-Imbalance Learning[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2019, 33: 4707-4714.
[5] Kumar, M. Pawan, Benjamin Packer, and Daphne Koller. “Self-paced learning for latent variable models.” Advances in Neural Information Processing Systems. 2010.
[6] Bengio, Yoshua, et al. “Curriculum learning.” Proceedings of the 26th annual international conference on machine learning. ACM, 2009.
[7] microsoft.com/en-us/res
[8] Krawczyk, Bartosz. “Learning from imbalanced data: open challenges and future directions.” Progress in Artificial Intelligence 5.4 (2016): 221-232.
[9] Han, Hui, Wen-Yuan Wang, and Bing-Huan Mao. “Borderline-SMOTE: a new over-sampling method in imbalanced data sets learning.” International Conference on Intelligent Computing. Springer, Berlin, Heidelberg, 2005.
[10] Bunkhumpornpat, Chumphol, Krung Sinapiromsaran, and Chidchanok Lursinsap. “Safe-level-smote: Safe-level-synthetic minority over-sampling technique for handling the class imbalanced problem.” Pacific-Asia conference on knowledge discovery and data mining. Springer, Berlin, Heidelberg, 2009.
[11] Ramentol, Enislay, et al. “SMOTE-RSB*: a hybrid preprocessing approach based on oversampling and undersampling for high imbalanced data-sets using SMOTE and rough sets theory.” Knowledge and information systems 33.2 (2012): 245-265.

编辑于 2019-11-06

文章被以下专栏收录