图异常节点检测是一项相对新兴的机器学习任务,其在大量的领域都有应用。尽管近年来为这项任务开发的算法越来越多,但目前还没有针对性能评估的综合标准设置。因此,我们很难理解哪些方法在广泛的环境下都有效。为了弥补这一空缺,我们提出了据我们所知的第一个静态属性图上无监督异常节点检测的综合基准测试,并称之为BOND,该基准测试技术有以下亮重点:
1. 我们对从经典的矩阵分解到最新的图神经网络中的十四种异常节点检测方法的性能进行了测试。
2. 通过在九个真实数据集上进行测试,我们的基准评估了不同的检测技术对两个主要异常类型的检测结果,即人造异常和“自然”(即真实非人造的)异常。
3. 我们使用现有的随机图生成技术生成了一组不同大小的合成图数据集,使我们能够比较不同异常检测算法的运行时间和内存使用情况。
基于我们的实验结果,我们讨论了现有的图异常检测算法的优缺点,并强调了未来可能的研究方向。重要的是,我们的代码全部开源是免费提供的,这意味着其易于扩展:https://github.com/pygod-team/pygod/tree/main/benchmark
论文链接:
https://arxiv.org/abs/2206.10071
代码链接:
https://github.com/pygod-team/pygod/tree/main/benchmark
一、引言
图异常检测是指识别图中哪些节点是异常的。 这是一个关键的机器学习问题,并且在众多领域中都有应用,如社交网络中垃圾邮件发送者检测、传感器故障检测、金融诈骗犯识别以及防御图对抗攻击。与经典的表格数据和时间序列数据上的异常检测不同,图异常检测面临着额外的挑战:
1. 图结构数据通常携带更加丰富的信息,因此需要更强大的机器学习模型来学习信息表示。
2. 而如果使用更加复杂的机器学习模型,在训练时运行时间和内存消耗方面的计算成本都会更高,这对时间关键性型(即低时间预算)和资源敏感型(即有限的GPU内存)应用程序提出了挑战。
尽管图异常检测具有很高的重要性并且近年来研究者们已经开发了众多算法,但对于图异常检测还没有综合的评估基准,我们认为这阻碍了图异常检测算法的发展和理解。实际上,最近的一项图异常检测的综述[55]呼吁进行“系统基准测试”,并将其描述为评估图异常检测技术性能的关键。我们注意到,现在已经有了针对以下方面的评估基准,包括通用图挖掘(如OGB)、图表示学习、鲁棒性评估、图对比学习、全图(graph-level)异常检测以及表格数据和时间序列数据异常检测,这些并不在我们所考虑的任务范围内,我们现在正式定义如下:
我们注意到还有其他图异常检测问题(例如:特征向量可能与时间有关,在一些异常被标记时可能变为监督的,节点和边可能随着时间变化等),但是我们只关注前文所述的OND问题,因为它是最普遍的。对于OND,算法发展现状有着以下的限制:
- 缺少一种全面的评估标准: 通常只有有限的OND算法在少量数据集上进行测试,这使得我们不清楚经验结果能够在多大程度上适用到更广泛的环境。并且我们注意到在不同的应用领域中,构成异常的原因可能变化很大,同时也很难以领域专家一致同意的方式进行精确定义,这一事实使得泛化的问题更加严峻。
- 只考虑到了有限的异常类型: 通常,研究者只考虑少数类型的异常(例如,在真实数据集中注入特定类型的合成异常),这使得人们很难理解图异常检测算法如何检测更多类型的异常节点,包括那些“自然”(非合成)的异常节点。
- 对在时间和空间上的计算效率的分析有限: 现有的工作主要集中在检测精度上,而对运行时间和内存消耗的分析有限。
为了解决上述的所有限制,我们为OND问题建立了第一个全面的基准检测,称为BOND(即对静态属性图上的无监督异常节点检测基准测试的缩写)。为了容纳多种算法,我们专门创建了一个用于图异常检测的开源python库(PyGOD),它提供了数十种最新的图异常检测算法,并且有统一的API和优化。同时,PyGOD还包含了多个非图的基础模型,最终总共产生了14种具有代表性的不同的图异常节点检测的方法,这个库可以很容易地扩展以容纳其他的异常检测算法。
我们的工作有以下亮点:
1. 第一个全面的节点级图异常检测基准。 我们研究了十四种异常检测方法,包括经典方法和深度方法,并且比较了它们在九个数据集上的优缺点。
2. 异常节点的统一分类方法。 我们将现有的异常节点分为两种主要类型:结构(structure)异常和上下文邻域(context)异常。我们的结果表明大多数方法都不能平衡对这两种主要类型异常的检测性能。
3. 发现了现有的深度图异常检测方法存在的系统性能缺陷。 令人惊讶的是,我们在BOND中的实验结果显示,大多数经过基准测试的深度图异常检测方法在对自然异常的检测上没有达到理想性能。
4. 同时评估检测质量和计算效率。 除了常见的性能评估指标(如ROC-AUC),我们还测量了不同算法的运行时间和GPU内存消耗作为其效率度量。
5. 可重复性和可访问的基准测试工具包。 为了促进未来算法的可访问性和公平评估,我们在以下位置提供免费的BOND代码:
https://github.com/pygod-team/pygod/tree/main/benchmark
我们在第2 节中简要描述了现有的OND方法,在第3节中描述了BOND的概念,然后在第4节中提供了详细的实验结果和分析。在第5节中对论文进行了总结,并讨论了未来的工作。
二、相关工作
在本节中,我们将简要介绍关于异常节点检测的相关工作。请参考[2]和[55]以对经典和基于深度学习的图异常检测器进行更全面的了解。我们已经在PyGOD中实现了本节中讨论的大多数算法。
经典的(非深度)异常节点检测。现实世界的证据表明,异常节点在结构或属性方面与正常的节点不同。因此,早期的异常节点检测工作采用基于图的特征,如中心性度量和聚类系数,从图中提取异常信号[2]。基于学习的方法被用来灵活的编码图信息以检测异常节点,而不是人为挑选特征。这些基于学习的方法的包括基于基于矩阵分解(MF)[3,50,60,69],基于密度的聚类[7,29,75],和关系学习的方法[42,63]。由于上述大多数方法对图/节点类型或先验知识都有约束,因此我们在BOND中只包含了SCAN[75],Radar[50]和ANOMALOUS[60]来表示这类方法。
深度异常节点检测。深度学习的快速发展及其在图数据中的应用已经使异常节点检测的主要方法从传统的方法转移到神经网络的方法[55]。例如,自动编码器(AE)[38]是一种神经网络结构,其通过尝试从编码中重建原始数据来学习原始数据的编码,现已成为检测异常节点的常用模型[16,25,39,64,70,80]。AE可以以无监督的方式学习,因为我们的目标是重建原始数据,因此不需要单独尝试预测标签。基于AE的异常检测背后的原理的启发是,我们可以使用AE重构误差作为异常分数;具有较高重构误差的数据点将更有可能是异常。
最近,图神经网络(GNN)在许多图挖掘任务中取得了优越的性能[17,18,40,71,82]。GNN的目标是学习图中每个节点的编码表示,并考虑到节点属性和底层的图结构。GNN学习到的编码表示可以体现对异常检测有用的复杂模式。因此,GNN在检测图中的异常节点时也很常用[19,72,87,54,76]。注意,GNN可以与AE结合;在构建AE时,我们需要指定编码器和解码器网络,它们可以设置为GNN。
我们指出采用生成对抗网络(GAN)来检测异常节点也是可行的[11]。GAN学习如何通过同时学习生成器网络(可用于随机生成假数据)和鉴别器网络(试图判断一个数据点是真实的还是假的)来生成类似于真实数据的假数据。自然地,异常可以被认为是被认为更“假”的数据点。
在众多的深度异常节点检测器中,我们迄今为止已经实现了9个(见表1)并包含在BOND中,我们试图让这些节点在它们的方法上更加多样化。
三、BOND
在本节中,我们将提供对BOND的概述。我们首先在3.1节中定义了两个异常类型。然后,我们详细介绍了BOND中的数据集(3.2节)、算法(3.3节)和评估指标(3.4节)。
3.1 异常类型
许多研究人员从不同的角度定义了细粒度的异常节点类型[2,3,16,33,50,55]。在本文中,我们根据真实世界的异常模式,将现有的异常节点定义划分为两种主要类型:结构异常和上下文邻域异常,如图1所示,定义如下:
定义2(结构异常)结构异常是密集连接的节点,而不是稀疏连接的规则节点。
结构异常出现在许多实际应用中。例如,有组织的欺诈团伙成员经常串通进行恶意活动,可以被视为形成一个整体图的密集子图(节点代表不同的人)[2]。另一个例子是,合作的机器人账户转发同一条推文将形成一个紧密连接的共同转发图[29,58]。请注意,一些论文[50,55]也将不属于任何社区的孤立节点视为结构异常(即,它们只有几条边连接到任意社区),这与我们上面的定义不同。由于我们没有现有的异常检测方法来检测这些孤立的异常节点,所以我们在BOND中不包括这种类型的异常。
定义3(邻域异常)邻域异常是指其属性与相邻节点有显著不同的节点。
邻域异常的一个例子是计算机网络中的一个被损坏的设备[2]。邻域异常的定义类似于在经典的基于近邻的异常检测方法[1]中定义异常的方式。
一些研究人员将其属性不同于其他所有节点的节点称为全局异常[55]或邻域异常[50]。我们在BOND中不考虑这些异常,因为我们发现它们实际上并没有使用图结构;相反,这些异常可以使用表格数据异常检测器[28,92]来检测。
我们在定义3中定义的邻域异常在之前的工作中也被称为属性异常[16]或社区异常[50,55]。我们认为,把他们称为邻域异常是一个更准确的术语。原因是一个“属性异常”听起来似乎只依赖于节点属性(即特征向量),它类似于全局异常[55]的定义,但事实上这并不是这个术语的含义。与此同时,图论中“社区”的术语通常是指节点间边的边密度,因此“社区异常”可能被误解为我们所说的定义2中的结构异常。在本文的其余部分,对于结构和邻域异常,我们总是分别使用定义2和3。
重要的是,请注意,在真实的数据集中,对自然的(非合成的)异常节点不需要严格地区分是结构异常还是邻域异常。事实上,是什么使它们成为异常不需要明确说明,它们可能既不是结构异常也不是邻域异常,或者它们甚至可以作为这两种类型的混合形式出现!这使得检测自然异常比检测遵循特定模式如定义2和3的合成异常更困难。
3.2 数据集
为了全面评估现有异常节点检测算法的性能,我们调查了以往文献中使用的包含自然异常的各种真实数据集。值得注意的是,一些标数据集在异常节点检测问题上超出了我们所考虑的范围或是不使用图结构或节点属性/特征向量。例如,YelpChi-Fraud [22]、Amazon-Fraud [22]和Elliptic[74]是三个为监督的节点分类而设计的图数据集;然而,异常节点在图结构方面具有有限的异常形式。来自[43]的Bitcoin-OTC、Bitcoin-Alpha、Epinions和Amazon-Malicious是四个节点没有属性的二分图。DARPA [78]、UCI Message[94]和Digg [94]是三个带有自然异常边的动态图,它们也不在我们的问题范围之内。
在BOND中,我们使用以下数据集。首先,由于具有自然异常节点的开源图数据集数量有限,我们使用了三个没有自然异常节点的真实数据集,我们将合成异常节点注入其中。具体来说,我们使用了来自三个领域具有不同规模的节点分类基准数据集(Cora [66]、Amazon [67]和Flickr [81])。接着,我们使用6个包含自然异常的真实数据集(Weibo[86]、Reddit [44,73]、Disney [65]、Books [65]、Enron[65]和DGraph [32])。
最后,我们还使用了使用了[36]的随机算法生成的纯合成数据,该算法能够生成不同规模的图;这个随机生成过程提供了一种受控的方式,使我们可以在运行时间和内存使用方面评估不同的异常检测算法的计算效率。表2给出了所使用的真实数据集的一些基本统计数据,并在Appx A.1.中提供了更多的数据集细节。
为了生成我们在3.1节中定义的两种类型的合成异常节点,并伪装它们,使它们更难被简单的异常检测方法检测,我们稍微修改了一种广泛使用的方法[16,25,11,80](如下所述)。这些合成异常与缺乏自然异常的真实数据集(Cora,Amazon,Flickr)和随机生成的图数据一起使用。在随机异常注入过程中,对于我们正在处理的给定图 G ,我们将顶点集视为固定的。为了注入结构异常,我们修改了存在的边,而为了注入邻域异常,我们修改了随机选择的节点的特征向量。
有关合成异常注入的更多细节,请参见Appx A.1.3。
3.3 算法
表2列出了在基准测试中评估的14种算法及其属性。我们选择在BOND中实现的算法的原则是具有代表性的方法,并从以下方面阐述:发布时间(“Year”),它们是否使用图结构(“Graph”),是否使用神经网络(“Deep”),以及该方法背后的核心思想(“Core”)。通过加入非基于图的异常检测算法(LOF、IF、MLPAE),我们可以研究对比基于图的异常检测算法与非基于图的异常检测算法在检测异常节点方面的优劣。
类似地,结合三种经典的异常检测方法(clustering-based SCAN; MF-based Radar, 和 ANOMALOUS)有助于我们理解经典图异常检测方法与深度图异常检测方法的性能。我们选择了一系列基于GNN的方法,包括基础的GCNAE、经典的 DOMINANT、基于DOMINANT改进的 AnomalyDAE、GUIDE和CONAD是两种包含不同的数据增强技术的最先进的方法。除了基于GNN的方法外,还包括两种使用其他模型编码图信息的方法(DONE/AdONE和GAAN)。请参阅Appx. A.2,以获得BOND中包含方法的更详细的介绍。
3.4 评价指标
检测质量评估。 我们研究了大量的图异常检测文献[15,69,87]来全面评估异常节点检测质量,并提出了三个指标:(1)ROC-AUC反映了检测器在正负样本上的性能,而(2)平均精度Average Precision(AP)更关注正(异常)样本,和(3)Recall@k评估具有高预测异常分数的结果。参见Appx.A.3了解更多细节。
在时间和空间上的效率评估。 基于图的算法的另一个重要方面是它们的高时间和空间复杂度[20,35],这给内存有限的硬件上的大型、高维数据集带来了额外的挑战(如内存溢出)。因此,我们分别在时间和空间上测量效率,并使用实际运行时间和GPU内存消耗来进行评估。我们将在Appx.A.3中提供了关于评估指标的更多的细节。
四、 实验
我们设计了BOND来了解各种异常检测算法在解决异常节点检测中的检测性能和效率。具体来说,我们的目的是回答:
- RQ1(4.1节):这些算法在检测合成和自然异常节点方面的有效性。
- RQ2(4.2节):不同算法对两种类型的合成异常(结构和邻域)节点分别检测的效果。
- RQ3(4.3节):算法在时间和空间方面的效率如何。
注意,由于空间限制,对于检测质量,我们关注ROC-AUC指标。使用AP和Recall@k指标的结果请参见Appx.C。
模型实现和环境配置。BOND中的大多数算法都已经在我们新发布的PyGOD包[53]中实现,而非图的异常检测方法则是从我们早期的工作[92]中导入的。尽管我们尽力在所有的算法中应用相同的优化技术方法,例如,向量化。但我们认为进一步的代码优化是可能的。有关更多的实现细节和环境配置,请参见Appx.B。
超参数网格。 在现实世界中,由于缺乏真实数据标签和准确性的普遍标准[55,93],如何对无监督异常检测进行超参数优化和算法选择尚不清楚。为了公平评价,当我们在表中提及性能指标时,我们将应用相同的超参数网格(参见Appx.B)到每个适用的算法,并报告其平均性能(即期望中的算法性能),以及标准偏差(即算法稳定性)和最大值(即算法潜力)。
4.1 实验结果:对合成异常和自然异常的检测性能
使用3.2节中描述的9个真实数据集,我们在表3和表4中展示了不同异常检测算法的ROC-AUC评分。
下面是这些表中的关键发现。
- 在平均性能上,没有在所有数据集上普遍最好的异常节点检测方法。表3和表4显示,14种方法中只有3种方法(AnomalyDAE, Radar, ANOMALOUS))在两类数据集上的平均值最好(AnomalyDAE在Core和Books数据集上表现最好,Radar和ANOMALOUS在Weibo和Enron数据集上表现最好)。传统方法Radar和ANOMALOUS在Weibo和Enron上都表现最好(见表4),但在检测合成异常方面比许多深度学习方法都差(见表3)。此外,在最佳和最差性能算法之间存在很大的性能差距,例如,在Flickr数据集上DONE的平均ROC-AUC是LOF的2.06倍。
- 被评估的方法中大多数都未能检测到自然异常。由于我们评估的大多数方法都是为了处理3.1节中定义的结构和邻域异常,为了找出检测自然异常失败和成功背后的原因,我们根据与结构和邻域异常定义相关的参数来分析自然异常节点的特点。.我们首先注意到大多数方法在Weibo数据集上可以成功(见表4),这是因为Weibo中的异常节点同时表现出结构和邻域异常的特性。具体来说,在Weibo中,异常节点的平均聚类系数[24]高于正常数据(0.400比0.301),这意味着这些异常节点对应于结构异常。同时,异常节点的平均近邻特征相似度[22]远低于正常数据(0.004 vs. 0.993),所以这些异常节点也对应于邻域异常。相比之下,Reddit和DGraph数据集中的异常和正常节点具有相似的平均近邻特征相似度和聚类系数。因此,他们的异常更依赖于先验知识的异常标注,因此在Reddit和DGraph数据集上有监督异常检测方法比无监督学习方法更有效(Reddit数据集上[73]中的最佳AUC为0.746,而表4中的最佳AUC为0.604;DGraph数据集上[32]中的最佳AUC为0.792,而表4中的最佳AUC为0.620)。
- 深度学习方法和其他使用SGD的方法在小图上可能是次优的。Disney、Books和Enron数据集中的异常也有3.1节中定义的相似的异常模式。然而,与经典基础方法相比,被评估的深度学习方法中大多数在Disney和Enron数据集上并不是特别有效。其原因是Disney和Books数据集在节点、边和特征方面有小图特性(见表1)。少量的数据可能会使深度学习方法难以很好地编码正常节点的分布,也可能导致过拟合问题。与此同时,经典方法Radar和ANOMALOUS在Disney和Books上的表现也很差。这些方法都使用了SGD,我们怀疑在如此小的数据集使用这种方式可能会有问题。
- 不同类别的评估方法都很擅长检测不同类型的异常。根据表3和表4,许多基于图的深度方法擅长检测合成异常,但在检测自然异常方面却表现较差。同时,当异常不遵循本文定义的两种类型时(Reddit和DGraph),非基于图的方法具有优势。这些观察结果证实了我们对无监督异常检测算法的理解——它们的有效性取决于底层数据分布是否满足算法所利用的结构属性。
- 在深度学习方法中,一些方法对ROC-AUC参数的标准差明显不如其他方法稳定。某些深度学习方法,如GAAN,对超参数不敏感,并且在大部分数据下ROC-AUC的标准差低于1%。同时,不稳定的方法往往涉及更复杂的损失函数(比如多个损失函数项的加权组合);例如,DONE和AdONE在三个数据集上的深度图学习算法中达到了最高的最好性能(即表3和表4中括号中的数字,而不是平均性能),但同时在超参数测试中显示出较高的ROC-AUC标准差。在这里,我们强调,在实践中,对于无监督的异常检测,没有标签意味着超参数优化远没有那么简单,因此跨超参数的稳定性是算法的一个理想特性。
4.2 实验结果:对结构和邻域异常的检测性能
我们在表5中展示了包含两种注入合成异常(3.2节的邻域和结构异常)的三个数据集上不同算法的ROC-AUC参数。注意,我们在这里只考虑合成异常,因为我们已经生成了它们,这样我们可以确切地知道哪些节点是邻域异常还是结构异常。我们的主要发现如下。
对于GNN,结构信息的重构在检测结构异常方面发挥了重要作用。 具体来说,GCNAE和DOMINANT对结构异常的检测性能差距超过40%。仔细研究这两种算法,可以发现它们的不同之处仅仅在于DOMINANT算法有一个重建图邻接矩阵的结构解码器。这种性能的差距揭示了图结构的信息重构有助于识别结构异常,而从上直观这也可以理解,因为这些异常是根据图结构定义的。
低阶结构信息(即一跳邻居)足以检测结构异常。 在Cora和Amazon数据集中检测结构异常时,DOMINANT和DONE达到了相似的平均ROC-AUC得分(∼92%),即使DOMINANT编码了4跳邻居信息,而DONE只编码1跳邻居信息。这种结果可以有效的改进异常节点检测算法,因为编码高阶信息通常会带来更高的计算成本,而多跳邻居聚合甚至可能导致GNN 中的过平滑问题[8]。
没有一种方法对结构异常和邻域异常都能达到较高的检测精度。 例如,没有一种方法对结构异常和邻域异常检测的ROC-AUC能同时达到85%。此外,在注入结构异常的Flickr上,大多数被认为用于检测结构异常的属性图异常检测方法的平均ROC-AUC得分不如SCAN,而SCAN是一种通过在节点上聚类检测结构异常的非属性图OD方法。上述结果表明,任意将结构和邻域损失项与固定权值(超参数)相结合的通用方法在检测两种异常类型时难以平衡性能。如何始终很好地同时检测这两种不同类型的异常仍然是一个悬而未决的问题。
在图2中,我们可视化了所选算法在时间(实际运行时间)和空间(GPU内存消耗)上的效率。完整的结果请参见Appx.C.3.。为了保证公平性,所有的算法都是在随机生成的图下进行评估的。图2(左)中的运行时间是训练时间和计算异常分数时间的总和。我们只测量不同方法的GPU内存消耗而不是CPU内存消耗,因为它经常是异常检测算法的瓶颈[89]。有关本节中生成的图形和实验设置的更多详细信息,请分别参见Appx.A.1.2和Appx.B。我们从图2中得到的主要发现如下。
4.3实验结果:计算效率
时间效率。 我们评估后发现经典方法比深度学习方法花费更少的时间,因为后者往往更复杂并且可以学习到更灵活的模型。在基于GNN的方法中,GUIDE消耗的时间远超其他方法。原因是GUIDE使用了一个图模式(graph motif)计数算法(即P-complete[13])来提取结构特征,这在CPU上消耗了更多的时间。由于CONAD使用了对比学习,因此使用了第二多的时间(它在mini-batch中进行了两两比较)。
空间效率。 根据图2(右),随着图大小的增加,GCNAE和GUIDE消耗的GPU内存比其他方法要少得多。GCNAE由于架构简单,因此节省了更多的内存。GUIDE消耗了更多的CPU时间和RAM来提取低维节点图模式度(motif degree),从而节省了更多的GPU内存。虽然经典方法在运行时间方面具有优势,但由于矩阵分解和求逆等“全局”操作的限制,大多数经典方法不能以分布式方式部署。深度模型的一个优点是,它们可以很容易地通过图采样扩展到小批量和分布式训练。另一个优点是,深度方法可以很容易地与现有的深度学习模块集成(例如用来获得节点嵌入的图预训练模块)。
五、讨论
我们建立了BOND,即在静态属性图上进行无监督异常节点检测的第一个综合基准。我们的基准测试从合成与自然异常、结构与邻域异常以及计算效率等方面,通过经验检验了各种OD算法的有效性。重要的是,我们开发BOND的一个主要目标是使其易于扩展,以便在更好地理解现有算法和开发新的异常节点检测算法方面取得进一步的进展。最后,我们讨论了异常节点检测的未来的研究方向(5.1节),以及基准测试的未来研究方向(5.2)。
5.1 异常节点检测问题的未来研究方向
我们在真实数据(4.1节和4.2节)上的实验结果显示,算法之间的检测性能存在显著差异,但没有一个算法能始终表现良好。即使是一个单一的算法,也存在超参数优化的问题(例如,Weibo数据集上的AnomalyDAE的检测性能在不同的超参数之间变化高达14%)。然而,最基本的问题在于,由于异常节点检测问题是无监督的,它并不是直接决定正确的算法选择或超参数设置。我们定义的用以帮助模型选择或超参数调整的任何定量度量都需要假设。另外,可用的计算预算和要分析的数据集的大小限制了可以使用的方法(我们在4.3节的结果表明,有些方法在计算上比其他方法耗费资源更多)。
研究方向1:设计“类型感知”的检测算法。 我们的实验结果的一个主要发现是,异常检测算法的表现在很大程度上取决于所遇到的异常类型(合成与自然、结构与邻域)。换句话说,如果我们想要找到一种特定类型的异常,那应当选择相对应的算法(如MLPAE和GCNAE适合检测邻域异常)。当然,这将需要我们有一些先验的知识或猜测在一个数据集中的异常是何种形式。
重要的是,在实际应用中,我们可能不需要检测所有的异常。例如,从业者可能只关注高价值或高利益的异常(例如,影响收入的非法交易[37]可以被视为邻域异常,所以MLPAE和GCNAE可能是好的选择)。随着表格数据中异常检测的最新进展[34],我们呼吁注意在异常节点检测中识别更细粒度的异常类型,并找出哪些算法更适合这些不同的异常类型。一旦我们有了这类信息,就可能自然会自动选择单个或组合多个异常检测算法,从而判断异常类型(例如,使用像[91]这样的集成方法)。
研究方向2:合成更真实和更灵活的异常节点。 在我们的真实数据实验(4.1节)中遇到的自然异常可以是复杂的,并且由多种异常类型组成(可能包括我们关注的结构和邻域异常之外的类型)。我们的实验结果表明,在合成异常和自然异常上存在一个广泛的检测性能差距,而这需要更真实的异常生成方法来解决。为了改进BOND中现有的生成方法,我们可以使用生成模型来拟合正常样本,然后对生成模型进行扰动来生成不同类型的异常。这种方法在表格数据异常检测中取得了成功[68]。
研究方向3:理解异常节点检测算法对超参数的敏感性,并设计更稳定的方法。 我们在4.1节中指出,一些深度学习方法在ROC-AUC指标的标准差方面比其他方法更稳定(跨超参数)。这种现象当然也可以延伸到经典方法。更好地理解这些算法对超参数的敏感性的影响因素,将有助于我们设计出对超参数更稳定的算法。反过来,这也可以帮助减轻无监督的超参数优化的负担。在表格数据异常检测任务中,研究者已经发现了许多对超参数更稳定的方法,如 robust autoencoder[96],RandNet [9],ROBOD [21],和ensemble frameworks [91]。也许这些表格数据异常检测方法的一些技术可以纳入特定的节点异常检测方法以提高稳定性。
研究方向4:开发更有效的异常检测算法。 我们关于计算效率的结果(4.3节)表明,一些算法会比其他算法花费更多的时间或内存。同时,大多数被测试的算法在百万规模的DGraph数据集上都耗尽了内存(表4)。我们建议为节点异常检测开发更多改进的算法,这包括对现有算法的更优化的实现,以及开发新的算法。
我们指出了几项可能有助于这一任务的研究方向。首先,已有方法可以使GNN可扩展,但这些方法还没有被专门用于解决异常节点检测。另外,我们测试的大多数现有的基于自动编码器的方法重建了一个完整的图邻接矩阵(例如,DOMINANT,DONE,AnomalyDAE,GAAN),这种操作是内存密集型的(随节点数量进行二次幂扩大)。为这个步骤开发一个内存效率更高的实现将会很有效。接着,在GUIDE中近似节点图模式度是可能的,这可以显著减少计算时间和空间花费[10,79]。最后,我们提到了最近的一些工作[89,90],它们通过分布式学习、数据和模型压缩和量子化来帮助表格数据异常检测。这些想法可以扩展到异常节点检测的算法中。
研究方向5:通过元学习来帮助模型选择和超参数调整。 最近对表格数据的无监督异常检测的模型选择[93]和一般图学习[59]的研究表明,在元学习框架下,我们可以根据其与基础真实信息可用的元任务的相似性,来识别用于新任务(或数据集)的良好异常检测模型。类似的方法也适用于无监督的超参数优化[88]。我们建议探索一个元学习框架来解决异常节点检测中的算法选择和超参数优化问题,包括量化图异常检测数据集之间的任务相似性。这样的框架需要一些但不是所有的数据集都有真实数据,而有真实数据的数据集可以与没有真实数据的数据集相关。
5.2 改进我们的基准系统BOND的未来方向
将检测任务扩展到不同的“级别”。 在BOND中,由于静态属性图的流行,我们主要关注节点级检测,而在图的不同层次上有更多的检测任务。最近的图异常检测算法扩展到边检测[83]、子图检测[70]和图级检测[62,85]。未来的综合图异常检测基准可以包括这些新兴的图异常检测任务。
纳入监督。 虽然BOND关注的是无监督方法,但也有一些情况,有一小组标签(用于异常检测或相关任务)可用,因此监督学习或半监督学习成为可能(例如[22,84])。扩展BOND来处理监督学习将有利于解决算法选择和超参数优化问题。
整理更多的数据集。 到目前为止,我们在BOND中只涉及了9个真实的数据集。随着时间的推移,添加更多的数据集将是有益的,特别是那些有自然异常的数据集。有了一个更大的数据集集合(例如,≥20),我们可以进行比较统计检验[14],而这已被用于与表格数据集的异常检测任务[51,93]。类似于表格数据异常检测[23],我们可以通过将一个或几个小类视为一个单一的“异常”类而所有其他类都被认为是“正常”的,来将现有的多分类图数据集(例如来自开放图基准(OGB)的数据集[30])转换为异常检测数据集。