一种基于近邻自编码器的近邻异常检测系统的制作方法

文档序号:23901228发布日期:2021-02-09 13:39阅读:91来源:国知局
一种基于近邻自编码器的近邻异常检测系统的制作方法

[0001]
本发明涉及人工智能领域,尤其涉及一种基于近邻自编码器的近邻异常检测系统。


背景技术:

[0002]
异常检测是在数据集中发现其行为与预期不正常的模式的过程。异常检测算法的应用背景包括:
[0003]
信息安全系统:在许多计算机系统中,系统会记录许多数据,例如操作系统调用、网络流量或其他用户行为的不同类型的数据等。这些数据经常会由于恶意活动表现出异常特征。这种活动的识别被称为入侵检测。
[0004]
信用卡欺诈:由于信用卡号码等敏感信息更容易被窃取,信用卡欺诈已经变得越来越普遍。在许多情况下,未经授权使用信用卡可能会表现出不同的模式,例如在特定地点疯狂购物或进行非常大的交易。这种模式可用于检测信用卡交易数据中的异常值。
[0005]
传感器检测:在许多实际应用中,传感器通常用于跟踪各种环境和位置参数。潜在模式的突然变化可能代表一些值得关注的事件。事件检测是传感器网络领域的重要应用之一。传感器检测是异常检测的一种重要的时间序列检测应用。
[0006]
医学诊断:在许多医学应用中,数据是从各种设备中收集的,如磁共振成像(mri)扫描、正电子发射断层扫描(pet)扫描或心电图(ecg)时间序列。这些数据中不寻常的模式通常反映疾病状况。
[0007]
法律领域:异常检测在法律领域中有许多应用,特别是在只有通过某种实体的多个动作才能发现不寻常模式的情况下。要确定金融交易、交易活动或保险索赔中的欺诈行为,通常需要识别犯罪实体行为产生的数据中的异常模式。
[0008]
地球科学:大量关于天气模式、气候变化或土地覆盖模式的时空数据是通过卫星或遥感等各种机制收集的。这些数据中的异常现象为人类活动或可能是潜在原因的环境趋势提供了重要的信息。
[0009]
在所有这些应用中,数据都有一个“正常”模型,异常被认为是偏离了这个正常模型。异常检测即检测此种偏离的数据挖掘技术这些意外的行为也被称为异常或异常值。异常检测在各种应用背景下都可以提供许多重要和关键的信息,例如信用卡盗窃或身份盗窃。根据大多数研究资料,异常点是指与其余数据有显著差异的数据点,hawkins对异常的定义如下:“异常点是一种观察结果,它与其他观察结果的偏差如此之大,以至于引起怀疑,认为它是由不同的机制产生的。”当生成过程表现异常时,会导致异常值的产生。因此,异常值通常包含有关影响数据生成过程的系统和实体的异常特征的有用信息。识别这种不寻常的特征为不同背景下的数据分析提供了参考。
[0010]
异常检测有广泛的应用领域,但在不同领域中的异常定义却包含相同的特征:检测出不满足数据集中大部分数据共同特征的数据。其分为经典检测方法和嵌入检测方法。
[0011]
经典异常检测方法
[0012]
经典异常检测方法可以分为统计方法、基于距离方法、基于密度方法、基于聚类方法、基于图的方法、基于集成(ensemble-based)的方法、基于深度学习的方法。如果按数据类型分类,则可以分为数值数据、类别数据、图像数据、文本数据、图数据、时序数据等。
[0013]
统计方法是异常检测领域中最为经典的一类,是通过数据点与概率模型的关系来确定数据异常与否的方法,统计方法又可以分为参数方法(例如高斯混合模型和回归模型)和非参数方法(例如核密度估计方法)。在统计模型中,人们通过数据集对数据模型进行概率分布的建模,通过数据集中的已知数据学习概率模型的参数。通过统计模型进行异常检测的关键是概率分布模型的选择。
[0014]
基于距离方法则通过计算数据点之间的距离进行异常检测推断,它基于“异常数据与其他数据点距离较远”的假设。常见的基于距离方法有k近邻。在k近邻方法中,每个数据点到其第k近邻的距离被报告为异常分。通过制定k(k>1)的值,可以识别出远离数据集中其他部分的点。当前学术界有三个版本的k近邻方法。第一,使用第k个近邻的距离作为异常分的k近邻方法,该方法具有准确度强依赖于k数值的特点,当k值选取合适时,是最准确的k近邻方法。第二,使用从第1近邻到第k近邻的距离的平均值作为异常分的平均k近邻方法。该方法中准确度并不如最佳k下的第一种方法,然而该方法由于集成了从1到k所有近邻点的信息,因此对于k的依赖程度远远小于第一种方法。第三种方法是在图数据检测中分离出来的变形。该方法首先定义了反向k近邻:当点p出现在点q的k近邻集合中时,点p成为点q的反向k近邻。该方法通过某点在一定距离内的反向k近邻数量作为异常分进行异常检测。
[0015]
基于密度方法则基于“异常数据周围的数据点密度较低”的假设,通过计算数据点邻域内的数据点分布密度进行异常检测,经典的基于密度方法包括lof、cof、lofi。由于距离、聚类和密度的概念是密切相关和相互依赖的,可以认为基于密度的方法与基于聚类的方法和基于距离的方法有着密切的联系,都可以用来发现位置异常的数据点。基于密度的方法的主要缺点在于它们相对于统计方法有着昂贵的计算复杂度。同时它们在计算近邻密度时要求定义近邻域的大小,并且方法的性能对该设定十分敏感。对于需要进行增量计算或者对流数据处理的情况,由于密度计算的内敛复杂性(inherent complexity),它们则完全无能为力。与基于距离方法同样,它们对高维数据的处理能力也很有限,这是由于在高维空间中异常分变得十分相近,该类方法的异常分难以区分。
[0016]
在集成学习的领域中,学习模型可以综合不同模型的优点,通过bagging、boosting、stacking等方法整合出一个比每个单个模型表现都要好的方法。在异常检测领域中的基于集成方法的代表作为隔离森林。该方法通过建立隔离树的过程将数据集中点通过随机切割的方法将点分割到隔离树的叶子节点上。比较集中出现的区域中的点在分割的过程中需要更多的步骤独立切割出来,因此会出现在隔离树较深的位置。通过多次重复这个过程生成多个隔离树,将某个点在隔离森林中的平均高度作为该点的分数。分数较低的点说明分离过程越简单,更可能是异常点。
[0017]
嵌入检测方法
[0018]
嵌入检测方法指通过学习提取一个特征表示作为原始数据特征的提炼来进行异常检测,近年来基于神经网络的人工智能迅速发展,使用激活函数分割的多层全连接网络由于可以近似模拟任何线性、非线性函数,也被用于异常检测领域。相对于其他方法,神经网络的学习特征能力更强,经过精心设计的网络结构和目标函数可以使得网络能够精确地
学习到复杂数据集的特征,进而进行异常检测过程。其中的代表包括自编码器。
[0019]
由于自编码器非线性提取高维数据特征的能力,有一批方法通过自编码器对高维数据进行异常检测,这种降维异常检测方法可以分为两种,一种是使用自编码器本身的输出重构误差进行异常检测,另一种是利用降维工具得到数据低维表示后再用异常检测方法进行检测。
[0020]
目前异常检测领域通过自编码器降维之后用其他方法进行异常检测的研究成果还很少,代表作有。有研究在自编码器的隐层上中加入了l2约束,使得隐层的特征出现在一个超球面上。这样的方法提升了k-means聚类的性能,论文在隐层特征空间上进行k-means聚类获得聚类中心,然后将测试集的隐层特征到聚类中心的最大余弦距离作为正常分(normality)。
[0021]
根据对已有研究现状的分析,k近邻异常检测是无监督异常检测中最常用的一类方法,但目前针对k近邻进行的提升改进工作很有限,而k近邻难以处理复杂数据和高维数据的特点越来越难以适应当前时代的数据特征和规模,因此对k近邻的提升改进越来越关键。
[0022]
针对knn对高维数据的缺陷,现在降维领域的一些常用方法,包括主成分分析pca和自编码器两大类,也介绍了经典的自编码器相关的工作,包括欠完备自编码器、稀疏自编码器、变分自编码器等。总结了现有降维方法的不足,pca只能提取线性特征,原始自编码器有模型容量过大会造成过拟合的现象,自编码变式获得的隐层嵌入并不适合k近邻的特点。因此目前尚未存在针对k近邻异常检测进行改进的嵌入方法。
[0023]
目前基于自编码器的数据降维方法缺陷在于对于降维器并未进行相应的改进,使之适应于检测器所需要的嵌入表示。根据对已有研究现状的分析,k近邻异常检测是无监督异常检测中最常用的一类方法,但目前针对k近邻进行的提升改进工作很有限,而k近邻难以处理复杂数据和高维数据的特点越来越难以适应当前时代的数据特征和规模,因此对k近邻的提升改进越来越关键。本发明的主要研究目标为:提出一种基于自编码器降维的异常检测框架,在该框架中降维通过异常自编码实现,该降维方法可以充分适应检测器的特点与检测器紧密配合,将检测器所需要的关键信息在降维过程中充分保持,在保证降维效果的情况下充分保证关键信息不出现过大的变动,完成降维后在低维空间中进行异常检测,有效避免了高维数据下检测器性能的下降,是一种创新性的方法框架。


技术实现要素:

[0024]
为此,本发明提出了一种基于近邻自编码器的近邻异常检测系统,系统设计针对knn的降维-检测框架,通过输入模块导入异常数据集,经过所述knn的降维-检测框架运算后,通过输出模块输出异常数据集异常得分,从而判断输入数据集中的异常情况;
[0025]
具体地,系统首先通过kd-tree计算每个数据点的k个近邻点组成的近邻集合,k∈[25,200],将近邻集合u、v和原始数据输入基于神经网路结构设计的近邻自编码器进行降维计算,集合u为某个数据点从1-近邻到m-近邻的m个数据点形成的集合;同理,集合v为某个数据点x的从(k-m+1)-近邻到k-近邻的m个数据点形成的集合,m∈[1,5],获得保持近邻关系的低维数据嵌入和每个点的重构误差,将数据嵌入和重构误差输入到k-重构-近邻检测器,得出异常分,所述近邻自编码器和所述k-重构-近邻检测器由参数选择方案确定其系
统参数。
[0026]
所述近邻自编码器的具体实现方式为:将自编码器在隐层中对近邻关系的刻画分为两个正则项:首先,将第一项正则项设置为点和原始近邻点的集合的的距离之和的相反数;其次,使用每个点的第k近邻的距离作为异常分,即k近邻的近邻关系需要保持不变,第二项正则项设置为在隐层中点和他原始k近邻的距离;
[0027]
给定k近邻的参数k和范围超参数m,首先在原始空间中用kd-tree求出原始数据点的k个最近邻,设i是数据集中的一个原始数据点,k近邻的参数是k,u是i从1到m的近邻集合,v是点i从(k-m+1)到k的近邻集合,设集合u包含点i的1到m-最近邻,集合v包含点i的k-m+1到k-最近邻,将原始点和近邻集合分别输入近邻自编码器,通过原始点的重构误差和隐层内的近邻误差训练自编码器,
[0028]
首先定义一个含有n层全连接层的编码器,
[0029]
e(i)=f
n
(f
n-1
(

f1(i)))
[0030]
其中每层全连接层的变换为,
[0031][0032]
其中x和b分别是第i层的属性权重和偏差,
[0033]
解码器变换定义为,
[0034]
d(e(i))=g
n
(g
n-1
(

g1(e(i))))
[0035]
g
i
(x)=wx+b,i∈[1,n]
[0036]
损失函数定义为,
[0037][0038]
r
j
=(i
j-d(e(i
j
)))2[0039][0040][0041]
在迭代训练nnae后,获得原始数据的嵌入表示和每个数据的重构误差,
[0042]
e(i)
[0043]
r=i-d(e(i))。
[0044]
所述k-重构-近邻检测器的实现方式为:定义一个数据点的第k近邻到它本身的距离为d,重构误差为r,整个数据集中最大的重构误差为r
max
,最小的为r
min
,krnn的异常分为:
[0045][0046]
所述参数选择方案具体为:近邻自编码器由多层全连接层构成,层数参数设置为l,同时使用紧缩系数α描述网络形状,l∈[3,5,7,9],α∈[0.2,0.4,0.6,0.8],使用对称结构的自编码器,编码器和解码器的权重w和偏差b各自独立,但结构对称,隐层无激活函数,其他层间均使用sigmoid激活函数;选定有效结构参数l和α的方法为:首先定义集合n1为在数据集中通过nnae获得的重构误差低于其他50%数据的点的集合,n2为重构误差高于其他95%数据的点的集合,则性能指标z可以定义为:
[0047][0048]
本发明所要实现的技术效果在于:
[0049]
提出一种基于自编码器降维的异常检测系统,在其基于自编码器降维的异常检测框架中,降维通过异常自编码实现,该降维方法可以充分适应检测器的特点与检测器紧密配合,将检测器所需要的关键信息在降维过程中充分保持,在保证降维效果的情况下充分保证关键信息不出现过大的变动,完成降维后在低维空间中进行异常检测,有效避免了高维数据下检测器性能的下降,是一种创新性的方法框架。该方法改进了经典方法k-近邻两个原始缺点:1)对高维数据无效;2)效果对k敏感。并且,上述方法框架能够实现五方面的性能提升:第一,通过一些对比方法,包括k近邻,隔离森林,鲁棒自编码器,传统自编码-重构误差说明方法的有效性。第二,通过部分实现框架组件验证每个组件的有效性。第三,验证对k取值鲁棒性的验证。第四,关于近邻参数m的有效范围验证。第五,关于nnae结构参数选择方案的有效性验证。
附图说明
[0050]
图1系统整体框架图;
[0051]
图2nnae的结构图;
[0052]
图3nnae的超参数l与α;
[0053]
图4框架对k鲁棒性实验图;
[0054]
图5“m”可取范围实验:cardio;
[0055]
图6“m”可取范围实验:waveform_noise
[0056]
图7“m”可取范围实验:usps;
[0057]
图8“m”可取范围实验:fashion_mnist;
[0058]
图9“m”可取范围实验:stl10;
具体实施方式
[0059]
以下是本发明的优选实施例并结合附图,对本发明的技术方案作进一步的描述,但本发明并不限于此实施例。
[0060]
本发明提出了一种基于近邻自编码器的近邻异常检测系统,系统设计针对knn的降维-检测框架,通过输入模块导入异常数据集,经过所述knn的降维-检测框架运算后,通过输出模块输出异常得分,从而实现对数据样本的异常情况的判断。系统框架图如图1。
[0061]
针对knn的降维-检测框架
[0062]
由于现有自编码器用于k近邻降维的种种缺陷,本框架使用降维-检测两阶段框架,降维器使用近邻自编码器,检测器使用k-重构-近邻检测器。
[0063]
首先对于输入的一组异常数据集,通过kd-tree计算每个数据点的k个近邻点组成的近邻集合,将近邻集合u、v和原始数据输入近邻自编码器进行降维计算,获得保持近邻关系的低维数据嵌入和每个点的重构误差。将数据嵌入和重构误差输入到k-重构-近邻检测器,得出异常分,框架结束。
[0064]
该框架使用了nnae对原始数据进行保持了近邻关系的降维,同时解决了k近邻的
高维失效和参数依赖性两个缺点。在降维后针对异常点低维表示训练不充分的问题,将重构误差提供给检测器,使得检测器可以根据重构误差进行异常分的调整,重构误差大的点会相应获得更高的异常分,更加贴合数据集的特征。
[0065]
近邻自编码器
[0066]
现有自编码器的特性无法满足我们对k近邻进行改进的要求,即在降维的过程中保持数据点之间的近邻关系。因此我们在本节中对自编码器进行重新设计,称为近邻自编码器(nearest-neighbor-autoencoder,nnae)。
[0067]
我们在传统全连接层自编码器的基础上,引入了两项全新的正则项。我们将自编码器在隐层中对近邻关系的刻画分为两项:首先,我们希望在原始空间中相近的数据点在隐层空间中依然相近,因此我们将第一项正则项设置为点和原始近邻点的集合的的距离之和的相反数。其次,考虑k近邻,我们使用每个点的第k近邻的距离作为异常分,即k近邻的近邻关系需要保持不变,因此我们将第二项正则项设置为在隐层中点和他原始k近邻的距离。图2为nnae的结构图。
[0068]
给定k近邻的参数k和范围超参数m,我们首先在原始空间中用kd-tree求出原始数据点的k个最近邻,设集合u包含点i的1到m-最近邻,集合v包含点i的k-m+1到k-最近邻。将原始点和近邻集合分别输入近邻自编码器,通过原始点的重构误差和隐层内的近邻误差训练自编码器。
[0069]
设i是一个原始数据点。k近邻的参数是k。u是i从1到m的近邻集合,v是点i从(k-m+1)到k的近邻集合。
[0070]
首先定义一个含有n层全连接层的编码器,
[0071]
e(i)=f
n
(f
n-1
(

f1(i)))
[0072]
其中每层全连接层的变换为,
[0073][0074]
其中x和b分别是第i层的属性权重和偏差。
[0075]
相似的,解码器变换定义为,
[0076]
d(e(i))=g
n
(g
n-1
(

g1(e(i))))
[0077]
g
i
(x)=wx+b,i∈[1,n]
[0078]
损失函数定义为,
[0079][0080]
r
j
=(i
j-d(e(i
j
)))2[0081][0082][0083]
在迭代训练nnae后,我们可以获得原始数据的嵌入表示和每个数据的重构误差,
[0084]
e(i)
[0085]
r=i-d(e(i))
[0086]
上述即我们提出的近邻自编码器设计方案。
[0087]
k-重构-近邻检测器
[0088]
我们改进了k近邻实现了k-重构-近邻检测器(k-reconstruction-nearest-neighbor,krnn),将重构误差加入到异常分的计算中,使得重构误差大的点获得更高的异常分。
[0089]
受到传统自编码器异常检测,将重构误差作为异常分做法的启发。由于自编码器对在数据集中极其丰富的正常点的拟合能力强,而稀缺的异常点的拟合能力弱,自编码器本身就包含了对于检测异常十分重要的信息。因此我们将knn的异常分进行修改。
[0090]
定义一个数据点的第k近邻到它本身的距离为d,重构误差为r,整个数据集中最大的重构误差为r
max
,最小的为r
min
,krnn的异常分为,
[0091][0092]
从公式可以看出,对于最大的重构误差r
mtx
,原始k距离为d,修正过的异常分为e
·
d;对于最小的重构误差r
min
,原始k距离为d,修正过的异常分依然为d。整个数据集上按照重构误差从小到大的顺序分散到[1,e]区间上。其含义是对于nnae重构效果好的点,重构误差很小,我们可以相信nnae生成的隐层嵌入,因此即使用原始knn的异常分d即可。对于nnae重构效果差的点,重构误差在数据集中相对较大,则隐层嵌入的可信性也不大,因此必须对异常分进行一定的提升。
[0093]
无监督自编码器结构参数选择方案
[0094]
最后我们提出了增加模型易用性的参数选择方案。自编码器由于结构变化多,用户在使用模型的时候需要设定的参数很多,十分不便于使用。并且由于方法是无监督的,用户无法在使用时得知自编码器是否在良好的参数下运行,因此我们设计了一套减少参数的设计方案并且提供了一套可行的在用户使用时可以判断自编码器参数优劣的调优方法。
[0095]
由于我们用近邻自编码对数据进行降维处理,因此自编码器的隐层必须足够狭窄(欠完备自编码器),为了减少超参数提高易用性,我们使用层数l和紧缩系数α描述整个nnae网络结构。
[0096]
近邻自编码器由多层全连接层构成,层数参数设置为l,同时使用紧缩系数α描述网络形状。我们使用对称结构的自编码器,编码器和解码器的权重w和偏差b各自独立,但结构对称,隐层无激活函数,其他层间均使用sigmoid激活函数。这样的设置方式使得近邻自编码器的结构自由度得到充分化简,大大提升了模型易用性。图3为nnae的超参数l与α。
[0097]
我们将模型中的超参数总结如下:
[0098]
表1降维-检测框架超参数含义及推荐范围
[0099][0100]
化简了nnae的结构参数后模型的易用性依然没有完全解决。这是由于方法框架是无监督的,因此用户依然无法在训练时选择最有效的nnae结构参数。因此我们针对该问题
设计了一种选定有效结构参数l和α的方法。
[0101]
我们定义了基于重构误差的指标z。首先定义集合n1,是在数据集中通过nnae获得的重构误差低于其他50%数据的点的集合,n2是重构误差高于其他95%数据的点的集合,性能指标z可以定义为:
[0102][0103]
该指标的设计思路如下。该指标体现了经过nnae重构后,重构效果最好的50%和最差的5%的重构误差的比值。对于一个工作效果良好的nnae,我们期望它可以通过重构误差进行有效的异常隔离,即重构误差包含明显的两类,一类重构误差较大,另一类重构误差很小。考虑到异常数据集的分布特征,通常异常比例在15%以下,而正常数据至少占85%,我们期望选取的两部分集合完全代表了两类数据,因此保守的选择了前50%和后5%来分别代表正常数据和异常数据。如果nnae工作效果不好,则由于正常数据的重构误差较大,异常数据的重构误差不够大,该指标会偏大;反之,如果正常数据的重构误差较小,异常数据的重构误差足够大,该指标会偏小。因此我们在无监督场景下就可以使用该指标进行nnae的结构参数判断nnae的工作情况。
[0104]
具体使用方案如下。用户通过l和α选取几组nnae结构,在数据及上进行分别训练,分别计算不同实验组别的指标z的值,从中选取z最小所对应的结构参数,该组结构参数应比大多数其他nnae结构工作情况优秀。该方案的有效性我们也在实验部分进行了验证。
[0105]
为了证明本发明的技术效果,以下为五个实验,其从各方面评价本发明技术方案带来的有益效果。第一,通过一些对比方法,包括k近邻,隔离森林,鲁棒自编码器,传统自编码-重构误差说明方法的有效性。第二,通过部分实现框架组件验证每个组件的有效性。第三,验证上文提到的对k取值鲁棒性的验证。第四,关于近邻参数m的有效范围验证。第五,关于nnae结构参数选择方案的有效性验证。
[0106]
实验设置
[0107]
首先简单介绍实验使用的五个数据集。我们选取了五个数据集来测试我们的方法。以下五个数据集均使用min-max-scaler将所有属性变换到区间[0,1]上。
[0108]
(1)cardiotocography(cardio)是数值数据集。该数据集是胎儿心电图数据,属多变量数据集(multivariate),由三名产科专家对数据进行分类诊断胎儿健康状态,分为健康(normal),可疑(suspect),患病(pathologic)。剔除可疑种类,将健康作为正常数据,患病作为异常数据。数据个数为1831,特征个数22。正常数据1655,异常数据176,异常比10.6%。
[0109]
(2)waveform_noise是波形的生成数据集,包含人为添加的白噪音,属人造的多变量数据集(multivariate)。包含三类数据(0,1,2)。我们选取0类数据作为数据主体,1和2类作为异常数据分别选择等比例的数据添加进数据集,作为异常数据。最终共有3477条数据,数据属性41个,异常比4.9%。
[0110]
(3)usps是包含十类数字的手写数据集。我们将数字0作为正常类,其他数字按照相同比例采样添加到异常数据集中。最终数据集共有1725个数据,特征数为16*16,即256维,异常比10%。
[0111]
(4)fashion_mnist是图片数据集,共有十类物体图片。与usps相似,我们选择其中
的t-shirt作为正常类,其他等比例采样作为异常类,通过臭氧形成不均衡异常检测数据集。最终数据个数为7777个,特征数为784,异常比10%。
[0112]
(5)stl10为图片数据集,分为airplane,bird,car,cat,deer,dog,horse,monkey,ship,truck共10类。将其中bird,cat,deer,dog,horse(动物)作为正常类,其他(transportation)作为异常类,通过抽样生成异常比10%的异常检测数据集。将图片通过vgg图片处理网络预处理获得4096维向量。数据个数为3000,特征4096个。异常比10%。
[0113]
表2数据集描述
[0114]
数据集种类数据数量特征数量异常比cardio数字18312210.6%waveform_noise数字3508224.7%fashion_mnist图片777778410.0%usps图片172525610.0%stl10图片3000409610.0%
[0115]
接下来介绍对比方法。本发明使用4个对比方法和4个框架的部分实现来完成对比实验。
[0116]
k近邻。由于本框架基于k近邻,因此我们选用k近邻作为方法的第一个对比方法是自然的。另一个原因是k近邻也是最常用的一种无监督异常检测方法。k近邻是一种基于近邻关系的方法,使用每个数据的k近邻的距离作为异常分。
[0117]
隔离森林。隔离森林是一种可用于高维数据的异常检测方法。隔离森林是一种基于集成的检测方法。它通过建立隔离树的过程进行异常分离。建立隔离书的过程如下:首先随机选择一个属性,在属性分布的范围内进行随机切割,将数据集分割成两部分,然后对于这两部分分别再进行随机属性原则切割,直到每个区域内仅有一个数据点。根据完成对该点分割时分割的次数作为描述点异常程度的值。在隔离森林中进行多次隔离树的建造,对每个点在树中的高度进行平均,作为点的异常分。从图中可以看出,正常点分布在点密度较大的区域,对于这类点,需要进行切割的次数多,对于异常点周围鲜有点出现,因此较为轻易地可以将点隔离出来,即点的平均深度越深,说明需要切割的次数越多,点越正常。该方法的特点是由于不依赖于距离函数,因此在高维数据上也有很好的准确度和性能。是一种很常用的无监督算法。
[0118]
基于重构误差的自编码器。自编码器在异常检测领域的原始应用方式是使用欠完备自编码器的重构误差作为异常分。由于异常数据集中正常数据比例极大,异常数据含量极少,因此自编码器对于正常数据的拟合能力要强于异常数据很多。因此正常数据的异常分要远远小于异常数据的异常分。所以通过自编码器的重构误差可以完成无监督异常监测的任务。
[0119]
robust deep autoencoder(rae)。rae是2017年基于自编码器的改进。它也基于重构误差进行异常检测,其主要创新点是受到pca的启发,在训练过程中逐渐丢弃重构误差大的数据点,将筛选后的点进行收缩,抛弃不重要的特征后继续训练。该方法是通过半监督的思路优化了自编码器的训练过程,这是由于异常点的存在本质上是妨碍了自编码器对于正常点特征的学习,因此在训练过程中逐渐抛弃异常点能更好的帮助自编码器学习正常点的分布。该方法还包含了极佳的抗噪声能力。图中表示了rae和传统自编码器抗噪声能力的差
距。
[0120]
实验均使用auc(area under roc)描述。异常检测作为一种分类机器学习任务,可以通过两种指标描述。
[0121]
实验一:框架有效性验证
[0122]
在本节实验中,我们使用上文介绍的对比方法验证本框架的有效性。对比方法包括:
[0123]
k近邻
[0124]
隔离森林
[0125]
自编码器重构误差
[0126]
robust deep autoencoder
[0127]
表中的准确率描述数据均为auc。由于我们提出了选择结构参数的方法,本节实验中的结果均为使用结构选择参数方法下的结果,因此框架能达到的最佳效果比表中auc要高一些,但由于无监督性质,使用那些最高auc是不科学的,因此我们得出了下表的auc结论。其中m=4,k=100。
[0128]
表3 nnae准确率实验结果
[0129][0130]
在该表中可以看出,在该参数设定、无监督背景下,本框架的方法对比四种对比方法均有不同程度的提升。
[0131]
实验二:组件有效性验证
[0132]
本节实验中我们提供几种本框架的部分实现方法,用来验证框架的每个组件都是有效的,这些部分实现包括:
[0133]
k近邻。原始k近邻方法,无嵌入,无重构误差的加入。
[0134]
自编码嵌入+k近邻。使用传统全连接自编码器进行数据嵌入,之后使用原始k近邻进行检测,自编码器不包含近邻约束、k近邻不包含自编码器重构误差。
[0135]
近邻自编码+k近邻。使用nnae对数据进行嵌入,之后使用原始k近邻进行检测,k近邻不包含自编码器重构误差。
[0136]
完整nnae+k重构近邻框架方法。
[0137]
需要注意的是,部分实现的对比方法均使用了与方法4完整nnae+krnn相同的ae结构参数,并且该结构参数由参数选择方法决定。表中m与k设定与实验1相同,m=4,k=100
[0138]
表4 nnae组件有效性实验
[0139] cardiowaveform_noiseuspsfashion_mniststl10knn(k=100)0.9490.8540.9670.8990.533ae+knn0.9210.9010.8890.9040.655nnae+knn0.9660.9270.9580.9390.748nnae+krnn0.9670.9230.9830.9400.750
[0140]
由表中数据可以看出,方法的每一步组件实现均对各个数据集上的结果有所提升,尤其是在stl10上,stl10在之前的介绍中提到特征维度高达4096,是真正的高维数据集,因此knn在其上完全失效(auc=0.533),这是由于高维数据上的距离函数失效。经过nnae嵌入+krnn检测的框架优化之后可以达到0.750的auc,实现了重大提升。
[0141]
实验三:k取值鲁棒性验证
[0142]
前文中提到,k近邻有一大缺点,即在实际应用时用户难以确定k的取值以达到最优效果。在无监督场景下更是如此。当k取值过大时,模型捕捉的数据特点过于粗糙,异常分会趋于一致,难以分辨异常;当k取值过小时,异常分的偶然性过大,也难以区分正常点和异常点。我们设计的本框架的一大优点即,在模型中krnn的参数k在很大范围内都有效,可以达到很好的检测效果。因此我们在本小节实验中进行验证。
[0143]
本实验固定参数m,变化参数k进行探究,nnae结构参数均使用参数选择方案确定。实验结果如图表。
[0144]
表5 k鲁棒性实验:nnae+krnn
[0145][0146][0147]
表6 k鲁棒性实验:knn
[0148]
kcardiowaveform_noiseuspsfashion_mniststl10500.9290.8440.9690.8890.5221000.9490.8540.9670.8990.5331500.9530.8570.9650.9020.5342000.9550.8600.9620.9020.533
[0149]
图中取m=5,k在25到200之间变化,可以得出结论,我们的方法在k∈[25,200]时均可有高而稳定的auc表现,同时对比下表中的原始knn的auc,从25到200之间auc均有很大提升。因此得出结论我们的方案在k∈[25,200]之间时均对knn完成了提升,同时增加了方法对k的鲁棒性。
[0150]
实验四:“m”有效范围实验
[0151]
我们提出框架参数m的有效范围。为了增加模型的易用性,方便用户使用,我们在
五个数据集上对参数m的有效范围进行实验分析。该实验中,k固定为150,m取值范围[1,5],在全部5个数据集上进行框架auc和k近邻auc的对比实验,实验结果如下:
[0152]
cardio
[0153]
表7“m”有效范围实验:cardio
[0154]
nknnae+knnnnae+knnnnae+krnn10.9530.9490.9710.96720.9530.9460.9740.97230.9530.9380.9690.96740.9530.9540.9620.96150.9530.9540.9690.969
[0155]
(1)waveform_noise
[0156]
表14“m”有效范围实验:waveform_noise
[0157]
nknnae+knnnnae+knnnnae+krnn10.8570.9520.9010.91020.8570.9230.8380.86930.8570.9360.8480.88340.8570.9380.9160.91750.8570.9450.8910.894
[0158]
usps
[0159]
表8“m”有效范围实验:usps
[0160]
nknnae+knnnnae+knnnnae+krnn10.9650.9040.9230.96520.9650.9400.9590.98230.9650.9080.9640.98340.9650.9170.9580.98250.9650.9210.9550.981
[0161]
fashion_mnist
[0162]
表9“m”有效范围实验:fashion_mnist
[0163]
nknnae+knnnnae+knnnnae+krnn10.9020.9260.9390.93920.9020.9220.9470.94730.9020.9190.9480.94740.9020.8910.9410.94450.9020.9210.9440.943
[0164]
stl10
[0165]
表10“m”有效范围实验:stl10
[0166]
nknnae+knnnnae+knnnnae+krnn10.5340.6120.8740.875
20.5340.6990.6730.67630.5340.6050.8820.89040.5340.5590.8900.90250.5340.6680.7390.743
[0167]
从上述结果中我们可以得知,框架的性能在m∈[1,5]区间上均对knn产生了显著的提升。同时除了waveform_noise数据集上ae+knn的部分实现由于框架整体以外,其他数据集上框架性能也均好于其他所有部分实现。因此我们可以得出结论:框架性能在m∈[1,5]区间上时均有效。
[0168]
实验五:结构参数选择方案有效性验证
[0169]
在无监督场景下使用自编码器进行机器学习的一大困难即无法有效的选择自编码器的结构,由于每层独立的结构,自编码器的结构千变万化,通常使用者只能根据经验进行使用。但不同数据集上不同结构自编码器的表现又完全不同,无监督场景下无法验证自编码器性能,针对这一痛点,我们提出了自编码器的结构参数选择方案。
[0170]
我们的框架中使用了层数l和紧缩系数α来描述对称自编码器结构,但该方案不仅仅可以用于这样经过简化了的自编码器结构,也可以用于判断其他复杂结构的自编码器的降维性能好坏。
[0171]
方案中将多种自编码器结构在数据集上进行分别训练,分别计算不同实验组别的指标z的值,从中选取z最小所对应的结构参数,即可选出较优的自编码器结构。
[0172]
我们通过实验验证该方法的有效性。在五个数据集上分别进行试验,对于每个数据集,我们选择16组l和α,在实验中通过按照方案选取的auc在16组auc里面的排序来验证指标z的有效性。将16组auc列入表中,l和α的取值范围分别是l∈[3,5,7,9],α∈[0.2,0.4,0.6,0.8],其他参数按照实验1的数值进行固定排除其他参数的影响。
[0173]
我们将auc降序排列,方案选择的auc越靠前,说明z越有效。由于所有z选择的auc均在前7名内,因此在表中我们只列出了前7个结果。
[0174]
表11结构参数选择指标z的性能
[0175][0176]
从表中分析可以得知,所有数据集上z均选取了前50%以内的结构参数,因此使用该方案选择的结构参数均比随机选取结构的自编码器性能更强,证明了方案有效。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1