王俊,赖会霞,2*,万玥,张仕,3**
(1.福建师范大学计算机与网络空间安全学院,福建 福州 350117;2.福建省网络安全与密码技术重点实验室,福建 福州 350117;3.福建师范大学数字福建环境监测物联网实验室,福建 福州 350117)
异常检测通常用于识别偏离正常行为的数据、事件和观察结果,其在许多领域都有重要应用,如欺诈攻击[1-2]、网络安全[3-4]、医疗数据分析[5-6]等。各类传感器在工业、医疗等领域的广泛应用带来了更高维度的数据,但是,高维数据的“维度灾难”问题给现有异常检测方法带来新的挑战,主要表现为现有异常检测方法在面对高维数据时存在不同程度的检测精度下降问题。所谓的“维度灾难”是指随着数据维度的提升,从样本点到质心的最大和最小欧氏距离的差值与其最小欧氏距离的比值趋于0,即随着特征空间维度的增加,数据之间距离的相对差距几乎消失[7],这也就导致基于距离的异常评估变得更困难。
目前,已有学者提出多种无监督异常检测方法,其中基于距离的异常检测算法(如KNN[8])和基于密度的异常检测算法(如LOF[9]、DBScan[10])依赖于数据节点之间的距离来求异常值,由于距离会随着维度升高而变得难以区分,从而导致这类算法在高维情况下失效。此外,多数基于距离和密度的异常检测算法需考虑局部范围内的近邻数据,因此,它们的异常检测精度还受近邻点数量的影响。为了减少节点间的距离计算,研究人员提出基于树结构的异常检测算法(如IFOREST[11]),但是该类算法同样无法适用于高维数据的情况。此外,高维“噪声”也会导致基于树和基于分类器的异常检测算法精度下降[12]。
随着深度学习技术的快速发展,研究人员提出了一系列基于深度学习的异常检测方法,如自动编码 器(AE)[13]、变分自 动编码 器(VAE)[14]、DSVDD[15]、对抗神经网络(GAN)[16]、LUNAR[17]等,但是这些方法仍未能很好地解决高维数据异常检测问题。其中,在利用神经网络进行降维的异常检测方法中,判定过程和学习过程割裂,从而导致模型提取的特征不能表征出异常;利用神经网络重构误差以进行异常检测的方法则在超参数的调节上敏感,且抗干扰能力较差;深度学习和传统异常检测算法相结合则仍存在传统方法中的固有问题;直接使用神经网络进行端对端异常打分的深度学习模型未能解决高维空间中复杂的数据分布问题[18]。
针对“维度灾难”问题,文献[19]利用角度和节点间距离共同计算节点的异常指标,但其时间复杂度太高。虽然该文献之后提出的fastABOD 把时间复杂度降到O(n2+kn),但又引入了k的设置问题,同时还导致fastABOD 在中低维度异常检测中精度下降。
针对目前异常检测算法无法适应高维数据集以及基于角度的异常检测方法存在的近邻参数设置和中低维度适应性问题,本文提出一种基于角度的图神经网络异常检测(A-GNN)方法。该方法以k近邻点间的角度方差作为节点的初始异常因子,以图神经网络(GNN)节点信息交互方式训练模型[20],以克服“维度灾难”和k参数设置问题,增强方法的适应性。利用均匀采样和数据扰动的负采样方法,解决缺少异常数据而无法训练网络的问题。
异常检测可以分为无监督、半监督和有监督的异常检测。由于现实世界中多数数据未经标记,且异常数据通常较难获取,因此无监督异常检测得到广泛关注。
传统的无监督异常检测算法可以分为基于统计的异常检测算法[21-22]、基于距离的异常检测算法[8]、基于密度的异常检测算法[9-10,23]、基于树的异常检测算法[11,24]、基于分类器的异常检测算法[12,25]等。
文献[21]基于数据维度间的无关假设提出一种线性复杂度的异常检测算法HBOS。文献[22]提出COPOD 方法,该方法基于所有维度之间的联合分布估算每个点的尾端概率,实现异常情况评估。基于统计的异常检测算法的优点在于具有很强的理论支撑,缺点在于需要准确定义不同应用场景下的异常并找到一个合适的模型。此外,基于统计的异常检测算法可拓展性较差,很难实现模型的拓展使用。
在基于距离的异常检测算法中,KNN[8]算法的主要思想是通过寻找近邻点并利用近邻节点之间的距离来发现异常数据。该类算法的异常评判是基于距离的k最近邻,在面对高维数据时容易受到“维度灾难”的影响导致算法精度下降。此外,选择正确的k值也难以形成统一的标准。
为了能够找到局部异常点,以局部离群因子(LOF)[9]、基于连接的异常因子(COF)[23]和DBScan[10]为代表的基于密度的异常检测算法被提出。这些算法通过计算节点之间的密度关系来寻找局部异常点,以克服基于距离的方法的弊端,但是它们仍然离不开距离计算,需要利用近邻点来计算密度。在高维度数据集中,数据维度越高,样本点分布越稀疏,导致高维数据的正常样本和异常样本的密度没有明显差别,容易造成基于密度的异常检测算法在高维数据中检测精度下降。
异常点通常具有“少而不同”的特点,比较容易从整体数据集中分离出来,基于此,有学者提出具有随机分割思想的基于树的隔离森林IFOREST[11]异常检测方法、INNE 方法[24]。IFOREST 的主要思想是通过分割形成隔离树后,再利用节点在树中的深度以及每个分割区域所包含的节点数计算异常分数,从而确定异常数据。INNE 在IFOREST 的基础上结合近邻距离计算方式,利用近邻因素提高寻找局部异常的能力。基于树的异常检测方法能够有效避免异常检测中的距离计算,但是由于树形结构是随机分割的,容易受到噪声维度的影响。在高维数据的异常检测中,基于树的方法可能会随机选中带有噪声的特征作为分割点,从而极大影响异常点的判断,并且数据集的维度越高,噪声的影响越明显。
基于分类器的异常检测算法源自于机器学习中的各种分类算法,其中的典型代表是单分类支持向量机(OC-SVM)[12],其核心思想是将节点通过核函数映射到一个超平面上,远离超平面上的点为异常点。OC-SVM 主要针对样本不均衡情况下的数据分类,更加适用于异常数据和正常数据样本比例极不均衡的情形。但是,过高的维度会导致分类器模型复杂化,在面对异常检测判别时加入太多无关维度的考虑,影响模型进行正确判断。为此,一些研究人员采用先降维再处理的方法,如利用局部敏感哈希降维后进行数据检索[26]。为提高OC-SVM 在面对高维数据时的表现能力,文献[25]通过利用主成分分析进行降维提出基于主成分分类器的异常检测方法PCC,但是降维方法本质上并未有效提高基于分类器的异常检测算法在高维数据上的检测精度。
从上述分析可以看出,“维度灾难”问题使得高维空间中的正常数据也具有稀疏分布、距离模糊等特点,导致传统的异常数据检测方法很难应用于高维数据中。
传统算法受高维数据“维度灾难”影响导致异常检测精度较低,为此,文献[19]提出基于角度的异常检测方法ABOD,其使用角度替换距离作为基本的异常评测指标,实验结果表明,该方法在高维数据集中表现优于基于距离、基于密度的异常检测方法。但是,ABOD 方法的时间复杂度为O(n3),无法在大规模数据中得到有效应用。为了提高算法的效率,文献[19]还提出了一种基于近邻点的快速角度异常检测方法fastABOD,其时间复杂度为O(n2+kn),但是,该方法存在需要设置近邻点个数、在中低维度数据中异常检测精度退化的问题。
为了缩短ABOD 的运算时间,文献[27]引入随机空间投影技术,期望使算法的运行时间达到亚线性时间复杂度,这一改进虽然提高了算法的效率,但是在面对低维度数据时表现不稳定。此外,文献[28]把基于角度的方法应用于电梯故障检测任务中。总体而言,基于角度的异常检测方法在算法适用性以及算法精度上仍有较大的改进空间。
相较于传统算法,深度学习在面对高维数据时有着更好的适应性。深度学习在异常检测中的作用主要分为四大类:1)深度学习用于特征提取;2)利用深度学习重构误差以进行异常检测;3)深度学习和传统算法相结合以学习常态的表达形式;4)以端对端的方式通过深度学习进行异常评分。
利用深度学习进行特征提取的方法旨在利用神经网络实现数据降维,如利用神经网络替代传统的PCA 降维方法[29]和随机投影方法[30]。相比传统降维方法,神经网络在线性特征和非线性特征提取上均表现更 好。例 如,有研究 人员利 用AlexNet[31]、VGG[32]和ResNet[33]来提取低维数据。但是,这类方法只是将深度学习模型作为一个独立的特征提取工具,并不是专门为了异常检测而创建模型,这种特征提取方法很难实现异常的精准判断。
基于重构的深度学习异常检测方法并不是专门为了异常检测而设计的,但是通过重构后的数据能有效发现异常。其中的典型代表有AE[13],它使用正常样本进行训练,若深入异常样本,则训练好的模型再生出来的结果和原样本通常会有较大误差。随后,有研究人员在自动编码器的基础上发展出其他变体,如VAE[14]和GAN[16]。基于重构的异常检测方法需要大量数据集进行训练,如果训练集的数据量不够,其精度将无法满足预期,而且这些模型并不是专门为了异常检测而构建的,当面对不规律数据时将无法进行针对性的优化。
深度学习和传统算法相结合的异常检测方法以传统算法为主导,引导网络的学习,它们是一种专门为了异常检测而设计的深度学习模型。LUNAR[17]通过结合基于距离的异常检测方法和深度学习模型完成异常检测任务,其验证了近邻检测算法能够转换为图神经网络信息传递的框架,并且实现了对近邻检测算法的统一应用,但该方法仍然受到“维度灾难”的影响。DSVDD[15]是分类方法与深度学习方法相结合进行异常检测的典型代表,该方法利用深度学习模型完成核函数的工作,是一种专门针对异常检测而设计的神经网络模型。但是DSVDD 还是不可避免地需要调节大量超参数和训练集,而且基于分类的方法在面对高维、复杂数据分布时可能失效,此外,高维数据集的噪声也容易使该类方法在面对高维数据时产生偏差,导致性能下降。
以端对端的方式通过深度神经网络[34-35]进行异常评分的方法不依赖其他方法指导学习,而是通过深度学习模型直接学习以实现异常判别,其优点在于不会受到传统算法不足的限制。DAGMM 方法[34]将降维和密度估计通过神经网络有机地结合在一起,并进行端对端的联合训练。GDN 方法[35]通过使用注意力机制进行异常权重选择和图神经网络预测,以实现对多维时间序列的异常检测。但是,端对端深度神经网络方法的核心在于使用合适的损失函数以及适配的数据集,因此需要设计新的损失函数以完成对数据的异常评分,这也导致端对端深度学习网络的泛化性不如其他方法,不能很好地对模型进行迁移使用。此外,该类异常检测方法通常需要大量带标签的数据集,这也极大限制了方法的有效应用。
给定一个含有n个d维数据的数据集X={xi∊Rd|i=1,2,…,n},A-GNN 旨在准确地检测出X中的异常数据。
A-GNN 模型工作流程如图1 所示(彩色效果见《计算机工程》官网HTML 版,下同)。首先将原始数据集X划分为训练集X(train)和测试集X(test),对于训练数据,通过混合使用2 种负样本采样以增加训练集中的负样本占比(如(a)所示);然后构建近邻点关系并初始化节点的异常因子数(如(b)所示);接着将预处理数据输入GNN 网络中,并利用节点间的信息传递进行模型训练(如(c)所示);最后输出训练完成的模型(如(d)所示)。在利用训练后的模型进行异常检测时,模型评估输入数据并输出异常分数。
图1 A-GNN 模型流程Fig.1 Procedure of A-GNN model
在多数应用中,负样本数据远少于正样本数据,正负样本数据的不均衡往往导致深度学习模型难以训练[17],因此,本文通过负样本的自动生成使训练集中的正负样本达到近似均衡。类似方法也在一些异常检测任务中被使用,如文献[17,36]中通过数据增强来有效解决正负样本不均衡的问题。
本文使用2 种负样本生成方法:1)在高维数据空间中进行均匀分布采样以生成负样本;2)基于训练数据集的空间扰动生成负样本。在具体的应用中,2 种方法生成的数据可能包含正样本,但是在实际的高维空间中,正样本只占其中的一小部分,因此,把2 种方法生成的样本均计入负样本并不会影响最终训练效果。最后,应用于训练的正负样本达到接近1∶1 的均衡状态。
2 种负样本生成方法具体如下:
1)均匀分布采样。该方法在相同空间大小中随机抽取样本,并保证每个样本的抽取概率相同,即样本在相同空间大小中的分布是等概率的:
在本文应用中,令a=0,b=1,确保数据均匀采样同时实现数据归一化。
2)子空间扰动。该方法是基于“正样本是由负样本包围”假设而设计的,其生成的负样本数据靠近正样本,有利于模型通过训练有效区分正负样本,提高模型的泛化性。子空间扰动采样如式(2)所示:
其中:M∊Rd是二进制随机向量,M中的每个元素有p的概率为1,有1-p的概率为0,这确定了扰动的维度。
通过混合使用均匀分布采样和子空间扰动2 种方法,把生成的数据作为负样本加入训练集中,最终形成X'(train)。
高维空间中以闵克夫斯基距离为代表的距离衡量方法会引起“维度灾难”问题,文献[19]提出以角度作为异常检测标准。A-GNN 引入角度作为异常数据评估要素,节点x初始异常因子考虑k个最近邻节点之间的角度方差和距离因素,因此,能够更好地适应高维数据。以距离作为角度权重计算节点与k近邻节点之间的角度方差,则节点的异常因子(AF)初始化如下:
在进行节点异常因子初始化时,A-GNN 首先将普通的数据转换为图数据,并为每个节点构建从k个近邻到该节点的边,所构造的图为G=(V,E),其中,V=X'(train),E={(x,y)|y∊V,x∊Nk(y,V)}。最后利 用式(3)计算每一个节点的初始异常因子。
2009 年,文献[20]提出GNN,随着人们对神经网络研究和应用的深入,GNN 开始在各领域表现出良好的适应性。GNN 节点之间的信息交互使得邻接节点间能够互相学习表征关系,多次迭代训练又有利于节点信息扩散,从而能够聚合远近节点的信息。
GNN 的信息交互是一种聚合邻接节点信息来更新中心节点信息的范式,它将卷积算子推广到不规则数据领域,实现了图与神经网络的连接。遵循消息传递范式的图神经网络被称为消息传递图神经网络,其信息传递范式可以理解为3 步,即message、aggregation 和update,分别用符号ϕ、⊕和γ表 示。GNN 图节点信息传递范式如下:
A-GNN 首先与k个近邻点构造节点对以创建向量,从而构造角度并计算异常因子,之后利用信息传播机制实现节点异常分数计算。
对输入已构造k近邻关系的图数据,如果一个目标节点xi存在与它相连的源节点xj,即xi是xj的k最近邻之一,它们之间的边为(xi,x)j,则边特征定义为两点之间的向量,方向如式(5)所示:
针对GNN 信息传播机制的3 个步骤,A-GNN 中的message、aggregation、update 定义如下:
1)message。节点xi和节点xj沿着边(xi,xj)传递的信息等于其边特征,如式(6)所示:
上述边特征及消息传递实现示意图如图2所示。
图2 信息传递示意图Fig.2 Schematic diagram of information transmission
2)aggregation。aggregation 是用于k个近邻 节点的聚合操作。在A-GNN 中,节点的异常分数需要考虑k个邻居节点异常分数的影响,为此,与传统图神经网络使用平均池化或者最大池化不同,本文方法中的aggregation 使用可学习的聚合方法。对固定的k个近邻点可以通过一个全连接层来学习节点之间的潜在联系,该映射关系表示如下:
其中:F表示全连接神经网络;Θ是神经网络的权重;是经过信息聚合之后xi的节点信 息;e(i,j)表示从节点xi到节点xj的向量。节 点之间的信息聚合操作如图3 所示。
图3 节点间的信息聚合示意图Fig.3 Schematic diagram of information aggregation between nodes
3)update。update 是通过聚合信息和上一层信息来更新预测节点。update 函数得到aggregation 函数映射后的值x(i1),通过式(8)更新输出的xi的异常分数。
A-GNN 模型的具体步骤定义如表1 所示。
表1 A-GNN 的信息传递步骤定义Table 1 Definition of information transmission steps for A-GNN
综上可以看出:A-GNN 的异常因子同时利用了角度和距离进行异常分数的初始化;可学习的聚合方法增强了aggregation 操作;利用图神经网络的信息传递机制可以让各个节点之间相互学习,使得方法不受近邻点个数k的限制。因此,A-GNN 模型具有更优的异常检测能力。
实验所使用的6 个数据集均为开源数据集,可以在OODS 中下载获取。6 个数据集均为真实世界中的实际数据,且在众多研究中被广泛使用,它们包含了不同维度的数据,从最少的9 维(GLASS)到最多的400 维(SPEECH),可充分展示本文方法对数据维度的良好适应性。表2 中列出了数据集的基本信息。
表2 数据集基本信息Table 2 Basic information of datasets
为了说明本文方法的有效性,将其与以下方法进行对比:经典的异常检测方法IFOREST、KNN、LOF 和OC-SVM;基于角度的异常检测方法fastABOD;基于深度学习的异常检测方法AE、VAE、DSVDD 和LUNAR。各方法的简要介绍如下:
1)IFOREST[11]:采用随机切割方式将异常数据隔离在一个独立子空间。
2)KNN[8]:通过选取k个近邻点作为标签来评判节点异常。
3)OC-SVM[12]:通过核函数将数据映射到超平面上寻找异常。
4)LOF[11]:通过近邻节点计算密度,基于密度判定异常点,能够计算出局部异常点。
5)fastABOD[19]:通过选取k个近邻点构造角度方差进行异常打分。
6)AE[13]:根据重构误差来判定异常点,如果误差大则为异常,否则为正常。
7)VAE[14]:采用数据重构概率来评判异常,具有高重建概率的数据点被归类为异常。
8)DSVDD[15]:将OC-SVM 中核函数的映射替换为神经网络。
9)LUNAR[17]:提出基于距离的图神经网络异常检测框架。
在本文实验中,设置训练轮次为200,在GNN 网络节点aggregation 过程中所使用的全连接网络F由5 层大小为256 的全连接层组成,除了最后一层输出层激活函数使用Sigmoid 外,其余层所使用的激活函数均为tanh。训练过程中使用均方误差(MSE)作为损失函数,利用Adam 进行优化,学习率为0.001,衰减控制设置为0.1。
表3 所示为本文方法与对比方法在6 个数据集上的实验结果,所有数据均为5 次实验取平均的结果,最优结果加粗标注,涉及近邻点的方法(KNN、fastABOD、LOF、A-GNN)的k均设置为10,评测指标为ROC 曲线下面积(AUC)。
表3 在不同数据集上的实验结果Table 3 Experimental results on different datasets %
从表3 可以看出:本文方法在5 个数据集上都有最优表现,在另外的1 个数据集(SATELLITE)上精度表现次优,且非常接近最优方法LUNAR,在数据集SPEECH 上,本文方法的AUC 提升最为明显;与同样基于角度进行异常检测的方法fastABOD 对比,本文方法在所有6 个数据集中均表现更优,这一结果说明本文通过构建GNN 进行异常分数计算,能有效利用节点间的信息交互提升节点异常判定精度;与基于GNN 进行异常检测的方法LUNAR 相比,本文方法在5 个数据集上表现更优,最大AUC 提升达38.72 个百分点(数据集SPEECH),这说明了在GNN中引入基于角度的异常因子计算方法能有效提高异常检测精度。从上述实验结果可以看出,本文方法具有良好的异常检测精度,适用于各类维度的数据集,具有较好的通用性。
从表3 的实验结果还可以看出,在一些高维数据集(如SPEECH)上,本文方法相对其他方法有显著的精度提高,而在其他一些高维数据集(如SATELLITE)中精度提高则不明显。为了进一步探究本文方法产生优势的内在因素,使用主成分分析(PCA)方法对数据集进行变换,结合数据特点进行结果分析。先给出非形式化的“伪高维数据”定义,所谓的“伪高维数据”是指原始数据具有很高的维度,但数据各维度之间相关性较大,数据本身所隐含的信息并不需要很高的维度便可以表达。与之对应的是“真高维数据”,“真高维数据”是指数据具有很高的维度,同时其各维度之间相关性较小,降维操作很难在保留数据隐含信息的同时大幅降低数据维度。
对实验所用的6 个数据集进行PCA 变换,把变换后的维度按特征方差进行降序排列,并计算累积成分信息含量,结果如图4 所示。从图4 可以看出:SPEECH、IONOSPHERE、GLASS 等3 个数据集的曲线更加平缓,表明数据经PCA 变换后各个维度的重要性较为均衡,其信息能够均衡地分布到各个维度上;而其他几个数据集(SATELLITE、SATIMAGE-2和WINE)的信息大都集中于少数的重要维度中,如WINE 的一个维度中就包含了占总体85.8%的信息含量。
图4 6 个数据集的PCA 结果累积信息量与维度关系Fig.4 The cumulative information and dimensional relationship of PCA results of six datasets
表4列出了在信息含量占比为85%左右时对应的最大主成分个数以及维数占比(**表示本文方法表现格外优秀的数据集),如SPEECH、IONOSPHERE、GLASS 在信息含量占比接近85%时其所需主成分个数分别为256、14、3,分别占总维度数的64.00%、42.42%、33.33%,而在其他几个数据集中信息含量大于85%时其主成分维数均只占总维度数的10%以内,如SATELLITE 数据维度为36,但实际只需PCA变换后的2 个主成分(5.56%)便占其总信息含量的85.2%。从以上 分析可 以看出,SATELLITE、SATIMAGE-2 和WINE 可以看作“伪高维数据”,而SPEECH 则是“真高维数据”。结合表3 的异常检测精度可以发现,基于角度的方法在“真高维数据集”上具有更好的表现,如fastABOD 和本文方法在SPEECH 数据集上异常检测效果较好。本文方法不论在“真高维数据”还是“伪高维数据”的数据集上都表现突出,具有更好的适应性。
表4 PCA 降维至85%时信息保留量和维数的关系Table 4 Relationship between information retention and dimensionality when PCA dimensionality is reduced to 85%
为了进一步考察A-GNN 中参数k的设置对本文方法异常检测精度的影响,对k设置不同的值并进行实验,同时对比3 种需要考虑近邻元素个数的方法(KNN、fastABOD 和LOF),实验结果如表5~表10所示。
表5 在SPEECH 数据集上参数k 的取值对方法AUC 的影响Table 5 Impact of parameter k values on methods AUC on the SPEECH dataset
表6 在IONOSPHERE 数据集上参数k 的取值对方法AUC 的影响Table 6 Impact of parameter k values on methods AUC on the IONOSPHERE dataset
表9 在WINE 数据集上参数k 的取值对方法AUC 的影响Table 9 Impact of parameter k values on methods AUC on the WINE dataset
表10 在GLASS 数据集上参数k 的取值对方法AUC 的影响Table 10 Impact of parameter k values on methods AUC on the GLASS dataset
上述表格展示了本文方法A-GNN 和KNN、fastABOD、LOF 的检测精度对比结果,实验中分别设置k=5、10、20、50、80,以观察不同近邻点个数下的算法精度,其中还列出了各种k值情况下的平均精度进行对比。从异常检测平均表现上看,本文方法的AUC 平均值在6 个数据集上均明显优于其他方法。在具体数据方面,除了KNN 方法在数据集SATIMAGE-2中k取值为50、80 这2 种情况下的AUC 略高于本文方法外,其他所有数据集在各种k值设置下本文方法都表现最优。
近邻算法的精度在很大程度上受到近邻点k的取值的影响,一个合适的k取值往往能在很大程度上影响算法精度。从上述结果可以看出,本文方法在不同k取值情况下都能得到最好的AUC,且波动较小。如在表6 的数据集IONOSPHERE 中,当k从5 增加到80 时,KNN、fastABOD、LOF 的AUC 最大变化分别为8.77%、4.80%、9.11%,而A-GNN 方法的AUC最大变化为2.00%。
结合图神经网络的特点分析,本文方法利用多次迭代训练和图神经网络的信息传递机制学习各个节点之间的潜在联系,让算法能够有效学习所有k个邻居的信息,而其他的近邻算法的近邻关系是算法一开始就预先设置好的,没有办法对其进行有效利用,因此受k值的影响较大。上述实验结果也验证了本文方法受k值影响较小,具有更好的鲁棒性。
为了验证方法的运行效率,将本文方法在k=5和k=10 两种情况下的运行时间与9 种异常检测方法进行对比,结果如表11 所示。从表11 可以看出:IFOREST、KNN、OC-SVM、LOF 等传统异常检测方法运算量较小,具有较高的效率;与基于角度的异常检测方法fastABOD 相比,在设置相同的k=10 时,本文方法需要更多的计算时间,当设置k=5 时,本文方法与fastABOD 效率接近,但是,由于利用了GNN 节点之间的信息传播能力,因此A-GNN 的检索精度无论是在k=10 还是k=5 情况下都比fastABOD 在近邻点k=10 时更高(如表5~表9 所示);与深度学习异常检测方法AE、VAE、DSVDD 相比,本文方法的运行速度更快,AE、VAE 这类基于重构的深度学习方法需要更长的训练时间,而DSVDD 则需要不断优化映射函数以找到最优参数,本文方法使用的图神经网络并不复杂,训练过程更加快速;与LUNAR 相比,由于本文方法使用角度作为评测指标,每一个节点都需要与k个近邻 节点构造k(k-1)/2 个角度,而LUNAR 使用的是距离,其每一个节点只需要与k个节点计算k个距离便可,因此,本文方法需要更多的运算时间。
表11 方法运行时间对比Table 11 Comparison of running time of methods 单位:s
现有异常检测方法多采用以欧氏距离为基础的异常评价指标,但在高维空间中,“维度灾难”问题会模糊数据之间的距离,从而使得这类异常评价指标失效。本文提出一种基于角度的图神经网络异常检测方法,该方法采用以角度为基础的方式初始化节点异常因子,利用训练数据构建图神经网络,并通过图神经网络节点信息交互让近邻节点之间互相学习以实现异常评判。此外,为了解决图神经网络训练中正常数据和异常数据不均衡的问题,本文通过对数据空间的均匀采样和数据扰动来有效增加异常数据,使得训练数据中正负样本比例接近1∶1,从而提高模型训练效果。在6 个自然数据集上进行实验,结果表明:与9 种对比方法相比,该方法能够大幅提升各种维度空间上的异常数据检测精度,特别是在一些“真高维数据”上异常检测的AUC 提升达40%以上,说明在高维空间中利用k近邻节点角度方差作为异常评估指标的有效性;本文方法利用GNN 节点间的信息交互能降低k值对检测结果的影响,使方法具有更强的鲁棒性。下一步将改进基于角度的评价方法以减少运算量,提高运行效率,此外,将本文方法应用于高维流数据的异常检测任务也是今后的研究方向之一。