目录
1、简介
摘要:
在这次演讲中,赵越会围绕异常检测与图上的异常检测来介绍他参与多校联合的Python Graph Outlier Detection (PyGOD)工具库,以及最近的NeurIPS论文:BOND: Benchmarking Unsupervised Outlier Node Detection on Static Attributed Graphs。
个人简介:
赵越,卡内基梅隆大学博士在读,主要研究领域为异常检测和机器学习系统。他发表了超过30篇相关文章,并参与开发过多个重要的机器学习工具库,包括Python Outlier Detection (PyOD)用于表格数据异常检测和Python Graph Outlier Detection (PyGOD)用于图上的异常检测。他在2021年暑假曾访问斯坦福大学,在Jure Leskovec教授的指导下参与设计了PyTorch Geometric的profiling和benchmarking模块。他独立设计的机器学习工具,已获得超过一千万次下载、超过1.5万个GitHub星标和上千次引用。他也是知乎的优秀答主「微调」。
2、图神经网络与异常检测
小引
图异常检测
背景
进可能找到异常点,目前大多是无监督学习
应用:
- 无人机驾驶
- 金融反洗钱
- 医疗罕见病检测
少量样本很有实际应用场景的话,可以使用异常检测
系统PyGOD
图上的异常检测举例
无监督图异常检测存在挑战:标签少且标注困难
这里讨论完全无label的
静态属性图上的无监督节点异常检测定义
做了一个library,来对图上异常检测进行深入研究
PyGOD
很像之前发布的PyOD库
图上的异常检测库
图上异常检测代表性工作1
核心
- 节点与邻居节点的差异性?(节点间特征X关系)
- 节点与邻居节点特征/结构的差异性?(节点间结构A关系)
做法:
- 用自编码器思想做的
- 重构误差越大,则越是异常点
图上异常检测代表性工作2
人为地增加一些先验信息(手动异常)
核心在于重构(知识先压缩再重构)
核心源于不平衡来检测异常
PyGOD优势在于
基准BOND综述
图上基于节点的异常检测综述
带*是因为这些数据本身不携带异常点,因此人为注入异常点(共9个数据集)
异常种类:
- 结构异常:子图节点间紧密相连(相对的)
- 属性异常:节点结构与其他相似,但是属性不同
度量标准
调参设置(无监督无法调参,但可以尽可能让不同模型架构的参数相似)
发现图异常检测方法在注入的数据上表现较好,但是在真实数据集上表现较差(可能是因为异常不源于结构,而真实数据上结构所占loss比重大,则会导致效果变差)
发现非graph如reddit上效果好,说明太过依赖于图关系的模型不见得好,这个为了说明不一定要用GNN模型,而要根据具体情况而定
聚焦人工注入异常的表现发现:
- 重构对于结构异常有益的;
- 低阶信息足够使用
如何同时考虑结构异常和上下文(属性)异常
仅仅loss加权很难做到
未来方向:预算开销上
未来方向
自动学习
设计生成模型生成注入异常
鲁棒loss设计
运算开销上
总结
小结
讲的很通俗易懂,未来发展方向这块的几个点都很不错哦
QA
1)图自监督在工业上初步开始,目前很少
2)动态图异常检测也是需要重构思想来所,但是关键在于node和edge随着时间变化和其他节点的差异性评估
3)无监督下的创新还是有限的,哪怕是伪标签,因为远远差于打标签效果?
4)因为不平衡,所以利用不平衡来进行图检测异常,都则就变成聚类了
5)无监督永远差于半监督和监督效果的
6)用生成模型注入异常来代替人为注入异常
3、参考
异常检测--ADBench (NeurIPS'22) is ALL You Need - 知乎