NetWalk: A Flexible Deep Embedding Approach for Anomaly Detection in Dynamic Networks
文章来源
本文收录于Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining(KDD 2018)
论文介绍
近年来,许多实际应用中的网络大多规模大且具有动态性,如社交媒体网络和公共卫生网络。对于一个动态网络,实时检测结构异常是至关重要的。最近,网络嵌入已经被证明是学习网络中顶点的低维表示的一个强大工具,它可以捕获和保持网络结构。然而,大多数现有的网络嵌入方法是为静态网络设计的,因此可能不完全适合网络表示需要不断更新的动态环境。本文提出了一种新的动态网络的异常检测方法NetWalk,这个方法的网络表示可以随着网络动态演化而动态更新。
模型框架
本文模型的主要思路是提出一种动态图embedding的方法,再用其节点表示进行异常检测,这种方法也是异常检测的常见方法。模型首先通过clique embedding将动态网络的顶点编码为向量表示,这由把从动态网络导出的每条路径的顶点表示的成对距离和深度自编码器重构误差作为全局正则化联合最小化训练得到。为了处理动态网络快速演变的本质,本文设计了一个reservior sampling方法来更新节点表示。在学习了低维节点表示的基础上,采用基于聚类的方法进行异常检测。模型框架图如下:
模型实现
一、Network Walk生成
在一个网络G(E,V)中,对于每一个节点v1∈V,从节点v1开始生成对应l步的Network WalkΩv1=
其中,Dvi,vi为节点vi的度。
二、学习网络表示
本文提出了一种网络embedding算法Clique Embedding,这个方法利用一个深度自编码器神经网络来学习向量表示的顶点,根据一系列Network Walk,同时在每个walk中最小化所有顶点之间的成对距离。具体实现如下图所示:
模型的损失函数分为四项,第一项是Clique Embedding Loss,寻求在nl/2层的embedding空间中最小化每个network walk的所有节点之间的成对距离。第二项是使用l2范式来最小化自编码器的重构误差。第三项由于输入和输出向量都具有稀疏性,因此考虑了一个具有稀疏参数的自编码器,并用Kullback-Leibler散度对其进行了惩罚。第四项是参数正则化项。公式如下:
三、边编码
学习好顶点的表示后,使用Hadamard operator 进行边的编码。编码很灵活,可以取2个顶点取平均或者点乘等等。
四、网络表示动态更新
为了处理动态网络快速演变的本质,本文设计了一个reservior sampling方法来更新节点表示。Network为每个顶点维持一个reservoir。其定义如下:
新的边到来时,更新策略如下:
总的来说,每个顶点有个reservior,这个reservior的大小是固定的。新来边的时候,针对里面的每个顶点,都会以概率p替换。删除边的时候只针对删除了的顶点进行替换。reservior更新图如下:
当有边变化的时候,通过reservior去产生新的walk更新网络。
五、检测异常
本文对于异常的定义如下:给定节点表示或者对应的边表示,将现有节点通过聚类分成k个簇,检测现有节点或者边是否属于现有簇。每个节点的异常分值与它与聚类中心的距离有关。
实验结果
本文实验数据集如下:
本文对比实验分为静态和动态两种。结果分别如下图:
动态保持性能评估如下:
最后,本文还对模型进行了参数灵敏度分析,结果如下图:
总结
本文提出了一种新的动态网络的异常检测方法NetWalk,这个方法的网络表示可以随着网络动态演化而动态更新,并根据节点或者边的表示检测异常。和Addgraph相比来看,这个是利用Walk提取特征,而Addgraph是利用GCN提取特征。Addgraph针对新来的图结构利用short和long-term进行更新。本文只是增量维护。两者都主要关注怎么进行Embedding,而不是说怎么去定义异常。如果你对这篇论文感兴趣的话请点阅读原文获取论文链接。