Java教程

不平衡数据挖掘综述

本文主要是介绍不平衡数据挖掘综述,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

不平衡数据挖掘综述

author by: AIHUBEI

不平衡数据的挖掘方法主要分为两大层面,分别是数据级别和算法级别的处理

在不平衡数据中,拥有较多实例的一类称为多数类,拥有较少实例的一类称为少数类。目前,少数类检测和基于不平衡数据的学习不仅仅作为数据挖掘领域的难题被关注,而是已经成为跨研究领域(从管理学到工程)的难题。如:医疗领域的100000:1的案例已经被报道【1】。在高度不平衡的数据中进行学习,分类器很容易倾向于多数类【2】。

同时特征选择的目的是减少冗余特征,保留具有较强区分能力的特征可以提高分类器的表现以防止分类器过拟合。而在数据不平衡的情况下,传统的特征选择方法所选的特征更加偏向于多数类而非少数类。在实际案例中,人们往往会更加关注于少数类,且少数类误分为多数类的代价通常会更大【3】。因此为了训练出适合不平衡数据的分类模型,对不平衡数据进行处理显得格外重要。

常见的不平衡学习场景:信用评估、客户流失预测、医学诊断、短文本情感分析、标记学习、网络安全等领域。

不平衡数据分布图:
在这里插入图片描述

一. 针对不平衡数据的预处理方法

针对不平衡数据的预处理,这种方法没有依赖于分类器,仅在数据层面将不平衡的数据集转换为平衡的数据集,从而达到使用平衡的数据来训练分类器的目的。

1.采样法

利用采样法来再平衡样本空间可以缓解其不平衡程度。采样法主要分为:上采样、下采样、混合采样

(1)上采样

上采样通过生成少数类使得少数类和多数类平衡。常用的是随机上采样。随机上采样(从少数类中反复抽取,将抽取到的样本放入原样本空间以组成新的样本空间。

代码示例:

# 使用randomoversampler
from imblearn.over_sampling import RandomOverSampler as ros
ros = ros(random_state = 1234)

# 采样之前已经进行了训练集测试集划分
x_train_sampled, y_train_sampled = ros.fit_resample(x_train, y_train)

# 打印采样之前的类别比例
print(y_train.values_counts()/len(y_train))
# 打印采样之后的类别比例
print(pd.Series(y_train_sampled).values_counts()/len(y_train_sampled))

缺陷:随机上采样非常快速,但该方法会使得少数类中存在大量相似的数据,在分类器的训练中会造成过拟合。同时,若少数类中存在噪声数据,则多次抽取少数类样本之后会增大噪声对模型的影响。为了解决随机上采样所带来的问题:产生了smote【4】。

SMOTE:(Synthetic Minority Over-Sampling Technique)采用==数据合成==的方式,来产生少数类。

SMOTE基本思想:对每一个少数类样本的 K K K近邻进行分析( K K K通常是大于1的奇数),并对少数类和其近邻之间随机进行线性插值来合成新的少数类样本。这样,通过合成新的数据而非简单地进行少数类样本的复制,可以很好地避免过拟合。

SMOTE算法图示如下:

在这里插入图片描述

代码示例:

# 使用smote进行采样
from imblearn.over_sampling import SMOTE

# 采样
over_samples = SMOTE(random_state = 1234)
over_samples_x, over_samples_y = over_samples.fit_sample(train_x, train_y)

# 采样之前的类别比例
print(train_y.value_counts()/len(train_y))
# 采样之后的类别比例
print(pd.Series(over_samples_y).value_counts()/len(over_samples_y))

缺陷:SMOTE算法仅对每一个少数类样本产生相同数量的合成数据,没有考虑近邻样本的分布特点,增加了样本重叠(overlapping)的可能性。而样本重叠会导致产生的新数据没有任何信息。

针对这一缺陷,产生了一些新的改进算法,其中一种是自适应上采样方法,最典型的是Borderline-SMOTE算法【5】和自适应合成抽样算法ADASYN【6】。

Borderline-SMOTE的主要思想:在少数类样本空间寻找靠近边界的样本组成新的样本空间,然后在新样本空间内合成新的数据,以使得新增加的人造数据更加有效。图示如下:

在这里插入图片描述

这里的‘DANGER’样本所组成的样本空间在边界附近,因此被用来合成新的样本。但是该算法仅仅是对所有边界上的少数类样本进行样本合成,并没有对边界样本进行区分,导致的结果是如果边界样本存在噪声,则通过对边界样本的合成会增加更多的噪声数据,严重影响分类器的性能。

对于ADASYN算法,不同于SMOTE那样对每个少数类都生成相同数目的样本,而是利用样本的分布自动决定每个少数类样本应该生成的样本数量。自适应合成抽样算法容易受到离群点的影响,若一个少数类样本的附近都是多数类样本,则会在其周围生成大量的少数类样本。

其他的一些改进算法为:使用少数类 K K K近邻样本的均值合成新样本的SMOTE-D【7】算法、消除噪声数据进而合成新样本的MSMOTE【8】算法、基于核的SMOTE算法K-SMOTE【9】等。这些改进算法除了MSMOTE考虑了噪声对生成数据的影响,SMOTE-D和K-SMOTE同样对噪声样本十分敏感。

代码示例:

# 使用ADASYN算法
from collections import Counter
from sklearn.datasets import make_classification
from imblearn.over_sampling import ADASYN 

X, y = make_classification(n_classes=2, class_sep=2,
weights=[0.1, 0.9], n_informative=3, n_redundant=1, flip_y=0,
n_features=20, n_clusters_per_class=1, n_samples=1000,
random_state=10)
print('Original dataset shape %s' % Counter(y))

ada = ADASYN(random_state=42)
X_res, y_res = ada.fit_resample(X, y)
print('Resampled dataset shape %s' % Counter(y_res))

# 使用BorderlineSmote算法
from sklearn.datasets import make_classification
from imblearn.over_sampling import BorderlineSMOTE 


X, y = make_classification(n_classes=2, class_sep=2,
weights=[0.1, 0.9], n_informative=3, n_redundant=1, flip_y=0,
n_features=20, n_clusters_per_class=1, n_samples=1000, random_state=10)
print('Original dataset shape %s' % Counter(y))

sm = BorderlineSMOTE(random_state=42)
X_res, y_res = sm.fit_resample(X, y)
print('Resampled dataset shape %s' % Counter(y_res))

基于图像的检测任务:特别是在癌症检测领域,大量的图像中仅有少数异常图像,这就是图像类别的不平衡。已经提出的图像生成方法有:

  • 变分自编码器VAE【10】,基于变分下界约束得到Encoder-Decoder模型。
  • 生成对抗网络GAN【11】,通过生成模型和判别模型之间的对抗来产生更好的输出。
  • InfoGAN【12】:它是GAN的一种改进,解决GAN中隐变量可解释性的问题,能够挖掘GAN模型隐变量的特征,使得生成图像与原始图像更加相似。
  • and so on

(2)下采样

下采样方法通过减少多数类中的样本消除类别的不平衡问题。最简单有效的下采样方法是:随机下采样(Random Under-Sampling, RUS)。基本思想:随机地从多数类样本中抽选出与少数类样本一致的规模,再将抽选出的样本与少数样本组合成新的平衡数据集。

缺陷:从多数类样本中随机抽取部分样本会使得多数类样本中的关键信息丢失。

于是,Liu等人【13】提出了informed下采样方法:Easy-Ensemble和BalanceCascade算法。

EasyEnsemble算法主要步骤:首先将数据集划分为两部分,分别为少数类样本集与多数类样本集。然后对多数类样本进行 n n n次有放回的抽样,形成 n n n份子集,将每一份子集与少数类样本集合并形成 n n n组新的平衡数据集。最后使用这 n n n组平衡后的数据集训练 n n n个模型,对测试数据的最终结果就是这 n n n个模型的结果均值。图示如下:

在这里插入图片描述

BalanceCascade算法与EasyEnsemble相似,不同之处在于:前者会在一次训练之前先将上次已经正确分类的多数类样本移除。

这两种算法都利用了集成的思想,对多数类进行重复多次的采样并训练多个分类器,不仅避免了下采样造成的关键信息丢失,而且缓解了过拟合问题。

其他的一些改进算法

  • CBUS(Clustering-Based Undersampling):【14】这是一种基于多数类聚类的下采样方法。提供了两种下采样策略,主要思想是将多数类中簇的数目设置成等于少数类样本的数目,第一种策略使用簇中心来代表多数类,第二种策略是使用簇中心的最近邻样本代表多数类。缺陷为:初始簇中心的不确定性和样本异常点对于簇的分布影响较大,以及当少数类样本数量较大的时候,聚类所花费的时间较长。
  • Fast-CBUS(Fase Clustering-Based Undersampling):【15】也是基于聚类的下采样方法,策略:首先使用聚类的方法将少数类形成 K K K个簇并设置簇的区域(区域以簇中心为圆点,簇中心到簇边界样本的距离为半径)。然后通过计算多数类是否在簇区域中来选取平衡每个簇的样本。该方法目前仅可用于二分类问题。
  • GAUS:基于遗传算法的下采样方法(Genetic Algorithm Based Undersampling),【16】主要通过最大化原型分类器的性能,使得该分类器能够最小化原始分布和下采样多数类样本后样本分布的损失。这种方法克服了分类器性能不稳定,下采样信息丢失等问题

(3)混合采样

混合采样是一种结合上采样和下采样的方法。混合采样后分类器的性能几乎是优于单个采样方法的【20-21】。上采样和下采样方法都可以使得不平衡程度降低。上采样方法扩大了原始样本空间,这会使得训练时间更长,同时这种方法不断地重复少数类样本容易导致过拟合。而下采样方法会使原始数据样本减少,使得训练时间更短,但是会忽略潜在的有用信息。

因此,有人提出将随机下采样和SMOTE结合的方法【17】。

主要思想:将多数类随机下采样到一定规模(下采样后多数类样本规模仍大于少数类样本规模),去除多数类样本中的冗余样本和噪声,然后使用SMOTE算法人工合成少数类样本,最后将处理后的训练集利用SVM算法进行分类。

但是通过SMOTE算法之后,原本属于多数类样本的空间很容易被处在边界的少数类或者少数类噪声“入侵”,为解决此问题,研究者【18】进一步提出SMOTE和Tomek组合算法,以及SMOTE和ENN组合算法。两种算法都是通过SMOTE算法生成新的样本数据集 D D D,但实际上前者移除 D D D中的Tomek对,后者则对 D D D中的每个样本使用 K N N KNN KNN方法进行预测,若预测类标和实际类标不同,则移除该样本。

2.特征选择和特征提取

在多数样本规模远大于少数样本规模的情况下,少数类样本很容易被当成噪声而被抛弃。但是研究者发现如果将特征空间中不相关的特征移除【19】,将会减缓这种现象。

(1)特征选择

特征选择(Feature Selection)是选取原始特征集合的一个有效子集,使得基于这个特征子集训练出来的模型准确率最高.简单地说,特征选择就是保留有用特征,移除冗余或无关的特征。常见的特征选择方法主要有:Filters、wrappers和Embeded。

Filters:主要思想是先对数据集进行特征选择,然后再训练学习器,特征选择过程与后续学习器无关。相当于使用特征选择方法对初始特征进行过滤。Relief【20】它通过“相关统计量”来度量特征重要性。“相关统计量”是一个向量,每个维度对应一个特征,特征子集的重要性是由子集中每一个特征的重要性求和得到。因此,只需要对特征重要性进行排序并选择前 n n n个特征组成特征子集,或者设置重要性阈值,将满足阈值的特征组合成特征子集。其他过滤特征的方法有卡方检验、信息增益和相关度系数等。

Wrappers::与Filters 无需考虑后续学习器不同,该方法主要思想是在所有可能的特征子集中寻找使分类器达到最高性能的子集,直接把使用的分类器性能作为特征子集的评价标准。这里特征子集的选择可以看作一个搜索寻优的问题。如LVW算法。

Embeded:在Filters 和Wrappers 方法中,特征选择过程与分类器的性能有着明显的分别,而在Embeded方法中,将特征选择过程与分类器训练过程融合在一起,两者在同一个优化目标中,让分类器在学习过程中自动地进行特征选择。一个典型的Embeded 方法就是使用 L 1 L_1 L1​ 正则化,它在损失函数中增加了正则项 λ ∣ ∣ w ∣ ∣ 1 \lambda||w||_1 λ∣∣w∣∣1​,由于 L 1 L_1 L1​ 正则化较易获得稀疏解,那么它所求得的 w w w中会有更少的非零分量,也就是说 w w w中存在为0的分量,那么就意味着初始的 d d d个特征中仅有对应着 w w w非零分量的特征才会出现在最终的模型中,这样就达到了特征选择的目的。

sklearn链接:https://scikit-learn.org/stable/modules/feature_selection.html

(2)特征提取

特征抽取(Feature Extraction)是构造一个新的特征空间,并将原始特征投影在新的空间中得到新的表示。

特征抽取又可以分为监督和无监督的方法.监督的特征学习的目标是抽取对一个特定的预测任务最有用的特征,比如线性判别分析(Linear Discriminant Analysis,LDA).而无监督的特征学习和具体任务无关,其目标通常是减少冗余信息和噪声,比如主成分分析(Principal Component Analysis,PCA)和自编码器(Auto-Encoder,AE)。同时SVD(Singular value Decomposition)可以实现对任意的矩阵(这里矩阵可以理解为:训练集中的每个特征所组成的矩阵)进行分解达到特征提取和降维的目的。NMF(Non-negative Matrix Factorization),通过矩阵分解的方式使分解后的所有特征均为非负值,同时实现降维的功能。

二.不平衡数据集的挖掘算法

1.基于聚类的挖掘算法

聚类算法的主要思想:按照数据内部存在的特征将数据集划分为多个簇,使得簇内的数据尽可能相似,簇间的数据相似度尽可能小。KMeans聚类算法是目前最为经典的聚类方法之一,它以样本空间中 k k k个点为中心进行聚类,将最靠近某一中心的样本归类一个簇。通过反复迭代,依次更新各个簇的中心值,直到出现最好的聚类结果。

研究者在中提出了一种名为Cluster-Centroids的基于KMeans的下采样方法。该算法通过将具有 N N N簇的KMeans算法拟合到多数类,并且使用 N N N个簇中心的坐标作为新的 N N N个多数类样本。再将这 N N N个多数类样本与少数类样本组成新的数据集,并使用该数据集来训练分类器。

缺陷:虽然KMeans的下采样方法能够支持稀疏矩阵,但是通过聚类产生的新样本并不是特别的稀疏,也就是说产生的新样本并不能很好地反应原始样本的特征。因此基于聚类的挖掘算法在处理该方面的问题时是低效的。

2.基于Boosting的挖掘算法

Boosting算法通过反复学习得到一系列的弱分类器,再组合得到一个强分类器。AdaBoosting是经典的Boosting类算法,采用加权多数表决的方法,加大预测错误样本的权重。研究者在分别提出了基于采样的SMOTEBoost、RUSBoost和CUSBoost算法。过程相似,在每次迭代提升之前,先对原始数据集进行平衡处理,都是为了在训练弱分类器时增强少数类的权重。

基于Boosting 的挖掘算法具有许多优势,比如:它有较高的准确率,不需要先验知识,只需要选择合适的迭代次数就能够获得很好的性能。但是由于Boosting算法是由许多的弱分类器组成,同时不支持并行化学习,使得分类器学习速度缓慢。数据集或选择弱分类器的不一致,都会导致分类器产生较大的差异(数据集不充分或者弱分类器过“弱”,都会导致分类器性能的下降)。另外,基于Boosting 的算法总是会增加错分样本的权重,使后续的弱分类器对错分样本进行反复学习来提高分类器对该样本的识别度,这也使Boosting 易受到噪声的影响(通常分类器很容易将噪声错分)。

3.代价敏感的挖掘算法

代价敏感学习与不平衡数据的学习有很大的联系,他根据不同误分类的代价不同,使分类器更关注分类代价高的数据。实际上,在不平衡数据集中,少数类错分为多数类具有更大的代价,进而使得分类器增加对少数类的关注。其主要用于分类。

主要思想:利用代价矩阵使得不同的分类错误导致不同的惩罚力度。通常定义 n ∗ n n*n n∗n的cost矩阵来表示不同类别的代价, n n n表示类别的数量, C o s t [ i , j ] Cost[i, j] Cost[i,j]表示将类别 i i i误分为类别 j j j的代价。同采样方法相比,代价敏感学习方法具有更低的时间复杂度,因此更适合于大数据样本。

难点:很难确定代价敏感矩阵的值,解决方案是:将多数类的误分类代价设置为1,将少数类误分类代价设置为 I R IR IR( I R IR IR=多数类样本数:少数类样本数,因此在不平衡数据集中 T R TR TR>1,同时这样设置也符合少数类误分代价比多数类误分代价要高的情况)。

(1)第一类:将误分类的代价以权重的形式直接作用到数据集中,相当于通过改变数据权重的方式来修改数据的分布,使分类器朝着误分类代价减少的方向学习。相应的用于不平衡数据的代价敏感的Boosting算法,比如AdaCost,它是AdaBoost的变种形式,只是将误分类代价作为数据空间中权重更新的策略引入。

(2)第二类:把代价最小化技术同集成方法结合。先使用传统的集成学习方法训练模型,然后将训练出的传统模型与代价最小化技术相结合形成代价敏感模型。MetaCost就是一种将传统的分类器转换为代价敏感模型的方法,传统分类器通过一个“元学习”过程,根据最小期望代价修改训练样本的类标记,并使用修改后的训练集重新学习新的模型。

优势:它将分类器视为黑箱,不需要知道分类器的内部结构,同时可以应用到任何个数的基分类器上以及任何形式的代价矩阵上。

(3)第三类:直接构造一个代价敏感模型,将代价敏感函数或者特征同分类器直接结合,通过学习器的学习过程将代价敏感函数拟合到分类器中。文献将代价敏感方法和决策树结合,提出了基于代价敏感的剪枝方法。将代价函数作为剪枝评判的标准,对决策树的过拟合问题起到一定的缓解作用。同时经过剪枝后,分类器泛化能力和分类准确率得到一定程度的提高。

缺陷:剪枝操作对阈值的设定很敏感,阈值的少量变动会引起整棵树的很大变动。另外,将剪枝操作加入到分类器的学习中,无疑会加大分类器的学习时间。

缺陷:代价敏感的挖掘算法不能广泛应用的原因:一是并非所有的算法都实现了代价敏感,二是代价敏感基于Cost矩阵,而Cost矩阵通常未知。

3.基于核的挖掘算法

常用的基于核的算法是SVM,它的主要思想是:基于训练集在样本空间中找到一个具有最大间隔划分超平面将类别不同的样本划分开,但是在线性不可分的情况中,没有办法找到一个超平面能够将样本划分,因此SVM利用核方法对样本空间进行高维映射来达到划分样本的目的。在不平衡数据的情况下,SVM 同其他分类器(如决策树、神经网络)相比,SVM有着相对鲁棒的分类结果【21】。这可能是由于核方法的影响。

对核方法的研究:

第一种:将核方法和采样方法结合。文献【22】提出了下采样的SVMs集成方法(EUS SVMs)它的主要过程为:将不平衡数据集分为少数类和多数类数据集,对多数类数据集下采样 N N N次,再将 N N N次下采样后的数据分别同少数类数据集组成新的 N N N组平衡数据集,最后利用集成方法将这 N N N组新数据分别训练出的 N N N个SVM分类器集成起来。

第二种:文献【23】提出用于不平衡数据集的Boosting SVMs, 主要过程是通过使用软边距的支持向量机作为基本分类器来解决偏斜向量空间问题,随后使用Boosting 算法来获得比单个分类器具有更低误差的集成分类器。通过实验发现这种SVM的集成在多数类和少数类的预测性能方面取得了较大的提升。第二种不同于第一种,第二种更关注对核方法的内部机制进行调整,这种通过调整内部机制进而优化分类器性能的方法通常称为核修正方法

5.其他算法

因为在正样本极少的情况下,人们很难提取出正样本的共有特征。这时,一个可行的方法就是采用一类学习(或一元学习),此类方法的主要思想是通过单一类别样本来学习一个一类分类器,这个分类器学到的是一个紧凑的边界。当使用测试数据进行一类分类器的测试时,如果超出了这个边界,那么就将该测试数据归为其他类别。文献【24】指出:当样本数量不平衡时,并且当特征空间中混杂有大量噪音特征时,基于学习单一少数类样本的分类模型,相比于学习两类问题的分类模型具有更好的性能。一类学习中一个典型的算法就是OneClassSVM,OneClassSVM的理论细节。

另外,还有一些利用一类学习思想的算法,比如Box Drawings 方法【25】和孤立森林(Isolation Forests)【26】方法。

孤立森林方法的提出源于异常检测,因为异常样本在样本空间中存在很少,所以也可以将异常值看作少数类,因而能够将该方法用于少数类的检测。该方法的主要思想是:通过学习孤立森林,然后测量每个特定样本在孤立森林中每棵树的高度均值,这个高度均值被用于计算每个数据点的异常得分(得分取值范围为[0,1]),得分越接近于1 说明该样本很大可能性属于异常样本,得分越接近于0 说明样本很大可能性属于正常样本。文献【26】指出在建立孤立森林时,每次随机采样的样本应远远小于数据集中样本数量,当采样数据量超过256效果就提升不大了,采样过多还会造成计算时间上的浪费。

孤立森林算法在数据极不平衡的情况下有着不俗的效果,它利用少数类样本少且与众不同的特点,将它们与多数类数据快速分离,具有较低的线性时间复杂度。

但是,该算法仍然存在一些不足之处

(1)由于孤立森林算法对少数类检测的精度与iTree(isolation tree)的数量相关,在建立大规模的iTree 时需要花费更多的内存空间和更大的计算量;

(2)随着iTree 数量的增多,各个iTree 之间的差异性会变小,使得孤立森林的泛化能力下降,同时iTree 数量的增多会导致出现大量性能较差的iTree,且检测的精确度不一致;

(3)孤立森林在处理海量数据样本时,需要建立数量较为庞大的iTree,易受到最大内存的限制,因此处理海量数据较为困难;
(4)在孤立森林中人为引入了随机因素,导致精确度低和稳定性差。

## 三.不平衡数据挖掘方法的评价指标

在传统的模型评估中,往往使用准确率和错误率来评估模型。但是在不平衡的数据中,少数类和多数类所占样本空间比例是不同的,一般地,少数类在样本空间中只有很少的一部分。为了解决传统评价指标存在的缺陷,研究者通常在研究不平衡数据集时使用以下指标:混淆矩阵,如下图:

在这里插入图片描述

1.单一评价指标

在不平衡数据中,更关心的是分类器对少数样本的表现,“查准率”(precision)与“查全率”(recall)更能够满足此类需求的性能度量。查准率 P P P与查全率 R R R定义如下:
P = T P T P + F P (式1) P = \cfrac{TP}{TP+FP}\tag{式1} P=TP+FPTP​(式1)

R = T P T P + F N (式2) R= \cfrac{TP}{TP+FN}\tag{式2} R=TP+FNTP​(式2)

查准率是度量精确度的标准,它表示分类器预测为正样本中,其真实类别为正样本所占的比例。

查全率是度量完整性的标准,它表示真实类别为正样本中,分类器预测成正样本所占比例。

查准率和查全率是一对矛盾的度量,一般来说,查准率高时,查全率往往很低。比如说,在搜索网页时,如果只返回最相关的那一个网页,则查准率为100%,而查全率很低;如果返回全部网页,则查全率为100%,而查准率很低。

2.组合评价指标

(1)P-R曲线

若比较两个分类器的性能,除了比较它们在全体样本空间中的查准率与查全率,一个更有效的指标是画出P-R曲线。如图:

在这里插入图片描述

如上:分类器A、B、C 的P-R曲线,分类器A的P-R 曲线被分类器B 的P-R 曲线完全包住,则说明分类器B的性能优于分类器A。而分类器A和分类器C 的P-R 曲线出现了交叉,一个行之有效的办法是计算各自曲线所围成的面积来比较优劣。但是曲线所围成的面积值并不容易估算,因此可以使用另一种度量的方法,比如平衡点或者F-Measure。平衡点是指曲线中“查准率=查全率”时的取值。

红点表示平衡点,则使用平衡点度量时,分类器性能为:B>A>C。

(2)F-Measure

使用平衡点进行度量太过简单,不能反应整体性能,故而更常使用的是:F-Measure
1 F α = 1 1 + α 2 ( 1 P + α 2 R ) ⟹ F α = ( 1 + α 2 ) P R α 2 P + R (式3) \cfrac{1}{F_\alpha} = \cfrac{1}{1+\alpha^2}(\cfrac{1}{P}+\cfrac{\alpha^2}{R})\Longrightarrow F_\alpha = \cfrac{(1+\alpha^2)PR}{\alpha^2P+R}\tag{式3} Fα​1​=1+α21​(P1​+Rα2​)⟹Fα​=α2P+R(1+α2)PR​(式3)
其中, α \alpha α>0 ,其度量了查准率和查全率的相对重要性。比如在癌症检测中,人们更希望分类器能够将所有的癌症患者检测出来,此时更加关注查全率;在推荐系统中,人们更希望给用户推荐所需要的产品,此时更加关注查准率。

因此可以通过调整 α \alpha α的取值来满足人们对查准率和查全率的不同偏好。若 α \alpha α >1,查全率有更大的影响;若 α \alpha α<1,查准率有更大的影响。如果人们希望查准率和查全率一样重要,即演化为性能度量中最常见的形式,即F1( α \alpha α=1) :
1 F 1 = 1 2 ( 1 P + 1 R ) ⟹ F 1 = 2 P R P + R (式4) \cfrac{1}{F_1}=\cfrac{1}{2}(\cfrac{1}{P}+\cfrac{1}{R})\Longrightarrow F_1 = \cfrac{2PR}{P+R}\tag{式4} F1​1​=21​(P1​+R1​)⟹F1​=P+R2PR​(式4)
其实,F1 度量是查准率和查全率的调和平均值,也就是说,要使F1 较大,查准率和查全率都必须尽可能大。F1 度量对查准率和查全率没有偏向,更加适用于分类器的评估。

(3)G-Mean

上述提出的是针对少数类的评价指标,当人们需要同时考虑分类器在多数类和少数类中的表现时,需要同时考虑TPR和TNR。Kubat等人提出了G-Mean(Geometric Mean)的评价指标:
T P R = T P T P + F N T N R = T N T N + F P (式5) TPR = \cfrac{TP}{TP+FN}\qquad TNR = \cfrac{TN}{TN+FP}\tag{式5} TPR=TP+FNTP​TNR=TN+FPTN​(式5)

G = T P R ⋅ T N R (式6) G = \sqrt{TPR\cdot{TNR}}\tag{式6} G=TPR⋅TNR ​(式6)

所以,G-Mean综合考虑了少数类和多数类的分类性能,因此要使G值更大,那么少数类和多数样本的正确率都需要很高。只要分类器分类偏向于其中任何一类就会影响另一类的正确率,导致G值变小。

(4)ROC曲线和AUC

F-Measure和G-Mean性能度量相比于准确率有了很大的改善,但实际上,当评估分类器的泛化性能时,这两种度量方法并不是很有效。(例如如何比较不同分类器在部分样本中的分类性能?)ROC曲线【使用真正例率(TPR)和假正例率(FPR)作为曲线的纵轴和横轴。
F P R = F P T N + F P (式7) FPR = \cfrac{FP}{TN+FP}\tag{式7} FPR=TN+FPFP​(式7)
在这里插入图片描述

由于样本空间有限,因此ROC曲线在一般情况下并非光滑。

若:分类器A的ROC曲线被B的ROC曲线完全包住,则可以说明后者性能优于前者。

若:分类器A和B的ROC曲线出现交叉,则很难直观得出谁更优的结论。此时的判断依据为:比肩两个分类器的ROC曲线面积,即AUC(Area Under ROC Curve),就是上图的阴影部分。

AUC评价的是FPR所有可能取值所对应的分类器的性能,因此相比于其他的评价标准更具有泛化性。

(5)代价曲线

之前的评价标准中,都存在一种隐含的假设:分类错误的代价均等。

但实际中,分类错误的代价往往不等。定义二分类代价矩阵如下:

在这里插入图片描述

则代价敏感错误率定义为:
E r r o r = 1 m ( ∑ x i ∈ D + I ( f ( x i ) ≠ y i ) ⋅ c o s t 01 + ∑ x i ∈ D − I ( f ( x i ) ≠ y i ) ⋅ c o s t 10 ) (式8) Error = \cfrac{1}{m}(\sum_{x_i\in{D^+}}I(f(x_i)\neq{y_i})\cdot{cost_{01}}+\sum_{x_i\in{D^-}}I(f(x_i)\neq{y_i})\cdot{cost_{10}})\tag{式8} Error=m1​(xi​∈D+∑​I(f(xi​)​=yi​)⋅cost01​+xi​∈D−∑​I(f(xi​)​=yi​)⋅cost10​)(式8)
其中 m m m为样本总数; D + D^+ D+代表正例子集, D − D^- D−代表反例子集。

AUC能够很好的评价分类器的泛化性能,但是AUC不能反映出分类器的期望总体代价,而代价曲线可以满足此要求

代价曲线的横轴是正例概率代价,纵轴为归一化代价,取值为[0, 1]。
P c o s t + = p ⋅ c o s t 01 p ⋅ c o s t 01 + ( 1 − p ) ⋅ c o s t 10 (式9) P^+_{cost}=\cfrac{p\cdot{cost_{01}}}{p\cdot{cost_{01}}+(1-p)\cdot{cost_{10}}}\tag{式9} Pcost+​=p⋅cost01​+(1−p)⋅cost10​p⋅cost01​​(式9)

c o s t n o r m = F N R ⋅ p ⋅ c o s t 01 + F P R ⋅ ( 1 − p ) ⋅ c o s t 10 p ⋅ c o s t 01 + ( 1 − p ) ⋅ c o s t 10 (式10) cost_{norm}=\cfrac{FNR\cdot{p}\cdot{cost_{01}}+FPR\cdot{(1-p)}\cdot{cost_{10}}}{p\cdot{cost_{01}}+(1-p)\cdot{cost_{10}}}\tag{式10} costnorm​=p⋅cost01​+(1−p)⋅cost10​FNR⋅p⋅cost01​+FPR⋅(1−p)⋅cost10​​(式10)

其中, p p p是样例为正例的概率。FPR为假正例率,FNR = 1-TPR是假反例率。

代价曲线的绘制:ROC曲线上的每一点(FPR,TPR)对应了代价平面上的一条线段,则可计算出FNR,然后从代价曲线中绘制一条从(0,FPR)到(1,FNR)的线段,线段下的面积就是该ROC曲线上一点所对应的期望总体代价。对ROC曲线的每一点都画出对应的代价曲线,其公共部分就是该分类器的期望总体代价。

四.总结

挖掘方法机制优点缺点适用范围
采样法改变数据分布使得数据平衡化简单上采样:增加了训练时长,容易导致过拟合,且本质上没有解决少数类样本的稀缺性;下采样:容易丢失重要的样本信息;混合采样:缓解了上采样和下采样的缺陷,但没有完全解决不平衡程度不易过大
特征选择选择具有更大区分度的特征来强化少数类所起到的作用选取最具有区分能力的特征,利于少数类的预测Filters:由于与分类器脱离,所选择的特征子集在分类准确率上提升较小;Wrappers:选择的特征通用性不强,当改变分类算法时,需要重新针对新的分类算法进行特征选择;Embeded:和Wrappers一样,每进行一次特征选择都需要对分类器进行训练,耗时较长(1)数据维度较高;(2)数据极度不平衡时,少数类容易被当作噪声处理
基于聚类的挖掘方法半监督学习简单,类簇的可解释性强(1)通过聚类生成的样本数据有时不能很好的反应原始的样本空间;(2)对于大样本数据集,聚类速度很慢,初始样本或者簇数的选择不当甚至会出现无法产生稳定簇的情况;(3)对噪声敏感数据集不宜过大
基于Boosting的挖掘方法自适应更改数据集中样本的权重进而强化权重较大的样本的学习简单易实现,繁华误差底,分类性能好(1)对噪声比较敏感;(2)通过加大分类错误样本权重,使得后面的分类器更加关注错误分类的样本,可能会出现过拟合的现象不平衡程度不宜过大
代价敏感的挖掘方法使用代价矩阵,对少数类错分赋予更大的代价,迫使分类器对少数类有更高的识别度通过代价矩阵更加具有针对性的学习,增强分类器对少数类的分类能力(1)错分代价很难准确估计;(2)易过拟合;(3)并不是所有的分类器都可以很好地和代价敏感方法结合代价矩阵较易估计
一类学习学习单一类别样本的边界在其使用范围内,基于单一少数类样本产生的分类器相比于二类学习产生的分器,具有更好的性能如果多数类样本和少数类样本较为相似,算法准确率会大打折扣(1)数据极度不平衡;(2)噪音样本较多

五.面临的问题与研究展望

目前,在不同领域中存在着大量数据不平衡的案例,这使得从不平衡数据中进行学习既是机遇又是挑战。现有的解决方法能够有效地缓解数据不平衡对分类器的不良影响,但是同时会有新的问题产生。比如:人们使用采样的方法来缓解数据的不平衡程度,但是到底缓解到什么程度最有利于分类器的学习不得而知,只能依靠经验或者直接进行判断。这说明在该领域中仍然缺乏一些理论性的基础研究。

(1)噪声问题

在数据不平衡的条件下,少数类样本数很少,因此很难分辨出噪声和少数类样本。如果噪声点和少数类样本同时被分类器学习,那么会严重影响分类器的性能。因此,如何处理噪声点来减少其对分类器性能的影响是目前有待解决的问题。

(2)评价指标问题

目前评价不平衡数据挖掘方法性能的指标主要是基于曲线的评估指标,比如P-R 曲线、ROC 曲线以及代价曲线。通过这些基于曲线的评估方法来度量两个分类器的表现时,缺少对曲线的分析。同时不同的基于曲线的评估方法所度量的侧重点有所不同。因此,如何分析曲线并且建立一套标准的能够综合度量分类器性能的评估方法,是未来需要解决的问题。同时,虽然以上提出的评估方法能够作为分类器性能比较的指标,但是对于不同的组织或者团体往往使用不同的评估方法,至今也没有达成统一的评价方法。因此需要一种标准化的评估指标,来评价不同数据分布下的分类器性能

六.参考文献

【1】Provost F,Fawcett T.Robust classification for imprecise environments[J].Machine Learning,2001,42(3):203-231.

【2】Blagus R,Lusa L.SMOTE for high-dimensional classimbalanced data[J].BMC Bioinformatics,2013,14(1):1-16.

【3】吴克寿,曾志强. 非平衡数据集分类研究[J]. 计算机技术与发展,2011,21(9):39-42.

【4】Chawla N V,Bowyer K W,Hall L O,et al.SMOTE:synthetic minority over- sampling technique[J].Journal of Artificial Intelligence Research,2002,16(1):321-357.

【5】Han H,Wang W Y,Mao B H.Borderline-SMOTE:a new over-sampling method in imbalanced data sets learning[C]// International Conference on Advances in Intelligent Computing. Berlin:Springer-Verlag,2005:878-887.

【6】He H,Bai Y,Garcia E A,et al.ADASYN:adaptive synthetic sampling approach for imbalanced learning[C]//IEEE International Joint Conference on Neural Networks,2008:1322-1328.

【7】Torres F R,Carrasco-Ochoa J A,Martínez-Trinidad J F.SMOTE-D a deterministic version of SMOTE[M]//Pattern recognition.[S.l.]:Springer International Publishing,2016:177-188.

【8】Hu S,Liang Y,Ma L,et al.MSMOTE:improving classi-fication performance when training data is imbalanced[C]//
IEEE International Workshop on Computer Science &Engineering,2010:13-17.

【9】Mathew J,Luo M,Pang C K,et al.Kernel-based SMOTE for SVM classification of imbalanced datasets[C]//Conference
of the IEEE Industrial Electronics Society, 2016.

【10】Kingma D P,Welling M.Auto-encoding variational Bayes[J].arXiv:1312.6114,2013.

【11】Goodfellow I J,Pougetabadie J,Mirza M,et al.Generative adversarial networks[C]//Advances in Neural Information
Processing Systems,2014,3:2672-2680.

【12】Chen X,Duan Y,Houthooft R,et al.InfoGAN:interpretable representation learning by information maximizing generative adversarial nets[J]. arXiv: 1606.03657,2016.

【13】Liu X Y,Wu J,Zhou Z H.Exploratory undersampling for class-imbalance learning[M]//6th International Conference on Data Mining,2006:965-969.

【14】Lin W C,Tsai C F,Hu Y H,et al.Clustering-based undersampling in class-imbalanced data[J].Information Sciences, 2017,409/410:17-26.

【15】Ofek N,Rokach L,Stern R,et al.Fast- CBUS:a fast clustering- based undersampling method for addressing the class imbalance problem[J].Neurocomputing,2017,243:88-102.

【16】Ha J,Lee J S.A new under-sampling method using genetic algorithm for imbalanced data classification[C]//International Conference on Ubiquitous Information Management & Communication,2016.

【17】朱明,陶新民. 基于随机下采样和SMOTE的不均衡SVM分类算法[J]. 信息技术,2012(1):39-43.

【18】Batista G E A P A,Prati R C,Monard M C.A study of the behavior of several methods for balancing machine learning training data[J].ACM SIGKDD Explorations Newsletter,2004,6(1):20-29.

【19】Guyon I.An introduction to variable and feature selection[J].Journal of Machine Learning Research,2003,3:1157-1182.

【20】Kira K,Rendell L A.The feature selection problem:traditional methods and a new algorithm[C]//10th National Conference on Artificial Intelligence,1992:129-134.

【21】Japkowicz N,Stephen S.The class imbalance problem:a systematic study[M].[S.l.]:IOS Press,2002.

【22】Kang P,Cho S.EUS SVMs:ensemble of under- sampled SVMs for data imbalance problems[C]//International Conference on Neural Information Processing.Berlin,Heidelberg:Springer,2006:837-846.

【23】Wang B X,Japkowicz N.Boosting support vector machines for imbalanced data sets[J].Knowledge & Information Systems,2010,25(1):1-20.

【24】Schölkopf B,Platt J C,Shawetaylor J,et al.Estimating the support of a high- dimensional distribution[J].Neural Computation,2014,13(7):1443-1471.

【25】Goh S T,Rudin C.Box drawings for learning with imbalanced data[C]//ACM SIGKDD International Conference on Knowledge Discovery and Data Mining,2014:333-342.

【26】Liu F T,Kai M T,Zhou Z H.Isolation forest[C]//8th IEEE International Conference on Data Mining,2009:413-422.

-20.

【24】Schölkopf B,Platt J C,Shawetaylor J,et al.Estimating the support of a high- dimensional distribution[J].Neural Computation,2014,13(7):1443-1471.

【25】Goh S T,Rudin C.Box drawings for learning with imbalanced data[C]//ACM SIGKDD International Conference on Knowledge Discovery and Data Mining,2014:333-342.

【26】Liu F T,Kai M T,Zhou Z H.Isolation forest[C]//8th IEEE International Conference on Data Mining,2009:413-422.

【27】刘树栋,张可.类别不均衡学习中的抽样策略研究[J].计算机工程与应用,2019,55(21): 1-17.

这篇关于不平衡数据挖掘综述的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!