原文:Ding K , Li J , Bhanushali R , et al. Deep Anomaly Detection on Attributed Networks[M]// Proceedings of the 2019 SIAM International Conference on Data Mining. ACM, 2019.
属性图模型已经成为当前信息基础检测的重要组成部分,尤其是在知识发现过程中,节点的属性成为是对原始网络拓扑结果的一种补充。最近,属性网络的异常节点检测因其在网络安全、金融和医疗保健等行业的普遍应用而成为了研究热点。而当前的属性网络异常检测方法大都是通过ego网分析、社区检测或是子空间选择等浅层学习机制。显然这些方法并不能解决属性网络异常检测的问题。例如,这些方法往往会面临网络稀疏性和数据非线性问题,它们并不能捕捉不同信息形式的复杂交互,因此会大大影响异常检测的效果。针对这些挑战,本文提出了一种新的深度模型来解决属性网络的异常检测问题。该方法利用当前流行的图卷积网络对图的结构和节点属性进行有效建模,同时该深度模型利用深度自编码器来解决异常检测问题。GCN和自编器的协同作用可以通过衡量图的结构和属性的重构误差来实现异常检测。最后通过大真实数据集中进行了大量的实验来验证了本文方法的有效性。
当前图模型中的异常检测方法主要是无监督的,通常计算代价较高。一类方法主要是基本ego网和社区发现的方法,该类方法主要是找到ego网中或是同一社区中的异常点。另一类方法主要是提取节点的特征,在同一特征子空间中找出异常节点。最近残差分析方法作为一种新的异常检测方法成为了研究热点。但是在属性网络中,依然存在如下问题:
1 数据稀疏性
由于在现实世界中属性网络通常非常稀疏,基于ego网和社区发现的方法的效果并不好,因为它们高度依赖于节点之间的关联。
2 数据的非线性
基于节点特征的子空间选择方法严重依赖于数据的线性机制。
3 复杂的交互模式
属性网络处理难度主要在于它需要处理两个不同空间的数据(属性特征和结构特征),而且需要在同一特征空间中实现异常检测。
为了解决以上问题,本文利用图卷积网络建模属性网络。GCN以属性网络的拓扑结构和节点属性为输入,通过堆叠多导的线性单元和非线性激活函数来学习具有区分性的节点向量表示。尽管GCN已经成为对属性网络进行建模的重要工具,并且在半监督节点分析中取得了不错的效果,但是如何将其应用到异常检测仍然是一个未解决的问题。为此,本文提出了一种新的图卷积自编码框架DOMINANT来支持属性网络中的异常检测。首先,DOMINANT利用图卷积网络作为编码函数把属性图映射到一个紧凑的低维向量空间中;然后,利用解码函数重构属性网络中的拓扑结构和节点属性。在编码和解码阶段节点的重构误差被用来作为属性网络中异常节点的评判标准。本文的主要贡献如下:
1 系统的分析了当前浅层异常检测方法的局限,并陈述了在属性网络中研究深层异常检测算法的意义;
2 设计了一种有效的图神经网络框架DOMINANT,能在同一框架下实现对属性网络结构和节点属性的无缝建模。提取的框架可以通过衡量节点的重构误差来实现异常检测。
3 大量的实验评估说明了提出的框架有高效性。
属性网络的异常排序问题:给定一个属性网络G,以及其邻接矩阵A和节点属性矩阵X,实现对于所有顶点的一个异常度排序。
本节将详细介绍本文提出的DOMINANT框架。
整体的流程图如上图所示。通过上图可以看出DOMINANT的主要模块是深度自编码器,主要包括三个部分:属性网络编码、拓扑结构重构解码器和属性重构解码器。属性网络编码器在同一框架下实现对属性网络的拓扑结构和属性的无缝建模,然后利用GCN实现了顶点的特征表示学习。结构重构解码器通过节点的特征表示重构网络拓扑结构。属性重构编码器通过节点的特征表示重构属性网络中节点的属性。
当前研究表明,原始数据与估计数据之间的差异(其实就是重构误差)可以在一定程度上反映数据集中的异常实例。具体来说,具有较大重构误差的数据实例更有可能被认为是异常,因为它们的模式明显偏离大多数情况,无法从观测数据准确地重构。在各种基于重构的异常检测算法中,深度自编码器具有最好的性能。深度自编码器是一种深度神经网络,它是通过将多层编码和解码函数堆叠在一起,以一种无监督方式学习数据的潜在表示。深度自编码器已经在多个领域取得了不错的效果。
形式化的描述可以表示为给定一个输入数据集X,通过编码函数Enc()把数据映射到低维特征空间中,然后利用解压函数Dec()根据特征空间的表示重构原始数据。
整个学习过程可看对如上所示的代码函数的学习。深度自编器可以通过在编码解码过程中应用多层线性单元和激活函数来捕捉高维输入数据的非线性信息,这个特性本身是深度学习所具有的特性,因此在这方面要明显优于传统的浅层学习方法。因此,本文采用深度自编码机制来解决属性网络的异常检测问题。
属性网络编码过程不仅需要考虑网络结构的编码还需要实现对所有节点属性的编码。然而,传统的深度自编码器只能用独立同分析的属性-值数据,因此不能移植到我们的应用场景中。设计一个有效的编码器来捕获属性网络底层特征就成为本文所面临的一个关键挑战,因为需要同时解决网络稀疏性、数据非线性和多模式交互三个问题。针对这些问题,本文提出了一种新的属性网络编码器。具体来说,GCN在学习节点特征表示时考虑了高阶节点的邻近性,从而减轻了节点间的链路之外的网络稀疏性问题。同时,通过多层非线性变换,GCN能捕属性网络中数据的非线性特征和两种信息模态之间的复杂交互。
本质上,GCN把卷积操作扩展到到网络数据的谱域中,通过谱卷积函数学习分层的潜在特征表示。
其中, 表示卷积层l的输入,
表示卷积层的输出。属性网络的属性矩阵X作为第一层的输入也就是
。
就是需要训练的神经网络的加权矩阵。每一层的图卷积网络都可以表示成如下函数:
其中, ,
是一个对角矩阵,对角上的值为
,因此可直接计算
。显然σ() 是一个非线性激活函数,例如Relu。
对于属性网络中的所有节点都是共享的。对于给定的属性矩阵X,属性网络中每个节点的K跳邻居都可能通过连续叠加多个K卷积层实现。因此,embedding结果Z不仅仅编码了节点的属性信息,同时也编码了该节点的K跳内邻节点的信息。本文使用了3卷积层来构建属性网络的编码器。
本小节主要介绍如何通过编码结果重构原始的网络结构。A表示网络的临街矩阵,A 为预估解码后的邻接矩阵,那么网络结构的重构误差可表示为RS=A-A ,该重构误差可以用来评估网络结构的异常。也就是说如果一个节点,它自身的结构信息可以通过结构重构解码器近似得到,那么该节点属于异常节点的概率就较低,相反,一种节点的重构误差较大,那么它就有很大概率是异常节点。解码过程就是以上一小节的特征表示Z为输入,预测两两节点之间是否存在边,感觉类似链路预测。
本质就是基于属性网络编码器的输出Z训练一个链路预测层,可表示为:
与结构重构类似,只不过不是预测两两节点之间的关系,而是根据特征表示Z预测每个节点的属性信息。
到此,已经详细的介绍了属性网络的结构和属性的编码解码过程。为了统一的学习重构误差,目标函数可以表示为:
这个就很好明白了,就是把结构重构误差和属性重构误差进行加权求和。最终就是在最小化目标函数的情况下迭代的求解编码过程的向量表示。最终利用重构误差进行异常检测。权值矩阵的计算采用梯度下降法。在经过一定次数的迭代之后,可以通过如下公式计算每个节点的异常得分:
图卷积网络的计算复杂性是随着网络中的边的数据线性增涨的。本方法的复杂性是O(mdH+n2) ,m表示属性网络的属性矩阵非零元素的个数据,d表示属性矩阵的特征的维度,H表示图卷积不同层特征数据之和,n表示属性网络中节点的个数据。
实验就不详细说明,这里简单介绍一下,数据集使用了三个分别是:BlogCatalog、Flickr和ACM。与之对比的方法有五个分别是:LOF、SCAN、AMEN、Radar和ANOMALOUS。具体的方法可以参考原文的参考文献。Radar和ANOMALOUS方法在github上都有原代码,有兴趣的可以去看看。
通过对比实验可以看出,除了在Flickr数据集中小数据量中没有ANOMALOUS算法好外,在准确率和招回上都优于其他方法。