=max(Xtrain )−min(Xtrain )x−min(Xtrain )数据清洗:使用谱残差 (Spectral Residual,SR) 的方法去除训练数据中的异常点。
Graph Attention
GAT 层可以表示任意图中两节点间的关系。假设给定n 个节点特征的图{v1,v2,...,vn},节点i 的输出特征hi 如下:
hi=σ(j=1∑Lαijvj)
其中αij 表示节点i 和节点j 间的注意力分数。计算方式如下:
eijαij=LeakyReLU(w⊤⋅(vi⊕vj))=∑l=1Lexp(eil)exp(eij)
其中⊕ 表示节点特征连接操作。w⊤∈R2m 表示可学习权重且m 表示节点特征维度。
论文中使用了两种类型的 GAT 层:
Feature-oriented graph attention layer
考虑不同时间序列的相关性,输出维度为k×n。k 个时间序列作为图中节点,每个节点对应的特征向量为xi={xi,t∣t∈[0,n)},其关系可以通过图注意力机制学习注意力分数。如下图所示
Time-oriented graph attention layer
考虑时间序列的时序依赖关系,输出维度为n×k。滑动窗口内每个时间戳作为节点,每个节点xt 表示t 时刻的特征向量。
论文中将每个模块的输出 concatenate 得到n×3k 作为下一个模块的输入,每行表示每个时间戳对应的3k 维特征。👏 原始数据+相关序列特征+时序依赖特征
Joint Optimization
基于预测的和基于重构的时间序列异常检测各有优势,所以论文中同时考虑了这两种类型的模型,优化的目标函数如下:
Loss=Lossfor+Lossrec
Forecasting-based 通过给定n 个时间戳对应的值预测下一个时间戳对应的值,论文中使用的是 GRU 单元堆叠。
Lossfor =i=1∑k(xn,i−x^n,i)2
Reconstruction-based 通过历史数据学习正常数据分布,论文中使用的是 VAE 模型,细节可以参考我的另一篇博客:基于变分自编码器重构概率的异常检测模型
Model Inference
基于预测的和基于重构的时间序列异常检测模型都有对应的输出结果
- 预测值输出结果为{x^i∣i=1,2,⋯,k}
- 概率值输出结果为{p^i∣i=1,2,⋯,k}
综合考虑每个特征的推断分数si 作为最终异常分数,计算公式如下所示:
score=i=1∑ksi=i=1∑k1+γ(x^i−xi)2+γ×(1−pi)
如果score 大于某一阈值即为异常的,至于阈值可以使用 POT(Peak Over Treshold) 方法自动判断。其中γ 为超参数,可以通过训练集进行网格搜索最优参数。
Experiments
实验部分采用了三种数据集,评价指标采用Precision,Recall,F1,不用AUC 是因为作者发现所有的方法AUC 都太高了…
每个模块的消融实验结果如下
至于提到的可解释性,意思是可以从 attention score 看出故障前后指标的相关关系会发生变化,如下图所示
但是实际情况是异常前后故障指标间的仍存在比较相关的指标变化趋势,因此觉得这个解释并不靠谱。其它参数实验不再解释,感兴趣的可以参考原文~
Thoughts
- 整体论文思路清晰,每个模块的设计思路及其需要解决的问题差强人意 👏。
- 图注意力机制模块设计可以参考,类似自动学习不同指标间的关联强度。
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 梦家博客! 打赏
wechat
alipay