
如上图所示为不平衡样本建模策略框架图,当建模样本存在不平衡问题时,首先需要做详细的样本和特征分析,描述样本和特征质量,然后尝试在模型学习前针对问题进行样本和特征调整优化,以避免不平衡样本的标签定义不合理、样本在过高的特征维度上分布稀疏等问题。对于无法从样本和特征上直接解决的不平衡问题则需要制定更加科学的建模方案、在建模过程中采用各种处理方法以保证模型学习的可行性和学得的模型效果。
在训练模型之前进行样本和特征分析是非常重要的一步,尤其在不平衡建模场景。
样本分析:通过评估样本规模、样本不平衡程度、样本标签和分类的合理性等,来分析模型学习的可行性、建模方案的合理性。
特征分析:通过分析样本在单个和多个特征空间上分布的有效覆盖程度、样本分布的集中和离散程度、特征之间的相关或独立性、不同类样本分布的差异程度等,来分析待入模特征的有效性和合理性,亦可据此进行特征选择。常做的分析包括各种描述性统计分析、相关和独立性检验、WOE变换-IV值计算、各种聚类算法和small disjuncts、overlapping、borderline examples等样本分类问题检验等。
根据上一步的样本和特征分析结论,若存在较大的样本或特征问题,最理想的解决办法是修正或重构样本和特征,在进行模型训练之前直接从根源上解决问题可谓明智之举。在不平衡样本建模场景常考虑的优化操作有:
若样本数量极少或样本极度不平衡且正例样本绝对数量过少,则最为有效的解决方法是增加数据采集量或增加样本标记以增加可用样本量。但在实际应用中往往因为各种问题无法实现,例如某种新型疾病筛查建模在疾病新出现时病例数据很少、金融风险预测建模中该种风险在历史上仅有少数几次记录。
样本过少或极度不平衡也可能是标签定义不合理导致,可通过调整标签使样本更加平衡。例如在金融机构客户价值分类建模场景中,若将高价值客户标记为正例其余为反例,而客户价值分布常常是大量中等客户、少数高价值和低价值客户,高价值客户/非高价值客户的标签标记就形成了不平衡的建模样本且正例数量较少,此场景下将标签调整为高和较高/低和较低价值客户,则样本平衡。
对于有效取值过少、取值过于集中、无分类能力的无效特征应该在建模前剔除以避免干扰模型学习、减弱模型稳健性。尤其在不平衡样本建模场景,少数类样本在高维特征空间上分布稀疏可能加剧建模困难。
为避免不平衡样本在高维特征空间上分布稀疏的问题,与已有变量高度相关的特征也需要考虑剔除,或者通过PCA之类的算法进行降维以减弱少数类样本在高维特征空间上分布的稀疏性、增强模型稳健性。
对于具有较差分类能力,或者让正负例样本分布表现出small disjuncts、overlapping、borderline examples等难分类问题的特征,尝试修改或替换使其更合理、更易于分类正负例样本。
若不能通过补充样本、调整标签、优化入模特征来直接改善模型训练数据以支撑有效的模型学习,则需要施展十八般武艺来对不平衡样本展开建模了。根据样本的不平衡特点,在实际应用中一般区分为绝对不平衡和相对不平衡两种情况。绝对不平衡指少数类样本绝对数量极少无法提供足够的学习让模型学习。相对不平衡指正负例样本数量不平衡但少数类有不少的样例可供模型学习。在相对不平衡情况下,可以采用各种样本再处理方法和改进算法来适应不平衡样本以成功建立有监督分类模型,方法包括选择更合适的分类算法、采用更加科学的的模型评价标准、对训练样本进行重采样、采用代价敏感学习、采用基于核函数的非均衡分类算法。而在少数类样本数量极少的绝对不平衡情况下,则需要改变建模思路,通常考虑采样异常检测和无监督方法。
常用的分类算法包括逻辑回归、核函数类SVM、树类如CART决策树、距离类如kNN,还有各种集成算法如近年比较流行的GBDT、XGBoost。不同的分类算法分类原理和适用数据不同,分类器的选择在不平衡样本场景下尤其重要,可根据具体数据情况尝试多种分类器择优选择,且需要针对不平衡情况调整模型,例如树模型常常在不平衡样本上表现更优,在正例样本很少、难以和噪音数据区分开时,应该注意分叉规则的选择或者适当避免剪枝。
模型性能评价标准通过度量模型的分类准确情况来评价模型分类效果、引导模型参数和分类阈值选择。很多的评价标准都是基于样本均衡的假设构建,在不平衡建模场景可能失效。

二分类模型的混淆矩阵如上表,行表示样本真实类,列表示模型对样本的预测类,每格内为对应样本数量。混淆矩阵反映模型分类结果的准确程度,很多评价指标也是通过混淆矩阵计算得到。
标准分类模型常用精确度(Accuracy)指标来评估。

如上篇文章所述,该指标等权计算正负类样本,在不平衡样本建模中因此忽略了少数类样本的分类准确性而失效。
在不平衡建模场景,基于重要类样本(正例)的度量指标能较好地评估模型对重要类的分类准确性。一般通过Precision和Recall两个指标就可以很好评估。
Precision(准确率)计算所有被模型判断为正类的样本中真正为正例的比率。
Recall(召回率)计算所有正例中被模型判断为正例的比率。
需要注意的是,Recall仅基于正例样本计算且与样本绝对数量无关,不受样本不平衡影响。而Precision值则会随测试样本中负样本的比例变化而变化,如上一篇介绍不平衡样本分类问题时所述。
Precision- Recall trade-off
Precision和Recall之间存在一种trade-off的关系,一起使用为佳。当模型对于将样本判断为正例非常严格时,模型只在非常有把握的情况下将样本判为正例,这时模型Precision会很高,但Recall较低;反之,当模型倾向于不漏查正例时,模型会把更多可能为正例的样本判为正例,这时模型的Recall更高但Precision往往降低。因此在实际使用时应该根据建模需要(尽可能避免错判但可以容忍漏判or尽可能查全但可以容忍查错)结合两个指标来评估或选择模型的分类效果,让一个指标尽可能高同时另一个指标达到可容忍的条件。
根据模型在不同阈值下的Precision和Recall取值可以绘制PR曲线来评估模型整体的Precision- Recall trade-off水平。如下图所示,随着模型划分阈值从高到低变化,Recall逐渐升高,Precision整体呈现下降趋势。曲线越向右上方弯曲说明模型整体分类能力越强。但由于Precision会受负例样本数量和样本不平衡程度影响,PR曲线也会随负例样本数量和样本不平衡程度变化而变化,不平衡程度越严重PR曲线越往左下角弯曲。

基于Precision- Recall trade-off的模型评价思路还可构造新的评价指标。其中最常使用的是:
Fβ是对Precision和Recall的一个加权评价指标,通过β调整二者相对权重。通常取β=1,此时Precision和Recall具有相同的权重。
a.Benefits (TPR)-Costs(FPR) trade-off
TPR(True Positive Rate)= Recall = TP/(TP+FN),表示正例中被模型正确判为正例的比率,相当于模型分类的benefits。FPR(False Positive Rate)= FP/(FP+TN),表示负例中被模型错判为正例的比率,相当于模型分类的costs。容易知道,和Precision-Recall trade-off同理,TPR和FPR之间也存在一种trade-off关系,我们希望TPR尽可能高同时FPR尽可能低,但实际情况则是随着TPR升高FPR往往也升高,模型想要更高的benefits就必须面对更大的costs。基于TPR-FPR trade-off能很好地判断模型最本质的与划分阈值选择无关的分类能力,基于此有一些很好的评价方法:

ROC(Receiver Operating Characteristic)曲线横轴是FPR,纵轴是TPR,如上图所示黄色曲线,随着模型划分的分类阈值从大到小变化,模型的FPR和TPR均从0逐渐变化到1。图形原点表示模型将所有样本都判为负例,此时FPR=TPR=0;与原点对角的顶点表示模型将所有样本都判为正例,此时FPR=TPR=1。图中的蓝色虚线对角线为随机分类情况下的ROC曲线,随机模型将同等比例的正样本和负样本划分为正例。曲线越往左上方弯曲、与随机模型的ROC曲线相隔越远,则模型的分类能力越强。
ROC曲线下方围成的面积即模型的AUC(Area Under Curve),表示模型对正负样本的平均区分能力。AUC取值范围在[0.5,1],当AUC>0.5,说明模型的分类能力优于随机模型,AUC越接近1越好。
(该图来源于网络)
KS曲线横轴表示模型划分阈值,从左到右由大至小变化,纵轴表示TPR和FPR。如上图所示,图中蓝线根据每个分类阈值下的TPR绘制得到,红线由FPR得到,随着阈值从大至小变化TPR和FPR均逐渐从0上升至1。蓝线和红线间隔越远说明模型分类能力越强,蓝线和红线的差值即TPR-FPR由绿线表示,常呈现出先上升后下降的趋势,可用于参考模型阈值划分。
蓝线和红线的最大垂直距离(绿线的最大取值)即模型的KS值,表示模型对正负样本的最大区分能力。
TNR = TN/(TN+FP),表示负例样本被正确分类为负例的比率。TPR-TNR trade-off在评价模型性能时兼顾对正例和负例的准确分类能力,希望模型对正例和负例的分类效果较为均衡、有较好的本质分类能力。在此思路下有一些常用的评价指标,例如TPR和TNR的几何平均值:
AUC、KS、G-mean的取值均与样本数量无关,且不受样本不平衡影响,是不平衡建模场景下很好的模型效果评价指标。
如前所述,基于全部样本、等权计算正负类样本分类准确度的指标,如Accuracy,在不平衡建模场景下不能用于评价模型效果。基于正例样本分类结果计算的性能评价方法,如Precision、PR曲线、Fβ,会受到样本不平衡影响,使用需注意。而仅基于重要类样本计算的指标,如Recall,和考量正负例分类trade-off关系的评估方法ROC-AUC、KS和G-mean则基本不受样本规模和不平衡影响。评价指标中,PR曲线、ROC-AUC和KS是对原始模型分类能力的评价,与模型采用的分类阈值无关,且可以根据KS曲线和PR曲线寻找模型的最佳分类阈值。而Accuracy、Precision、Recall、Fβ、G-mean则根据特定阈值计算得到。
综上分析,在不平衡样本分类建模场景,建议考虑如下模型性能评价思路:主要采用根据模型分类trade-off水平度量原始模型分类能力的ROC-AUC、KS、PR曲线这一类指标来评价模型的本质分类能力、选择最优的模型和模型参数;主要根据KS曲线、PR曲线、Recall、Precision、以及G-mean这类度量重要类样本分类的Precision和Recall及其trade-off水平的指标来评价模型对重要类样本的判别能力、选择最佳分类阈值。
一种针对非均衡问题的调节思路是通过重采样改造训练数据。
最简单的方法是随机采样,通过随机上采样增加少数类样本数量,或者通过随机下采样减少多数类样本数量。但随机上采样对少数类样本进行复制,样本重复容易造成过拟合。随机下采样随机抽取多数类样本的子集来训练模型,很可能丢失了有用的数据信息。因此很多更为复杂的重采样算法被提出。
3.3.2 基于邻近样本(neighborhood)的重采样算法
该类方法基于样本间距离计算、根据邻近样本的标签类别,合成新样本或者有选择地删除多数类样本,此领域已经提出过很多方法,如下列举一些较多被使用和讨论的。
a.SMOTE(Synthetic Minority Oversampling Technique)
SMOTE对每一个少数类样本合成相同数量的新样本,没有区分考虑每个被插值样本的邻近样本情况,这可能导致不同类样本在特征空间分布上产生重叠(overlapping)等问题,因此一些adaptive的改进抽样方法相继提出。
与SMOTE对每一个少数类样本合成新样本不同,Borderline-SMOTE首先区分出位于边界但非噪声点的少数类样本,针对这些样本进行KNN采样。确定边界的方式是,计算少数类样本xi的K个近邻中,多数类的占比r,0.5<r<1则认为处于边界,r=1认为是噪声点,0<r<0.5是非边界点。
Boderline-SMOTE2对于用来生成新样本的少数类样本,不仅与它邻近的少数类样本进行线性插值合成新样本,还考虑到与它邻近的多数类样本,这可能会让生成的少数类新样本更加真实。
d. ADASYN(Adaptive Synthetic Sampling)
与Borderline-SMOTE类似,只是没有直接区分是否为边界样本。首先计算少数类样本的k个近邻样本中多数类样本占比,占比越大则对该少数类样本采样个数越多。
通过分别计算少数类样本点和其neighborhoods周围的少数类样本数量,并计算二者比值,将该少数类样本点和其neighborhoods判断为不同的安全等级,并据此决定是否对该少数类样本点和该邻近样本点合成新样本以及合成样本的插值权重。
对少数类样本过采样的同时针对多数类样本的边界点和噪音点进行数据清洗。

对于样本对(xi,xj),其中xi∈Smax,xj∈Smin,d(xi,xj)为两样本距离,如果不存在任何样本xk使得d(xi,xk)<d(xi,xj),则定义样本对(xi,xj)为Tomek Links。两个样本若来自Tomek Links,则要么其中一个为噪声样本,要么两个样本在分类边界上。该方法通过剔除Tomek Links中的多数类样本来减少影响少数类样本被准确分类的多数类样本。在数据清洗中则往往选择剔除Tomek Links中的两个样本。Tomek Links Removal过程如上图示例,左图寻找到Tomek Links剔除对应样本后得到样本分类边界更为清晰的右图。
b.ENN(Edited Nearest Neighbor)
遍历多数类的样本,如果他的大部分k近邻样本都跟他自己本身的类别不一样,我们就将它删除。然而大多数多数类样本附近的样本都为多数类,所以该方法能删除的多数类样本十分有限。基于此提出来一系列ENN改进算法,如Repeated Edited Nearest Neighbor,重复ENN过程直到没有样本可以被删除为止;CNN( Condensed Nearest Neighbor)选择一个多数类的子集,满足多数类任意一点在子集中的最近邻也是多数类;
c.NCL(Neighborhood Cleaning Rule)
在ENN的基础上提出。针对训练样本集中的每个样本找出其3个最近邻样本,若该样本是多数类样本且其3个最近邻中有2个以上是少数类样本,则删除它;反之,当该样本是少数类,并且其3个最近邻中有2个以上是多数类样本,则去除近邻中的多数类样本。但是该方法中未能考虑到在少数类的噪声样本,并且第二条删除规则在很多时候会删除到多数类的边界样本从而影响模型训练。
基于样本距离测算,选出有利于分类的多数类样本子集。其中,NearMiss-1选择到最近的几个少数类样本平均距离小的那些多数类样本;NearMiss-2选择到最远的几个少数类样本平均距离小的多数类样本;NearMiss-3选择距离每个少数类样本最近的若干个多数类样本;最远距离规则则是选择到最近的几个少数类样本平均距离最大的那些多数类样本。多数情况下基于NearMiss-2达到的分类性能最好。
e.OSS(One-Side Selection)
根据正负类样本在特征空间上的分布情况,基于Tomek links和KNN(k取1)算法,将多数类样本区分为紧邻少数类样本的噪音点、位于分类边界的边界点、对分类模型有重要作用的安全点、缺乏有效信息的冗余点,剔除其中的噪音点、边界点、冗余点。
3.3.3 基于聚类(Cluster-Based)的重采样算法
该方法在进行重采样时不仅考虑正负类间的不平衡,还考虑到类内样本的分组和聚类情况。先对样本进行聚类,然后基于聚成的类进行重采样。不仅解决了正负类的不平衡,还解决类内子类间的不平衡。
该领域较多被使用和讨论的有CBO(Cluster-Based Oversampling)算法。先利用K-means算法对同类样本聚类,然后根据包括类内和类间的不平衡比例计算每一类需要过采样的样本数量。如上图所示,原始样本如图(a),经过如图(b)和(c)所示的K-means动态聚类过程,最终对样本量相对较少的所有类进行过采样,最终实现如图(d)所示的样本,类间和类内样本数量均平衡。此外,还有DBSMOTE、Class Purity Maximizatio、Sampling-Based Clustering、the agglomerative Hierarchical Clustering等算法被提出和使用。
3.3.4 启发式算法应用
在不平衡建模领域,在一些场景下利用遗传算法、粒子群优化算法等启发式算法来优化训练样本的构造和选择也得到了不错的效果。例如融合遗传算法(Genetic Algorithm)与SMOTE方法的GASMOTE算法,首先为少数类的不同样本设置不同的采样倍率,并将这些采样倍率取值的组合编码为种群中的个体,然后循环使用GA的选择、交叉、变异等算子对种群进行优化,在达到停机条件时获得采样倍率取值的最优组合,最后根据找到的最优组合对非平衡数据集进行SMOTE采样,弥补了SMOTE对所有少数类样本合成相同数量新样本的缺陷。除了优化样本生成外,启发式算法也可同时优化特征选择,如PSO-RSFS(PSO-based Random Sampling&SMOTE and Feature Selection algorithm)算法利用粒子群优化算法来确定样本采样率和选择具有更好区分能力的建模特征。
3.3.5 Hybrid Sampling
在实际应用中,经常结合多种方法使用,例如SMOTE+ENN,SMOTE+Tomek Links,以减少单种重采样方法可能造成的分布重叠等问题。
3.4 代价敏感学习(Cost-Sensitive Learning)
代价敏感学习在模型训练过程中考虑到不同类样本具有不同的错分代价,不同的错分代价通过代价矩阵确定。通常基于专业领域经验得到。用C(i,j)表示将i类样本错分到j类的cost,在非均衡建模场景,少数类的正例数据是模型学习最为关注的,通常将正例错分为负例的cost大于将负例错分为正例的cost,则有C(+,-)>C(-,+)。

1代表正例,0代表负例,C(0,1)和C(1,0)分别为负例和正例的错分成本。
基于最小期望损失原则,模型训练过程即求解让总分类损失最小化的模型。代价敏感学习通过调整损失矩阵来影响模型训练,赋予重要类样本更大的错分损失从而引导模型降低错分重要类样本的概率。具体有如下两类三种实现方法:
Meta-learning方法不改变原本的学习算法,通过preprocessing训练数据(Sampling)或者postprocessing模型输出(Thresholding)实现。
基于最小期望损失原则,根据模型输出选择使得样本分类总损失最小的划分阈值。
根据cost matrix,将样本x分到i类的期望cost记为R(i|x),
其中,P(j|x)是x为j类的概率估计,C(j,i)是将j类样本错分到i类的cost。
在二分类模型中,当且仅当:
即, P(0|x)*C(0,1) + P(1|x)*C(1,1) <= P(0|x)*C(0,0) + P(1|x)*C(1,0),
p(0|x)*(C(0,1) – C(0,0)) <= P(1|x)*(C(1,0)-C(1,1)),
此时模型将x判为1类的Cost小于模型将x判为0类的Cost,x被分到1类。
容易知道,二分类模型的cost-matrix均可以通过数学转换使C(0,0)=C(1,1)=0,在此条件下,分类器将样本x分到正例的充分必要条件可以表示为:
P(0|x)*C(0,1) <= P(1|x)*C(1,0)
当且仅当P(1|x)/ P(0|x) >= C(0,1)/ C(1,0)时,将x分到1类。
对于二分类模型输出的分类概率,有P(0|x) = 1 - P(1|x),可以推导出分类阈值:
在平衡样本二分类建模场景中,默认C(0,1) = C(1,0),所以当且仅当P(1|x)/ P(0|x) >=1,即P(1|x)>= P(0|x),即P(1|x)>= P* = 0.5时,样本x被分到1类;
在非均衡建模场景,P(1|x)>= P*=C(0,1)/(C(0,1)+C(1,0))时将样本x分到1类。在非均衡分类场景中,样本量少的正例被错分往往造成更大Cost,通过让C(1,0) > C(0,1),使得P*<0.5,模型更倾向于将样本划分到positive类,修正正例样本分类准确性容易被忽略的问题。
根据代价矩阵中不同类错分代价比值对原始样本做重抽样或给样本赋予不同的权重。
记原始训练集中正例和负例样本的比重分别为P(1)和P(0),通过重抽样或调整样本权重,使训练样本比重变为:P(1)*C(1,0) : P(0)*C(0,1)。在C(1,0)> C(0,1)的非均衡建模场景增大了原始样本数量少的正例样本权重。
把代价敏感函数或者特征直接融入分类器,构建cost-sensitive的学习算法,直接引导模型学习。Direct methods在不同模型中具有特定的参数设置,例如在决策树模型中,基于最小化错分损失的目标训练最优分类决策树,根据不同类样本的错分cost,可以cost-sensitive地选择最优节点属性和分割点,以及cost-sensitive地进行剪枝处理以避免减去少数类样本分类信息;在遗传算法、神经网络等一些算法中则可以通过在拟合函数中加入不同类的错分代价来实现。
3.5 集成方法(Ensemble-based classifiers)
集成算法通过集成多个分类器得到性能优于任一单个分类器的分类模型。在不平衡分类领域,将非均衡建模技术结合到集成学习算法中是一种有效手段,可以分为结合数据预处理技术的集成算法(Data Preprocessing + Ensemble Learning)和代价敏感集成(Cost-Sensitive Ensembles)两类。
3.5.1 Data Preprocessing + Ensemble Learning
将数据预处理技术嵌套到集成学习算法中,在训练每个弱分类器之前对训练样本做处理。根据集成算法的集成方式不同可以分为Boosting-based、Bagging-based、Hybrid三类,分别基于串行式集成学习算法框架、并行式集成学习算法框架、或适用前两类集成算法框架来完成。
Boosting-based集成方法基于Boosting族集成算法框架实现,Boosting族算法最著名的代表为AdaBoost,在训练过程中的每一轮为训练样本重新赋权或重采样以增大被错误分类的样本权重来修正模型,在新样本上训练下一轮弱学习器。结合过采样技术的代表算法SMOTEBoost在Adaboost.M2集成算法的每次迭代都引入SMOTE方法对少数类样本做过采样,将获得的更为平衡的样本用于训练下一个弱分类器;结合欠采样技术的代表算法RUSBoost在Adaboost.M2集成算法的每次迭代中引入RUS(Random Undersampling)方法对多数类样本做随机欠采样,将获得的更为平衡的样本用于训练下一个弱分类器。此外,还有根据类间difficult-to-learn比率来合成新样本的DataBoost-IM、在做SMOTE过采样的过程中考虑边界和噪声样本的MSMOTEBoost等改进算法。
Bagging-based集成方法与Boosting-based集成方法类似,只不过采用Bagging的集成模式,并行多组随机采样和弱学习器训练后集成结果,将各种重采样手段法应用到Bagging算法的抽样过程中。该类下较常讨论和使用的算法包括SMOTEBagging、QuasiBagging、Asymetric Bagging、Roughly Balanced Bagging、Partitioning、Bagging Ensemble Variation、 UnderOverBagging和IIVotes等。
Hybrid集成方法结合使用基于Boosting和Bagging的集成框架。主要算法有EasyEnsemble和BalanceCascade等。EasyEnsemble并行多轮AdaBoost,每一轮从多数类样本中随机欠采样得到与少数类样本数目相当的子集用于训练一个AdaBoost模型,最终综合所有轮AdaBoost中的所有弱分类器的预测结果得出模型结果。BalanceCascade与EasyEnsemble实现过程相似,但采用级联的形式,每轮训练完一个Adaboost模型,就将多数类中分类正确的样本剔除,并通过控制每一轮Adaboost的分类阈值使得训练最后一轮Adaboost时少数类样本数量开始大于多数类。
3.5.2 Cost-Sensitive Ensembles
与直接修改分类器来在模型学习过程中引入分类Cost不同,Cost-Sensitive Ensembles方法在Boosting集成过程中最小化分类成本来引导模型训练。例如AdaCost算法,在AdaBoost算法上增加代价函数、修改样本权重更新方法来实现算法的cost-sensitive。该领域下还有CSB1、CSB2、RareBoost、AdaC1、AdaC2、AdaC3等算法。
3.6 基于核函数的方法(Kernel-Based Methods)
基于核函数的标准学习算法一般指支持向量机(SVM)。SVM通过核函数将训练样本映射到高维特征空间,然后在特征空间中寻找具有最大间隔的划分超平面来将不同类别的样本分开,距离超平面最近的类样本点形成支持向量,通过最大化支持向量的间距、最小化分类误差求解最优划分超平面。当样本不平衡时,超平面会靠近少数类样本从而容易错分少数类。在SVM中影响划分超平面的主要是支持向量上的样本,由于少数类样本偏少可能导致支持向量中的数据不平衡从而降低模型效果。在此框架下提出了很多基于核函数的不平衡样本建模方法,主要通过在SVM算法框架下集成重抽样或代价敏感方法来实现。例如颗粒SVM-重复下采样(GSVM-RU)算法,通过不断训练SVM获取多数类样本的支持向量,然后从中抽取部分样本与少数类样本一起训练最终的SVM;biased-SVM通过采用cost-sensitive的目标函数来学习分类器以解决样本不平衡问题,还有算法在此基础上针对支持向量上少数类样本不足的情况对少数类样本的支持向量做SMOTE采样后再基于支持向量重新训练SVM分类器。
当样本绝对不平衡,即少数类样本数量极少不能支撑有效的分类模型训练时,以上(1)-(6)处理方法都没有了用武之地。此时需要改变建模思路,避免使用有监督分类算法建模。针对绝对不平衡的样本特点,可以考虑异常检测模型和一些无监督方法。
3.7.1 异常检测(anomaly detection)
异常检测分为奇异点检测(novelty detection)和离群点检测(outlier detection)。
(1)奇异点检测(novelty detection)
奇异点检测方法在训练模型时训练样本中无离群点,训练目标为检测新样本。对于绝对不平衡样本,可以用多数类样本训练模型来获取包围多数类样本的分类边界。该类方法中一个具有代表性的机器学期算法是One-Class SVM,不需要有先验的数据分布假设,通过寻找特征空间中最紧密包裹单类样本的支持向量来得到分类边界。
(2)离群点检测(outlier detection)
离群点检测算法在训练模型时将少数类样本看作离群点来训练离群点识别模型。常用的算法有Robust Covariance、Isolation Forest、Local Outlier Factor。
基于协方差的稳健估计,假设数据服从正态分布,通过模型估计得到一组包围中心样本点且忽视离群点的分布参数,在样本比较满足正态分布时效果较好。
孤立森林,算法思路同源于随机森林,寻找在分类树中容易被划分到距离根节点较近的叶子节点上的样本,这些样本点容易被孤立、分布稀疏且离高密度样本群体较远,因此被定义为异常点。
LOF算法通过观察数据分布的密度来检测异常,若目标样本点所处位置的样本密度较小且小于其k近邻所处位置的样本密度,则认为目标样本为异常点。适用于训练集能基本覆盖正常样本的情况。
当样本极度不平衡或少数类样本绝对数量过少时,无监督方法是一种有效思路。例如采用各种聚类算法或者建立专家经验模型。
[1] López V, Fernández A, García S, PaladeV, Herrera F (2013) An insight into classification with imbalanced data:empirical results and current trends on using data intrinsic characteristics.Inf Sci 250(20):113–141. Article;
[2] H. He, E.A. Garcia, Learning fromimbalanced data, IEEE Transactions on Knowledge and Data Engineering 21 (9)(2009) 1263–1284.
[3] M. Galar, A. Fernández, E. Barrenechea,H. Bustince, F. Herrera, A review on ensembles for class imbalance problem:bagging, boosting and hybrid based approaches, IEEE Transactions on Systems,Man, and Cybernetics – part C: Applications and Reviews 42 (4) (2012) 463–484;
[4] C. Seiffert, T.M. Khoshgoftaar, J. VanHulse, A. Napolitano, RUSBoost: a hybrid approach to alleviating classimbalance, IEEE Transactions on System, Man and Cybernetics A 40 (1) (2010)185–197;
[5] T. Raeder, G. Forman, N.V. Chawla,Learning from imbalanced data: evaluation matters, in: D.E. Holmes, L.C. Jain(Eds.), Data Mining: Found. And Intell. Paradigms, vol. ISRL 23,Springer-Verlag, 2012, pp. 315–331.
[6] H. Guo, H.L. Viktor, Learning fromimbalanced data sets with boosting and data generation: the DataBoost-IMapproach, SIGKDD Explorations Newsletter 6 (2004) 30–39.