异常检测 | Matlab基于GNN图神经网络的异常数据检测
目录
- 异常检测 | Matlab基于GNN图神经网络的异常数据检测
- 效果一览
- 基本介绍
- 模型描述
- 程序设计
- 参考资料
效果一览
基本介绍
Matlab基于GNN图神经网络的异常数据检测。其核心思想是学习一个函数映射。本次使用人类活动数据(包含 60 个通道的 24,075 个时间步长)进行异常检测。
模型描述
图神经网络(Graph Neural Networks,GNNs)是一类用于处理图数据的深度学习模型。它们被广泛应用于图分析、图表示学习和图结构预测等任务中。
GNN的设计灵感来源于人类思维中对图的处理方式。它通过在图的节点和边上定义神经网络模型,并通过信息传递和聚合来捕捉节点之间的关系。GNN的核心思想是通过迭代地更新节点的表示,使得每个节点可以考虑到其邻居节点的信息。
GNN模型的基本结构包括两个主要的步骤:信息传递和聚合。在信息传递步骤中,每个节点通过聚合其邻居节点的信息来更新自身的表示。这个过程可以通过在节点和边上定义神经网络模型来实现。在聚合步骤中,节点将更新后的表示聚合到全局图级别的表示中,以便进行后续的任务。
GNN模型通常具有多层结构,每一层都进行信息传递和聚合操作。通过多层的堆叠,GNN可以对节点的表示进行多次迭代,从而捕捉到更复杂的图结构信息。
GNN是一类强大的图表示学习模型,能够处理各种类型的图数据,并在图分析和预测任务中取得了显著的成果。
使用图神经网络 (GNN) 检测多元时间序列数据中的异常。
要检测多元时间序列数据中的异常或异常变量/通道,可以使用图偏差网络(GDN)。 GDN 是 GNN 的一种,它学习表示时间序列中通道之间关系的图结构,并通过识别与学习结构的偏差来检测异常通道和时间。 GDN 由四个主要部分组成:
节点嵌入:生成学习的嵌入向量来表示每个节点/变量/通道的独特特征。
图结构学习:计算节点嵌入之间的相似性,并用它来生成表示学习的图结构的邻接矩阵。
基于图注意力的预测:使用图注意力预测值。
图偏差评分:计算异常分数并识别异常节点和时间。
各组件如下图所示。
程序设计
- 完整程序和数据资源私信博主回复Matlab基于GNN图神经网络的异常数据检测。
function adjacency = graphStructure(embedding,topKNum,numChannels)
% graphStructure函数将通道嵌入embedding、前k个数topKNum和通道数numChannels作为输入,并返回表示通道之间关系的邻接矩阵。
% 使用余弦相似度计算通道之间的相似度得分。
% 对于每个通道,通过选择具有最高相似度得分的 topKNum 个通道,从整个通道集中确定相关通道(不包括考虑的通道)。
% Similarity score
normY = sqrt(sum(embedding.*embedding));
normalizedY = embedding./normY;
score = embedding.' * normalizedY;
% Channel relations
adjacency = zeros(numChannels,numChannels);
for i = 1:numChannels
topkInd = zeros(1,topKNum);
scoreNodeI = score(i,:);
% Make sure that channel i is not in its own candidate set
scoreNodeI(i) = NaN;
for j = 1:topKNum
[~, ind] = max(scoreNodeI);
topkInd(j) = ind;
scoreNodeI(ind) = NaN;
end
adjacency(i,topkInd) = 1;
end
参考资料
[1] https://blog.csdn.net/kjm13182345320/article/details/124864369
[2] https://blog.csdn.net/kjm13182345320/article/details/127896974?spm=1001.2014.3001.5502