官网:https://pygod.org/
GitHub:https://github.com/pygod-team/pygod/
文档:https://docs.pygod.org/en/latest/
图模型可以对复杂的拓扑关系进行建模。因为其强大的表达能力,图模型最近被广泛用于推荐系统,生物制药等领域,并在很多领域上都有对应的开源工具库(推荐系统:GNN-RecSys,生物制药:DGL-LifeSci)。
作为数据挖掘中的经典问题,异常检测技术在图数据上的应用也逐渐受到关注。其主要应用方向有:虚假信息检测、金融欺诈检测,系统安全监测等。
如下图所示,用户在社交媒体上的好友关系就能自然地构成一张节点为用户,边为好友关系的图。通过寻找图中异常的的节点,边和子图,我们就能够发现对应可疑的用户,关系和群组,从而进一步采取相应措施。
为快捷地检测上述异常个体和行为,开源社区需要图数据异常检测工具库。虽然表格数据上的异常检测已有相对成熟的工具库(PyOD),但由于图结构数据的复杂性和图异常检测的独特性,表格数据上的异常检测方法难以直接运用至图结构数据。
为了弥补这一缺陷,近日PyGOD团队开源了首个基于 Python 的大型「图数据上的异常检测工具库」--PyGOD (Python Graph Outlier Detection),目前集成了超过10个重要的图数据异常检测模型。
PyGOD有下面几个特色:
• 像scikit-learn一样简单的API,只要5行代码就能实现图异常检测
• 完整的文档和交互式案例
• 无论是工业应用还是学术对比,你只需要准备PyG的数据格式,其他的交给PyGOD
• 配备异常值生成方法与模型评价指标
使用示例:
from pygod.models import DOMINANT
model = DOMINANT() # 初始化模型(可在此设置超参数)
model.fit(data) # data是一个PyG数据对象
# 获取输入数据的raw outlier scores
outlier_scores = model.decision_scores
# 对新的数据进行预测
test_outlier_scores = model.decision_function(test_data)
目前PyGOD仅实现了图数据上的无监督的异常节点检测模型,在后续更新中将不断拓展PyGOD的范围。
方法 | 模型 | 年份 | 参考文献 |
MLP | MLPAE | 2014 | Anomaly Detection Using Autoencoders with Nonlinear Dimensionality Reduction |
GNN | GCNAE | 2016 | Variational Graph Auto-Encoders |
MF | ONE | 2019 | Outlier Aware Network Embedding for Attributed Networks |
GNN | DOMINANT | 2019 | Deep Anomaly Detection on Attributed Networks |
GAN | GAAN | 2020 | Generative Adversarial Attributed Network Anomaly Detection |
GNN | AnomalyDAE | 2020 | Dual Autoencoder for Anomaly Detection on Attributed Networks |
GNN | DONE | 2020 | Outlier Resistant Unsupervised Deep Architectures for Attributed Network Embedding |
GNN | AdONE | 2020 | Outlier Resistant Unsupervised Deep Architectures for Attributed Network Embedding |
GNN | OCGNN | 2021 | One-Class Graph Neural Networks for Anomaly Detection in Attributed Networks |
GNN | GUIDE | 2021 | Higher-order Structure Based Anomaly Detection on Attributed Networks |
除此之外,PyGOD 还包含一些模型评价方法:
类型 | 名称 | 功能 |
Metric | eval_precision_at_k | Calculating Precision@k |
Metric | eval_recall_at_k | Calculating Recall@k |
Metric | eval_roc_auc | Calculating ROC-AUC Score |
Data | gen_structure_outliers | Generating structural outliers |
Data | gen_attribute_outliers | Generating attribute outliers |
根据 PyGOD 项目文档,其团队承诺会对项目进行长期维护,不断添加新的基于图的异常检测方法。团队也致力于把大家的图异常检测模型推广给其他学者作为 baseline,或者直接部署到工业界来创造生产力。团队也将在短期内公布arxiv文章,以方便用户更好地使用,为社区提供新的见解。
如有任何问题或建议,请与PyGOD团队取得联系。你可以通过在GitHub提交issue反馈问题,提交PR参与贡献(比如提交论文代码以便加入PyGOD),或发送电子邮件至dev@pygod.org来反馈你的想法。你也可以直接联系团队成员:
伊利诺伊大学芝加哥分校:刘泽宽,窦英通
卡内基梅隆大学:赵越,丁雪莹,胡曦阳
北京航空航天大学:张瑞桐
伊利诺伊理工学院:陈灿宇
亚利桑那州立大学:丁凯泽
大家的 star,fork,watch,转发,和使用,都是对PyGOD团队持续维护和更新的强力支持!
更多详情请参阅如下链接:
官网:https://pygod.org/
GitHub:https://github.com/pygod-team/pygod/
文档:https://docs.pygod.org/en/latest/