李科心,李 静,邵佳炜,肖 屹
(1.南京航空航天大学计算机科学与技术学院,江苏 南京 210016; 2.国网上海市电力公司信息通信公司,上海 200000)
异常数据检测通常是识别出不满足一般数据分布的数据对象。异常数据检测为医疗诊断、欺诈检测、信息安全等一系列领域中的广泛应用提供重要的参考依据。通常这些应用领域中产生的数据都是高维数值型数据,例如生物信息学中数以千计的分子或基因表达特征[1]、交易欺诈中成千上万的数据特征[2]、网络攻击中各种复杂的信息特征[3]等。所谓的高维数据,是指维数较高的数据,它们的维度通常可达到成百上千,甚至更高。对于高维数值型数据进行分析和处理主要有2个困难:
1)欧氏距离无法使用的问题。在低维空间中,欧氏距离是有意义的,可以用来衡量数据之间的相似性,但是在高维空间中的距离就没有太大的意义。
2)维数灾难问题。当维数越来越多的时候,计算量会迅速上升,分析和处理高维数据的复杂度和成本会是指数增长的。
因此,在对高维数值型数据进行异常数据检测的过程中会面临以下挑战:
1)高维数值型数据中通常包含与异常数据无关的特征和噪声数据。这些无关的特征和噪声数据会对高维数值型数据的异常检测带来影响。
2)随着数据维数的增加,邻居、距离以及最近邻等低维空间中的相关概念会无法使用,导致无法使用基于距离、密度等常规的异常数据检测方法。
3)利用特征提取的方法对高维数据进行降维,如何衡量所提取特征的准确性是一个问题。
目前也存在较多关于异常数据检测的方法,如基于距离的方法[4-5]、基于密度的方法[6-7]、基于树[8-9]的方法等。但是由于这些方法的计算复杂性和效率问题,在对高维数据进行异常数据检测的时候需要花费较大的代价,并且在高维数据的异常检测效果方面表现得不是特别好,因此并不能够把这些方法简单地应用在高维数据的异常检测方面,需要对高维数据进行处理之后再利用这些方法进行检测。
为了对高维数值型数据进行异常数据检测,通常是将高维数据映射到低维空间中,从而保留与异常数据相关的信息,以便在低维空间中对异常数据进行检测。后来,基于无监督表示学习的技术开始出现,如子空间特征选择方法[10]、神经网络[11]和流学习方法[12]等。基于子空间的特征选择方法是通过寻找与异常数据相关的特征子集来减弱无关特征带来的影响,然后再对这些特征子集进行常规的异常数据检测。这种方法通常将子集选择和异常数据检测分开,这样会导致一些与异常数据无关的特征被用来进行异常数据的检测,因此这种方法会导致异常数据检测的精度降低并且有较大的偏差。基于神经网络和流学习的方法侧重于保留数据的规律性信息(如数据结构、邻近信息),然后用于聚类和数据压缩等学习任务。因此,它们保留的信息往往包含了冗余数据。针对以上各种方法的局限性以及高维数值型数据异常检测面临的挑战,后来出现了基于集成学习的异常数据检测方法[13-14]。这些方法旨在将多个预测模型组合在一起,利用“众多力量”实现对异常数据的检测。基于集成学习的方法虽然能够在一定程度上减少整体预测模型的检测误差,但是不能对每一个预测模型的误差进行改进。基于减少个体预测模型误差的CARE方法[15]虽然解决了个体预测模型存在误差的问题,但是该方法在处理高维数据的异常检测问题时表现不理想。基于序列集成的CINFO方法[16]通过构建序列的异常数据检测模型实现对高维数据的特征提取和异常数据检测。但是,该方法在利用序列集成学习的方法进行异常数据选择的时候使用固定的阈值,这样的方法适用于异常数据占比与该阈值对应的数据集,一旦异常数据占比改变的时候,该方法中的固定阈值就不能很好地实现对异常数据的检测。另外,该方法利用套索回归(Lasso)对变量或者特征进行特征提取时,在面对具有多重共线性的变量或者特征的时候只是从其中任意地选择一个,这样会导致对变量或者特征的选择过于随意并且稳定性不能得到保障。
针对以上问题,本文设计一种多层次基于弹性网络的序列集成学习模型(MRENSE)以实现对高维数值型数据的异常检测。在每层中设置不同的异常数据选择阈值,然后结合弹性网络对高维数据进行特征提取,进而利用提取的特征实现异常检测。其中,每层都包含3个循环执行的部分:异常数据选择模块、弹性网络特征提取模块和异常打分模块。首先,对原始数据进行异常打分;然后,利用异常数据选择模块选择出可能的异常数据;接下来,经过弹性网络模块实现特征提取;最后,利用提取的特征再次进行异常打分。每层执行结束的时候,对该层的异常分数序列进行集成进而得到该层最终的异常分数,然后对每层的异常分数进行再次集成,得到最终的异常分数。最后根据异常分数进行异常数据的判断。本文工作主要包括:
1)面向高维异常数据检测提出一种基于弹性网络的高维数据特征提取方法。首先利用一种异常打分方式对原始数据进行异常打分,然后通过异常数据选择模块选择出可能的异常数据并加入到异常数据候选集。在异常数据候选集上利用弹性网络将异常分数作为目标特征,将原始特征作为预测因子实现对高维数据的特征提取。
2)构建一种基于弹性网络的序列集成学习的高维数值型异常数据检测模型。通过构建异常数据选择模块、弹性网络特征提取模块和异常打分模块这3个部分功能模块实现不断的特征提取和异常数据检测。
3)提出一种多层次基于弹性网络的序列集成学习的高维数值型数据异常检测模型。在基于弹性网络的序列集成学习的高维数值型异常数据检测模型的基础上,构建一种多层次基于弹性网络的序列集成学习模型。在每层中异常数据选择模块的阈值设置为不同的值,然后对每层的异常分数进行集成。
基于距离的异常数据检测方法是异常数据检测领域最常用也是最基本的方法之一。这种方法使用距离的概念来识别和检测异常数据。较为常用的基于距离的异常数据检测方法有KNN[17]算法,这种方法通过计算每个数据与周围的K个邻居的距离作为异常值评价指标,距离较大的数据被认为是异常数据。该方法虽然在一定程度上能够很好地检测异常数据,但是所需要的时间和计算开销较大。基于密度的异常数据检测方法也是一种较为高效的异常数据检测方法,代表方法有LOF算法[18-19],该方法的思想是计算每个数据周围指定范围内可达数据的个数,然后计算离群因子,最后根据离群因子的大小决定数据是否异常。基于树的异常数据检测方法[9]通过对原始数据进行随机采样来构建隔离树,然后根据数据记录在隔离树中的路径长短判断其是否为异常数据。该方法认为离根节点较近的数据是异常数据的可能性较大,远离根节点的那些数据是异常数据的可能性较小。虽然基于树的异常数据检测方法在检测效率方面有了较大的提升,但是对于高维数据而言,需要大量的训练时间。
高维数据异常检测最早出现在统计学领域,后来Knorr等人[20]把它引入到数据挖掘领域。常用的高维数据异常检测方法主要有:基于子空间的方法、随机子样本生成的方法、基于特征选择的方法和基于序列回归的方法。基于子空间的方法[10]是高维异常数据检测领域常用的方法之一,该方法通过在高维空间中寻找一部分特征子空间从而避免维数灾难,但是在高维数据空间中寻找特征子空间需要花费较大的代价。随机子空间生成的方法[21]也是一种处理高维异常数据的方法,但是当高维数据空间中包含较多噪声的情况下,该方法不但会将噪声数据包含进子空间中,而且会忽略和异常数据有关的特征。基于特征选择的方法[22]旨在寻找单一的特征集合来检测异常数据。但是这种方法需要在无监督的情况下定义和异常数据有关的特征,然后寻找单一的特征集合来检测所有的异常数据。基于序列回归的方法[23]将Knorr等人提出的粗糙集边界概念和基于回归距离的高维空间异常数据检测方法结合起来,实现对高维空间中不确定和不完整数据的异常检测。
集成学习最早被应用在分类任务中,并且在分类任务领域得到了不断的完善和发展。对集成学习最简单的理解是通过将多个分类器的结果进行汇总从而得到更加可靠的分类结果。Breiman[24]在1996年提出了一种并行的集成学习方法bagging。该方法通过在原始数据集上进行随机采样得到不同的数据集,然后在每个子数据集上训练一个分类器,最后对每个分类器的分类结果进行简单的投票得到最终的分类结果。这样做的好处是通过减少整体方差来提高模型预测的精度,然而这种方法忽略了个体分类器之间的偏差。为了改善这种由于个体分类器带来的偏差,一种新的集成学习模型boosting被Freund等人[25]提出。这种方法从根本上减小了个体分类器的偏差,它通过调整在那些误分类样本上的权值,让分类器重新训练。该方法中这些分类器不再是并行的,而是分层的。该模型通过不断调整上层分类器误分类样本的权重,然后不断地进行训练,从而得到表现更好的分类器。在这2项开创性的工作之后,基于集成学习的异常数据检测方法也逐渐出现,例如Rayana等人[15]提出的CARE方法和Pang等人[16]提出的CINFO方法。前者通过对并行和顺序模块进行集成从而减少个体分类器的偏差与总体的方差,而后者则是通过对高维数据进行多阶段的稀疏回归,然后找到与异常数据最相关的特征,从而进行异常数据的检测。Aggarwal等人[26]分别从模型多样性以及模型组合等方面对集成学习在异常数据检测方面的应用进行了算法模式、分类等的讨论。Zimek等人[14]将子采样方法利用集成学习的思想来提高异常数据检测的精度。Rayana和Akoglu[27]提出了利用无监督策略来选择可信的分类器的同时,忽略不精确的分类器的集成学习方法。
不同于上述基于序列集成学习进行异常数据检测的方式,本文构建一种多层次基于弹性网络的序列集成学习的高维数值型异常数据检测模型实现对高维数据的特征选择和异常数据检测。一方面,该方法利用弹性网络实现对高维数据的特征提取,并且提取的过程比CINFO方法更加稳定、收敛速度更快;另一方面,该方法在每层中的异常数据选择模块设置的阈值不同,从而能够适应不同的数据集,在异常数据占比不同的数据集上都可以适用。本文不仅对每层中的异常分数序列进行了集成,而且对每层的结果也进行了集成。所以,本文方法通过调整每层异常数据候选集模块中的阈值,应用于各种数值型数据集的异常数据检测,可以保障异常数据的检测效果、收敛速度以及稳定性。
设X是任意一个分布未知的随机变量,在X的期望E(X)=μ和方差D(X)=σ2都存在的情况下,对事件|X-μ|<ε的概率做出估计,其中ε为任意的正数,即:
P{|X-μ|≥ε}
(1)
作为一种预测性建模技术,回归分析主要用来研究因变量Y(又称为目标)和自变量X(又称为预测器)之间的关系。
1)线性回归。
线性回归是回归分析中最基本的分析方法之一。在这种回归分析中因变量是连续的,自变量可以是连续的也可以是离散的。其中,最有代表性的是最小二乘法,它通过最小化每个数据点到回归线垂直偏差的平方和来计算最佳的拟合线,其用到的原理可表示为:
(2)
2)岭回归。
岭回归分析是一种用于自变量存在高度相关关系的有偏估计的回归方法。在多重共线性的情况下,最小二乘法对每个变量虽然很公平,但是它们的差异很大,使得观测值偏移并远离真实值。在岭回归中,通过放弃最小二乘法的无偏性,以损失部分信息、降低精度为代价,获得的回归系数更加符合实际、更可靠,其对病态数据的耐受性远远强于最小二乘法。岭回归的原理可以表示为:
(3)
其中,第1项是最小二乘项,第2项是偏度差,主要是为了在收缩参数增加偏差的同时得到一个非常低的方差。
3)套索回归(Lasso)。
类似于岭回归,Lasso也会对回归的系数进行惩罚,它的主要思想是在回归系数的绝对值之和小于一个常数的约束条件下,使残差平方和最小化,从而产生某些严格等于0的回归系数,得到可解释的模型。其实现原理可以表示为:
(4)
和岭回归不同的是,Lasso使用的惩罚函数是绝对值而不是平方。由于Lasso能够产生一些等于0的回归系数,因此可以用来实现对变量的选择或者特征提取。
Liu等人[9]提出的隔离森林(iForest)是异常数据检测领域比较常用且效果较好的一种方法。该方法检测异常数据的思想来源于:1)异常数据占整个数据集的很小一部分;2)异常数据的属性与正常数据的属性值差别很大。因此,这2点使得异常数据很容易被“隔离”。下面通过相关定义介绍该方法的具体流程。
隔离树。隔离树的构建方法和二叉树的构建过程相似。假设A是隔离树的一个节点,则A要么是没有孩子节点的外部节点,要么是拥有2个孩子节点的内部节点。首先对数据集进行随机采样得到若干个子样本,然后在每个子样本上建立隔离树。隔离树的建立过程为:在每个子样本上随机选择一个数据属性作为分割属性,并把所有数据放在根节点,然后在所选的属性中随机选择一个数据作为分割值(该数据介于所选属性的最大值和最小值之间),对该属性中的数据和分割值进行比较,小于分割值的放入左孩子节点,大于分割值的放入右孩子节点。再对左孩子节点和右孩子节点进行同样的操作,直到所有数据都处于外部节点上或者达到了隔离树指定的高度。
路径长度。数据x的路径长度定义为从隔离树的根节点开始对隔离树进行遍历直到在外部节点中找到数据x,在此过程中遇到的边数。
异常分数。构建好隔离树之后,该方法通过在不同的隔离树中计算数据x的路径长度,然后求平均值并通过归一化因子对异常分数进行归一化操作,具体的计算方法为:
(5)
(6)
其中,s(x,φ)表示异常分数;hi(x)表示数据x在第i棵隔离树中的路径长度;E(h(x))表示数据x在所有隔离树中的平均路径长度;c(φ)表示归一化因子,其含义是在相应的隔离树中的最大路径长度,c(φ)的计算方法为:
(7)
其中,φ表示构建隔离树的过程中对原始数据的采样大小,H(φ)是谐波函数,可以由ln (φ)+0.5772156649计算得到。
多层次序列集成(MRENSE)的高维数值型异常数据检测模型采用分层的思想实现对异常数据的检测。在MRENSE的每一个层次中,通过构建异常数据选择模块、弹性网络特征提取模块和异常打分模块这3个模块实现对高维数据的逐步特征提取和异常数据检测。在每层中的第t步,对于给定的数据集X={X1,X2,…,XN},每个数据有M个特征,即Xi=(x1,x2,…,xM)以及它们的异常得分向量St-1∈RN。MRENSE首先利用异常数据选择模块h(St)选择出一部分数据作为可能的异常数据后放入异常数据候选集Ct,然后将选出的异常数据候选集经过弹性网络模块ELNt进行稀疏回归,产生与异常分数最相关的特征Ft以及均方误差mset,最后利用这些选择出来的特征经过异常打分模块G进行异常打分。MRENSE重复地执行上述步骤,直到当前弹性网络的均方误差大于上一次的均方误差或者当前的检测精度小于初始的检测精度。该模型的总体框架如图1所示,本文设计了多层序列集成的高维异常数据检测模型,每一层都包含了3个模块。第一个模块实现对异常数据的选择并形成异常数据候选集,第二个模块建立在异常数据候选集之上,并把异常分数作为目标特征,数据的原始特征作为预测因子,利用弹性网络实现高对维数据的特征选择,第三个模块建立在前面2个模块的基础上,利用选择出的特征进行异常打分。在每层中循环地执行3个模块,其中第一个模块选择可能的异常数据时的阈值在每层中设置为不同的值,其他2个模块在每层中都相同。
图1 MRENSE的框架
每层中的执行过程为:首先对原始数据集进行异常打分得到初始的异常分数S0,接下来进入异常数据选择模块,选择可能的异常数据加入异常数据候选集Ct,然后在异常数据候选集上利用弹性网络提取和异常数据最相关的特征Ft,最后利用选择的特征再次进行异常打分得到St。对上述3个模块进行不断的循环,直到弹性网络的均方误差mset不再减小或者循环过程中的检测精度小于初始的检测精度。每层结束的时候,对该层中的异常分数S0S1S2…ST进行集成,得到该层最终的异常分数scorei。然后再对每层的异常分数进行集成,得到最终的异常分数score(X),根据对最终异常分数的排序对异常数据进行检测。实验中,层数为3时效果最好,因此,本文使用3层的基于弹性网络的序列集成学习高维异常数据检测模型对高维异常数据进行检测。
在得到了数据的异常分数之后,把异常分数认为是一个随机变量X,接下来计算该组异常分数的期望和方差。假设计算得到的期望为E(X)=μ,方差为D(X)=σ2,根据切比雪夫不等式可以得到:
(8)
其中,取ε=aσ,得到:
(9)
本文认为事件|X≥μ+aσ|对应的X是可能的异常数据,从而就得到了异常数据候选集中的元素,通过a的值来控制异常数据候选集中的元素个数。在每一层中,把a的值设置成不同的值,让每层中的异常数据候选集的个数不同,然后对每一层的结果进行集成,以便让最后的结果更加地可靠。在得到不同阶段的异常分数St之后,计算异常分数的平均值μ和方差σ2,异常数据候选集由满足以下条件的数据构成:
C={(Xi,Si)|H(Si,a)≥0},∀Xi∈X,∀Si∈S
(10)
其中,H(Si,a)=Si-μ-aσ,在每一层中a取不同的值并可以由用户指定。
弹性网络是将套索回归和岭回归进行结合的一种使用L1和L2范数作为先验正则项进行训练的线性回归模型。这种组合允许学习到一个只有少量参数是非0的稀疏模型,从而忽略那些参数为0的特征实现特征选择。与套索回归(Lasso)类似,弹性网络同时进行变量的自动选择和连续收缩,并且可以选择相关变量组。当多个变量或者特征之间存在高度相关性的时候,套索回归只是从这些相关的变量或者特征中随机地选择一个,而弹性网络在选择变量或者特征的时候没有数目的限制。MRENSE利用弹性网络对高维数据进行特征提取的过程建立在异常数据候选集Ct之上,该过程把异常分数作为目标特征,数据的原始特征作为预测因子,从而找到那些和异常分数最相关的特征,达到对高维数据特征提取的目的。MRENSE利用弹性网络对高维数据进行稀疏回归原理为:
(11)
其中,N表示异常数据候选集中数据记录的个数,ω表示回归系数,λ表示一个非负的正则化参数,a的取值决定弹性网络和套索回归及岭回归的关系。得到稀疏回归的系数之后,通过式(12)得到与异常分数最相关的特征,实现特征提取:
F={Xi|ωi≠0,1
(12)
该模块使用基于隔离森林的打分方式,其中初始异常分数是对原始数据集的异常打分,即S0。然后根据所选的特征对原始数据集进行异常打分。在隔离森林打分的过程中,MRENSE会进行采样、建立隔离树、计算路径长度、对路径长度归一化等操作。在MRENSE的每一层中,除了初始的异常分数之外,其他的异常打分都是建立在经过弹性网络特征提取得到的特征的基础上。经过弹性网络的特征提取,高维数据的维数得到了一定程度的降低,隔离森林方法对数据进行异常打分将会变得相对容易。
MRENSE需要根据最终的异常分数来判断数据的异常情况,本文在求解最终异常分数的时候需要经过2次异常分数的集成。第一次集成是对每层的异常分数集成,第二次是对各层间的异常分数进行集成。其中第一次对异常分数集成的过程较为复杂,因为在每一层中需要进行不断的循环操作,直到当前弹性网络的均方误差大于上一次的均方误差或者当前的检测精度小于初始的检测精度。首先假设在每一层中,执行T次结束,具体的执行过程为:
1)每层结束的时候会产生一系列的异常得分St∈RN,1tT和均方误差mset,1tT,首先mset进行求和,得到
2)将SUM减去每一项均方误差mset得到新的误差项MSEt,1tT,即:MSEt=SUM-mset。
3)对MSEt进行归一化操作得到一系列权重ωt,1tT,即:
(13)
4)对异常得分St进行单位化,即:
(14)
5)计算该层最终的异常分数,即:
以上步骤完成了第一次异常分数集成的工作,接下来进行第二次异常分数的集成。这次的集成较为简单,直接对每一层的异常分数求平均值即可:
(15)
为了验证本文所提方法MRENSE的性能,选择2种类型的异常数据检测方法作为对比。第一种是以CINFO和CARE为代表的基于集成学习的异常数据检测方法,第二种是以iForest、LOF和KNN为代表的常规异常数据检测方法。本实验使用Matlab 2018b、64位Win7操作系统、Intel(R) Core(TM) i5-4460 3.20 GHz、16 GB内存等构建实验环境。
本实验选择ODDS提供的高维异常检测数据集中的12个以及一个人工合成的模拟数据集对本文方法进行测试。这12个数据集的维数最小为6,最大为274,其中涵盖了图像识别、医学、网络安全等领域的数据,数据集的具体信息如表1所示。
表1 实验数据集信息
准确率是评价异常检测精度的一个常用指标。对于较多数目的异常数据检测,运行时间、对噪声的弹性、假阳性概率(FPR)以及真阳性概率(TPR)也被用于衡量算法的好坏。本文选择受试者工作特性曲线(简称ROC曲线)和AUC(Area Under ROC Curve)作为异常数据检测效果的衡量指标。通常AUC的值越大说明检测结果越可靠,算法性能越好。对于ROC曲线和AUC而言,如果2条ROC曲线中的一条曲线能够盖住另一条的话,说明被盖住的那条曲线对应的性能低于另一条,而如果2条曲线存在交叉的话,则AUC值大的性能更好。
1)准确率。
本实验选取在2个数据集上(Cardio和Mnist)的ROC曲线作为代表进行展示,如图2所示,其他数据集上的检测准确率AUC如表2所示。从图2可以看出,在数据集Cardio和Mnist上,本文方法MRENSE的ROC曲线基本上把其他2种类型的异常数据检测方法的ROC曲线完全盖住。
(a) Cardio
(b) Mnist
在其他数据集上的检测结果如表2所示。表2列出了不同异常数据检测算法在各个数据集上的AUC值,如上文所述AUC的值越大表示异常数据检测算法的检测性能越好。根据表2可知,MRENSE方法在本文所用的数据集上的检测性能都优于其他算法。
表2 不同数据集上的检测精度对比
本文方法的性能优于其他方法的原因有2个:1)传统的方法如LOF、KNN和iForest对高维数据的异常检测没有考虑高维数据中的无关特征,随着无关数据的增多算法的性能会出现显著的下降;2)本文方法利用了多层基于弹性网络的序列集成学习,实现对高维数值型数据的特征提取和异常检测,在对异常数据检测的过程中,实现了对与异常数据相关特征的不断提取,剔除了无关特征及噪声数据,并且结合了集成学习的方法将异常数据的检测结果进行了融合。CINFO方法在进行异常数据检测的时候,只是用了固定的阈值实现对异常数据的筛选,往往在不同的数据集中异常数据的占比会有差异,所以该方法在某些数据集上的表现较好,但并不适合所有的数据集。CARE方法对高维数据进行检测的过程中,主要从减小个体分类器的偏差和整体的方差入手,而忽略了在高维数据中的无关特征的影响。
2)对噪声的弹性。
关于噪声对高维异常数据检测带来的影响,本文采用2种方式进行探究,第一种方法通过模拟数据来探究,第二种方法通过对Cardio、Satellite、Optdigits数据集注入噪声数据实现。第一种方法将由高斯分布随机产生的1000条100维的数据作为正常数据,噪声数据由二类分布产生。实验中将噪声特征所占比例按照5%的公差依次增加,并将检测精度作为衡量指标。第二种方法在Cardio、Satellite、Optdigits数据集中随机注入噪声特征,注入方式和第一种方式相同。实验中,噪声特征的比例由0逐渐增加至30%,实验结果如图3所示。从检测结果可以看出,在噪声特征存在的条件下,MRENSE无论是在模拟数据集,还是在真实数据集上的检测精度都要优于CINFO、CARE、LOF和KNN方法。另外,噪声特征对MRENSE和CINFO方法的影响较小,从图3可看出,当噪声特征的比例逐渐增加时MRENSE和CINFO方法的AUC变化程度较小。MRENSE和CINFO方法在噪声存在的情况下也能够有较好的表现,并且受噪声影响较小,这是因为这2种方法在进行高维异常数据检测的时候会进行特征提取,从而实现对与异常数据无关或者噪声特征的过滤。CARE、LOF、KNN和iForest方法在进行异常数据检测的时候没有特征提取的过程,而是直接把所有的特征信息都利用上,这样一来噪声特征带来的影响就不能被忽略。
(a) 模拟数据集
(b) Cardio数据集
(c) Satellite数据集
(d) Optdigits数据集
3)提取特征数目。
通常在高维数据中会包含噪声或者无关特征,常规的异常数据检测方法往往会忽略这种噪声特征。本文方法MRENSE和CINFO方法在进行异常数据检测的过程中都会对高维数据进行特征提取,本文将这2种方法提取出的特征数目进行对比,结果如表3所示。从表3可以发现,MRENSE在对数据进行提取的时候往往会保留较多的特征信息,其提取出的特征数基本上是CINFO方法提取特征数的2倍,具体原因可以由它们在进行特征提取过程中所使用的方法解释。在MRENSE中,使用了弹性网络对高维数据进行特征提取,而CINFO则使用了Lasso进行特征提取。弹性网络和Lasso都是一种线性回归模型,不同的是弹性网络使用L1和L2范数作为先验正则项进行训练,而Lasso仅使用L1范数作为先验正则项进行训练。当很多特征存在相关性的情况下,Lasso只从其中随机选择一个,而弹性网络在选择变量或者特征的时候没有数目的限制。弹性网络的最大优势在于其永远可以产生有效解,并且它训练的过程更加稳定。MRENSE在构建序列集成学习的过程中使用了弹性网络对高维数据进行特征提取,从而尽可能多地保留了与异常数据相关的特征,然后利用提取的特征进行异常数据的检测就可以实现对异常数据检测效果的提升。
表3 特征提取数对比
针对目前高维数据异常检测方法检测精度较低以及不能很好地处理含有噪声数据的问题,本文提出了一种多层次基于弹性网络的序列集成学习模型。首先该模型采用分层的思想对高维数据的异常检测过程进行分层,得到每层的异常分数之后,再将每层的异常分数进行融合从而得到最终的异常分数,并根据异常分数的大小进行异常数据的判断。其中,在每一层中,利用异常数据选择模块、弹性网络特征提取模块和异常打分模块构建了序列的集成学习模型,对高维数据中的无关特征进行了过滤,实现了对高维数据的特征提取和异常数据检测。实验结果表明,本文方法能够有效地检测高维数据中的异常数据。相比于其他的高维异常数据检测方法,当噪声特征存在的情况下,MRENSE的检测精度受影响的程度较小。由于MRENSE在进行高维异常数据检测的过程中,用到了分层的设计,在每一层中异常数据选择模块的阈值设置未能自动实现,这会增加该方法的不确定因素。下一步,将从异常数据选择模块阈值的自动选择入手,研究阈值选择和检测结果及数据分布之间的关系,并探究该方法在大数据环境下的应用问题。