TL;DR
局部离群点检测的方法例如 KNN、LOF 和 DBSCAN 等由于缺少可训练参数,因此难以自适应不同数据集。这篇文章基于图神经网络和局部离群点检测的思想提出了一种统一的异常检测框架 LUNAR (Learnable Unified Neighbourhood-based Anomaly Ranking),可以基于近邻节点学习特征从而检测异常点。实验部分证明 LUNAR 效果明显优于现有的局部异常点检测方法和其它的深度学习模型,并且对模型参数的鲁棒性进行效果检验。
Problem Definition
无监督异常检测的定义:给定m 个正常训练样本x1(train) ,…,xm(train )∈Rd 和n 个测试样本x1(test) ,…,xn(test )∈Rd,对于每个测试样本xi(test) 所发需要输入一个异常分数。
Algorithm/Model
类推理论
首先证明局部异常点检测方法可以形式化的类比为 GNN 的信息传递机制;
首先看空域 GNN 信息聚合公式如下
hNi(k)hi(k)=□j∈Niϕ(k)(hi(k−1),hj(k−1),ej,i)=γ(k)(hi(k−1),hNi(k))
其中□ 表示聚合函数,ϕ 表示邻居发送的消息,γ 表示更新函数。
为了便于理解文章中采用 KNN 的思路说明信息传递机制。
每个样本对应图中节点,文章中构造的是k-NN directed graph,📢 注意是有向边。
对于节点i 其邻居节点j∈Ni,其边特征ej,i 对应节点距离
ej,i={dist(xi,xj) if j∈Ni0 otherwise.
那么 KNN 信息传递方式如下
信息
ϕ(1):=ej,i
聚合
hNi(1):=j∈Nimaxϕ(1)
更新
γ(1):=hNi(1)
从上面即可看出 KNN 是一种特殊的 one-layer 信息传递模式!🤔
同样地 LOF 和 DBSCAN 中对应上面步骤的方法如下
模型设计
首先是构图,论文中采用 k-NN 有向图,边特征为样本点间的欧式距离如下
ej,i={dist(xi,xj) if j∈Ni0 otherwise.
Message
从节点j 传播到节点i 的消息为ϕ(1):=ej,i.
Aggregation
为了适应不同的信息聚合方式,论文中提到可学习的信息聚合函数。对于每个节点的 k 近邻距离构造向量
e(i):=[e1,i,…,ek,i]∈Rk
然后将向量通过神经网络F 映射到一标量值表示节点i 的异常程度
hNi(1):=F(e(i),Θ)
Update
更新函数结果即为聚合函数输出的结果,异常点输出分数为 1,正常点输出分数为 0;
γ(1):=hNi(1)
为了提高模型的适应性论文中还使用了负样本进行训练,不再细述;模型采用 MSE 作为损失函数。
Experiments
实验部分采用了 8 组数据集进行对比,数据集统计信息如下
实验结果如下所示
对比不同k 取值对局部离群点检测实验结果的影响如下
Thoughts
- 论文整体想法新颖,基于 GNN 结合局部近邻的思想来解决离群点检测问题。✔️
- 主要创新在于问题的转化和 GNN 模型构造的创新性,尤其是 learnable aggregation function。✔️
- 如果去掉 GNN 这层包装,貌似主要逻辑就是 KNN + DNN ?