SNAPSKETCH:基于图表示学习的图流异常检测模型
论文标题 | SNAPSKETCH: Graph Representation Approach for Intrusion Detection in a Streaming Graph
论文来源 | MLG 2020
论文链接 | http://www.mlgworkshop.org/2020/papers/MLG2020_paper_1.pdf
源码链接 | https://github.com/rpaudel42/SnapSketch
TL;DR
论文中提出一种无监督的图表示学习方法 SNAPSKETCH 用于图流的异常检测问题。主要想法是基于随机游走和 Sketching 技术来生成固定大小的图向量表示,然后基于编码后的向量使用 RRCF 进行异常检测,可以达到实时异常检测效果。实验中验证本文中的方法优于其它 baselines,包括 SpotLight 和 StreamSpot。
Problem Definition
给定一个图流,目标是学习到一个 sketching function,使得 保留了图的结构属性和特征。
对于图流中 时刻的图 , 中生成长度为 的有偏随机游走路径为,论文中的名词定义如下:
- shingle:路径 中连续的子序列。
- n-shingle:路径 中长度为 的连续子序列,针对 中每个节点生成的 shingle 集合,需要选择 个 Discriminative shingle 集合 以随机概率 来映射到一个 维向量,Discriminative shingle 是指出现频繁的 n-shingle。
- Sketching:数据表示技术,例如将图 映射到一个低维的向量 且同时保留了图的原始属性。
- Cost vector: ,每个元素表示 的数量。
论文想法是以映射向量 和计数向量 来将图 映射到低维向量,对此表示好奇 🧐,没有用到任何 deep learning 方法。
Algorithm/Model
论文主要的算法流程如下图所示:
主要包含两步:
- 基于有偏随机游走生成 Shingles。
- Discriminative Shingle 映射成向量。
随机游走
对于图 中的节点,长度为 随机游走路径 符合以下分布:
其中 表示节点 和 间未标准化的转移概率即边的权重, 表示标准化常数。为了使邻居采样同时考虑到 BFS 和 DFS,论文中采用 node2vec 中相同的思路对于转移概率重新进行计算,
其中 表示节点 和节点 间的最短距离。
基于随机游走生成的路径,可以得到集合,接下来就需要把 映射成 维向量。
哈希向量映射
向量映射的流程如下图所示:
解释说明下:例如上图 和, 表示不重复的 n-shingle 集合, 和 表示每个图中 n-shingle 频率,可以通过 和 来计算 和 的相似度。
如果仅使用 向量来表示图,如果 中生成不同的 n-shingle 那么 的维度将会上升,因此论文是使用一种简单的哈希技术来将 topK discriminative n-shingles 进行映射而不是所有的 n-shingles 。
topK discriminative n-shingles 是指 个最频繁的 n-shingles,表示为 ,可以理解为从图中选择具有代表性的路径来表示图, 值太大能充分地表示图但是占用内存更大, 值小能够减少内存但是不能充分地区分图,因此这个超参数选择是个技术活。
Hashing Function
现在对于集合 进行映射,先初始化 维向量映射向量为 符合概率为 的随机分布:
使用映射向量 图 可以映射到 维向量,
其中 表示 的 维映射向量, 是 topK discriminative n-shingles 的计数向量,
其中 表示 中边权重之和, 表示图 中 的频率。
得到了图固定大小的向量表示后,就可以使用一些现有的异常检测算法来进行异常检测,论文中使用的是随机割森林算法 (RRCF) 。整体的算法流程如下图所示:
Experiments
论文中使用的数据集如下:
对于 SNAPSKETCH 论文参数设置:。这当然需要根据特定的场景进行设置。
实验效果如下:
Thoughts
- 论文中提供了一种 sketching 技术对有向加权图进行向量表示,在这个 graph embedding + graph neural network 盛行的时代算是一股清流,对于不采用黑盒方法的场景值得借鉴。
- 存在的问题主要是模型参数比较多,而且是超参数不好优化。