PyGOD: A Python Library for Graph Outlier Detection / PyGOD:用于图异常检测的Python库

摘要

PyGOD是一个开源的Python库,用于检测图数据中的异常值。作为这类库中首个综合性的实现,PyGOD支持广泛的基于图的方法,用于节点、边、子图和图级别的异常检测,在一个统一的、良好文档化的API下设计,旨在供研究人员和从业者使用。为了解决大型图中的可扩展性问题,我们为选定的模型提供了包括小批量和抽样在内的高级功能。PyGOD配备了促进代码可靠性和可维护性的最佳实践,包括单元测试、持续集成和代码覆盖。为了促进可访问性,PyGOD在https://github.com/pygod-team/pygod/和Python Package Index (PyPI)上以宽松的BSD许可证发布。
关键词:异常检测、异常检测、图学习、图神经网络

1 引言

异常检测(Outlier Detection,OD),也称为异常检测,是识别与一般数据分布不符的异常样本的关键机器学习任务(Aggarwal, 2017; Li等,2022)。随着图数据在研究和实际应用中的重要性日益增加(Ding等,2021b; Huang等,2021; Fu等,2021; Zhou等,2021; Xu等,2022),最近利用基于图的方法如图神经网络(GNNs)进行异常检测引起了很多关注(Ma等,2021; Ding等,2019b,2021a),并在社交网络(Sun等,2018; Dou等,2020)和安全系统(Cai等,2021)等许多应用中发挥作用,例如检测可疑活动。

尽管在多种编程语言中存在一长串已建立的库,用于检测表格和时间序列数据中的异常值,例如PyOD(Zhao等,2019)、SUOD(Zhao等,2021b)、PyODDs(Li等,2020)、ELKI(Achtert等,2010)、OutlierDetec-Liu、Dou、Zhao、Ding、Hu、Zhang、Ding、Chen、Peng、Shu、Chen、Jia和Yu等(Muhr等,2022)、PyTOD(Zhao等,2021a)、TODS(Lai等,2021)、Telemanom(Hundman等,2018),但是缺少一个专门用于图异常检测的库。

为了填补这一缺口,我们设计了第一个全面的Python图异常检测库,名为PyGOD,其中包括了一些关键的技术进步和贡献。首先,它涵盖了从节点到图层级的多种算法,并且在标签/监督的可用性上有所不同。表1显示,PyGOD已经支持了十多种领先的算法。其次,PyGOD通过统一的API设计简化了检测模型的可访问性。从用户的角度来看,只需要将数据准备成预定义的图格式——然后PyGOD中的所有异常检测器都能够处理和处理这些数据。第三,PyGOD支持通过小批量和抽样进行大规模检测,这可以促进大图的检测。考虑到代码的清晰性和质量,我们提供了详细的API文档和示例,并且实现了跨平台的持续集成的单元测试,以及代码覆盖率和可维护性检查。

算法监督层级骨干网络小批量
MLPAE (Sakurada 和 Yairi, 2014)无监督节点MLP
GCNAE (Kipf 和 Welling, 2016)无监督节点GNN
ONE (Bandyopadhyay 等人, 2019)无监督节点MF
DOMINANT (Ding 等人, 2019a)无监督节点GNN
DONE (Bandyopadhyay 等人, 2020)无监督节点GNN
AdONE (Bandyopadhyay 等人, 2020)无监督节点GNN
AnomalyDAE (Fan 等人, 2020)无监督节点GNN进行中
GAAN (Chen 等人, 2020)无监督节点GAN
OCGNN (Wang 等人, 2021)无监督节点GNN
GUIDE (Yuan 等人, 2021)无监督节点GNN
CONAD (Xu 等人, 2022)无监督/半监督节点GNN进行中
CoLA (Xu 等人, 2022)无监督/半监督节点GNN进行中

表1:PyGOD V0.2.0中选择的异常检测模型

在这里插入图片描述
翻译:
训练数据 G(PyG 数据对象)
process_data(G): 提取 G 的关键信息
模型训练(适用于转导和归纳设置)
fit(K_G): 训练检测器
输出:
 decision_scores_: 异常得分
 labels_: 二分类的异常标签
测试数据 H(PyG 数据对象)
process_data(H): 提取 H 的关键信息
评分和预测(仅适用于归纳设置)
decision_function: 预测原始异常得分
predict: 预测二分类的异常标签
predict_proba: 预测成为异常的概率

在这个过程中,训练数据和测试数据都是以PyTorch Geometric数据对象的形式处理的。训练阶段适用于两种设置:转导(transduction)和归纳(inductive)。转导设置中,模型直接在训练数据上进行预测,而归纳设置中,模型在新的、未见过的数据上进行预测。模型训练后,可以输出异常得分和二分类的异常标签。在归纳设置中,除了可以得到每个数据点的异常得分和预测标签,还可以得到数据点被判定为异常的概率。

图1:PyGOD统一API设计的演示

2 库的设计与实现

依赖性。PyGOD 是为 Python 3.6 及以上版本构建的,它依赖于流行的 Pytorch (Paszke 等人,2019) 和 Pytorch Geometric (PyG) (Fey 和 Lenssen,2019) 来在 CPU 和 GPU 上有效进行图学习。此外,它使用 numpy (Harris 等人,2020),scipy (Virtanen 等人,2020) 和 scikit-learn (Pedregosa 等人,2011) 进行数据操作。

API 设计。受到 scikit-learn (Buitinck 等人,2013) 和 PyOD (Zhao 等人,2019) 的 API 设计启发,PyGOD 中的所有检测算法都继承自具有相同 API 接口的基类:(i) fit 训练检测模型,获取输入数据上的异常分数(分数越高,越可能是异常)和标签,并为预测生成必要的统计信息(在归纳设置中);(ii) decision function 利用训练好的模型预测新进数据的原始异常分数(在归纳设置中);(iii) predict 使用训练好的模型返回二进制预测(正常样本为 0,异常样本为 1);以及 (iv) predict_proba 使用领先方法 (Kriegel 等人,2011) 返回样本作为异常的概率。同时,我们还包括了在异常检测中提供置信度分数的最新进展 (Perini 等人,2020) 用于上述预测方法。上述 API 的使用在代码演示 1 中展示。

在这里插入图片描述

代码演示1:在Cora数据集(Morris等,2020)上使用Dominant方法(Ding等,2019a)

利用 PyG 简化图学习。我们选择在流行的 PyG 库之上开发 PyGOD,原因有多个。首先,这降低了用户处理图数据的复杂性。也就是说,PyGOD 只要求输入数据为 PyG 标准的图数据格式。值得注意的是,不同的检测模型需要从 PyG 图中提取不同的信息。在每个检测模型的实现中,我们设计了一个抽象的处理图方法来提取必要的信息,例如邻接矩阵、节点和边的属性等,用于底层的检测算法。其次,大多数检测算法共享常见的骨干网络(参见表1),如图卷积神经网络(GCN)(Kipf 和 Welling,2017)和图自编码器(Kipf 和 Welling,2016),PyG 为此提供了优化的实现。第三,PyG 是最受欢迎的 GNN 库,具有高级功能,如图采样和分布式训练。在 PyG 框架下,我们为选定的模型启用并实现了小批量和/或采样,以适应如表1所示的大规模图的学习。

除了检测模型外,我们还设计了一组有用的实用函数来促进图异常检测。在评估方面,PyGOD 在 utils.metric 模块中提供了图 OD 的常用指标。在数据方面,PyGOD 在 utils.outlier_generator 中为结构和属性设置提供了异常注入方法(Ding 等人,2019a),作为模型评估和基准测试的解决方案。

3. 库的鲁棒性和可访问性

鲁棒性和质量。在构建 PyGOD 时,我们遵循了系统设计和软件开发的最佳实践。首先,我们利用 GitHub Actions 自动化在不同 Python 版本和操作系统下的测试过程。除了每日计划测试外,提交和拉取请求也会触发单元测试。值得注意的是,我们强制所有代码至少达到 90% 的测试覆盖率。通过遵循 PEP8 标准,我们强制实现一致的编码风格和命名约定,这有利于社区合作和代码可读性。

可访问性。PyGOD 附带了由 Read the Docs 渲染的详细 API 文档。在文档中,提供了安装指南和 Jupyter 笔记本中的交互式示例。为了促进社区贡献,该项目托管在 GitHub 上,有友好的贡献指南和问题报告机制。

4. 结论和未来计划

在本文中,我们介绍了第一个全面的图异常检测库,称为 PyGOD。独特的是,它支持广泛的检测算法,具有统一的 API、丰富的文档和鲁棒的代码设计,这些对学术研究和工业应用都非常有用。PyGOD 的发展计划将专注于多个方面:(i) 包括更多针对不同子任务的算法,例如在边缘和子图中的异常检测;(ii) 与工业界合作,使 PyGOD 更加实用,并满足从业者的需求;(iii) 利用图领域的最新进展优化其可访问性和可扩展性(贾等人,2020);以及 (iv) 结合自动化机器学习,实现智能模型选择和超参数调整(赵等人,2021c)。

致谢

本文的作者得到了美国国家科学基金会(NSF)的支持,其资助的项目包括 III-1763325、III-1909323、III-2106758 和 SaTC-1930941。

这篇文章介绍了PyGOD——一个用于图异常检测的综合性Python库。PyGOD支持从节点到图级别的多种基于图的检测方法,具备统一的API设计,便于研究者和实践者使用。它通过提供小批量和采样功能解决了大规模图的可扩展性问题,并遵循最佳实践如单元测试、持续集成和代码覆盖率来保证代码的可靠性和可维护性。PyGOD的技术优势包括其对多种领先算法的支持、提高检测模型的可访问性和处理大规模图的能力。未来计划包括扩展算法范围、与工业界合作提高实用性、优化可访问性和可扩展性,并整合自动化机器学习以实现智能模型选择和超参数调整。

实操:https://github.com/pygod-team/pygod/
原文地址:https://arxiv.org/pdf/2204.12095.pdf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值