基于相关性分析的工业时序数据异常检测

基于相关性分析的工业时序数据异常检测

在这篇文章中,作者提出了一种基于序列相关性分析的多维时间序列异常检测方法。在这个方法中,首先会计算多维时间序列的相关性矩阵,然后根据相关性矩阵构建一个时序相关图模型。在这个模型中,每个顶点代表一个时间序列,每条边的权值表示两个时间序列之间的相关性。

然后,作者通过在时序相关图上的相关性强度来划分时间序列团。具体来说,如果检测到边的权值低于给定的相关性阈值θc,那么就认为异常存在于该边相连的两个点之中。

具体过程如下:

数据预处理:由于采集的原始工业时间序列数据里存在一些数据质量问题[4,5],因此在数据预处理部分,需要对原始的时间序列数据进行时标对齐、缺失值填充等准备性操作,将整理好的高质量数据输入到后面模块进行计算分析;

• 时序数据相关性计算:将准备好的时间序列数据按工作周期模式进行分段,得到若干个时间子序列组,对每个子序列组分别进行序列 PAA 处理(第 3.1 节)、计算相关性参数生成相关性矩阵(第 3.2 节),根据矩阵中的元素值建立时序相关性图,并根据相关性阈值划分图上的时序相关团,该部分具体算法及案例分析在第 3.3 节中介绍;

• 异常检测:在异常检测部分,我们利用已计算得到的时序相关性图模型对待检测数据中隐藏的异常数据进行检测识别.对于彼此存在相关性的序列集合,我们采用基于相关性参数计算异常检测的方法,对时序相关团内以及不同团之间分别进行异常数据挖掘与识别.对于与其他序列无明显相关的序列,我们进行单维序列异常检测.

数据预处理

PAA方法的主要步骤如下:

  1. 将原始时间序列分割成w个相等长度的段。
  2. 对每一段计算其均值。
  3. 用这些均值来代表原始时间序列。

在这里插入图片描述

import numpy as np

# 假设x是一个numpy数组,代表原始时间序列
x = np.array(...)

# w是我们想要的段数
w = ...

# 计算每一段的长度
segment_size = len(x) // w

# 对x进行分段,并计算每一段的均值
paa = np.array([np.mean(x[i:i+segment_size]) for i in range(0, len(x), segment_size)])

在这里插入图片描述

序列相关性矩阵计算

分段的相关性矩阵如下
在这里插入图片描述

这里R是相关性系数,合并的相关性矩阵如下
在这里插入图片描述

时序相关性图模型

通过阈值进行加无向边
在这里插入图片描述

寻找连通图,并进行剪枝

要求C 中每个顶点的度大于等于该团内顶点数的一半,划分成时序相关团
在这里插入图片描述

计算团间的相关性,从每一个团选取一个特征序列,再把这些特征序列进行相关性分析作为团间相关性

特征序列选取时序相关团内与其他时间序列相关性最强的时间序列作为代表序列,序列 Si 是与时序相关团 C 中其他序列相关性参数值之和最大的序列

在这里插入图片描述
在这里插入图片描述

异常检测

通过阈值寻找异常边(团内团间均使用),通过异常边找到异常序列
在这里插入图片描述
在这里插入图片描述

文章没有给出相关性阈值如何得到

结果对比

对比AR算法和LCAD算法,表现较好

文章优缺点

优点:

  1. 该方法通过对高维时序数据相关性知识的挖掘,既节约了计算成本,又实现了对复杂模式的异常数据的精准识别。
  2. 在真实的工业设备传感器数据集上进行了大量实验,实验结果验证了该方法在高维时序数据的异常检测任务上的有效性。
  3. 通过对比实验,验证了该方法从性能上优于基于统计和基于机器学习模型的基准算法。

缺点:

  1. 虽然文献中提出了许多类型的异常检测方法, 但对于模式多变的单维时间序列, 异常数据和异常模式仍然难以准确发现。
  2. 文章并没有明确说明如何确定相关性阈值,这可能需要用户根据具体的应用场景和数据特性来确定,增加了使用难度。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值