1 相关研究综述

在时间序列异常检测的研究中,对于检测对象而言,可分为点异常、子序列异常、模式异常这 3 类研究任务.对于异常检测方法而言,主要有基于统计模型(如 ARIMA,GARCH 等)、基于聚类(如 k-means,EM,SVM 模型等)、 基于相似性度量、基于约束规则等.

2 研究问题介绍

2.1 基本定义

时序分解python_时间序列

时序分解python_子序列_02

时序分解python_异常检测_03

 

时序分解python_其他_04

 本文提出的方法对所有维度时间序列相 关性的建模,识别相关性发生变动的子序列部位,通过对这类疑似异常子序列进行全局相关性分析,挖掘并识别 出真正发生异常的序列数据.

对于某一个设备对应的K维传感器组,有K个时间序列。

(1)计算K维时间序列上任意两条时间序列的相关性

(2)根据(1)的相关性,对该设备的传感器组产生的待测数据集上的异常数据进行检测,得到有限个异常模式二元组:〈T[l:n],AD(Sm)〉,其中,T[l:n]记录发生异常的序列时间段,起始于时间点 l,结束于点 n;  AD(Sm)记录该时间段内所有发生异常的序列编号。

 2.2 方法概述

 我们提出基于时序相关图模型的异常检测方法,首先 对序列的相关性进行挖掘分析;在此基础上,提出基于相关性分析的异常检测算法,实现对所有真正的、隐匿性 强的异常数据进行有效识别处理.

基于相关性计算的多维时间序列异常检测方法,如图所示:

主要包括数据预处理、时序数据相关性计算以及异常检测 3 个部分.

具体步骤,详见论文,论文中写的十分清晰。

时序分解python_时序分解python_05

 3 基于时间子序列组的序列相关性计算——第二部分:时序数据相关性计算部分的详细算法

3.1 序列PAA处理(逐段聚集平均处理

对数据进行预处理后,通过时间段划分,得到时间子序列组。对于每一段时间子序列组,每个时间点上的序列取值可看做该时间点上的一个实例.由于时间序列在较短的时间段内具有连续的序列取值变化范围不大的特性,首先利用逐段聚集平均(piecewise aggregate approximation,简称 PAA)处理每一条序列。进行必要的实例缩减,对序列的浮动特征进行提取,使得后续的计算更为方便、高效和精准.特征仍保留

算法 1. 序列 PAA 处理.

输入:分段后的一个时间子序列组 S={S1,S2,…,SK};重建后序列长度参数 w;

输出:重建后的时间子序列组 S'={S'1,S'2,…,S'K}

时序分解python_异常检测_06

 

时序分解python_其他_07

 3.2 序列相关性矩阵计算

时序分解python_子序列_08

 

时序分解python_其他_09

 

时序分解python_子序列_10

 3.3 时序相关性图模型

对于一个给定传感器组 Sm上的 K 维时间序列数据,建立一个无向的时序相关性图 Gr(S)=(V,E),其顶点集合记录了所有序列,边集合记录 了序列间是否存在大于阈值的相关性信息.

图的建立:详看论文中定义8

例子:

时序分解python_其他_11

 a) 将一个时序相关图上 K 条时间序列划分为若干个时序相关团

b) 相关性计算(团内、团间)。

        团内:边权值计算得到

        团间:由于每个时序相关团内顶点间的边权值都很高,即同个团内时间序列均具有显著可靠的相关性,我们可以选取团上的特征序列代表该团进行计算。

        选取时序相关团内与其他时间序列相关性最强的时间序列作为代表序列。对于代表序列,建立相关性参数矩阵 SCM(v* )。

        再建立时序相关性图模型。

4 基于时间序列图模型的异常检测——第三部分:异常检测部分

本文的异常检 测任务主要是发现并识别那些持续一定时长的异常问题数据.

时间子序列组作为基本分析单位,对于一个传感器组 S 的第 l 个时间段的 K 维时间序列进行分析。

团内:

根据时序相关图的定义,同一个团内的序列都是以很高的相关性阈值相连,因此若检测到边权低 于给定的相关性阈值θc,则认为异常存在于该边相连的两个点之中。将出现异常权值的边加入 GB。GB 与 Ci 有相同的顶点结构,且 GB 的边集合记录了候选的异常顶点。

根据最小修复代价原则,图 GB 上的异常判定问题被转化为无向图的最小顶点覆盖问题。

一般为二分图,所以判断是否为二分图;若不是利用贪心算法,找最小顶点覆盖

删掉预测的异常值,对时序图进行再计算,避免错或漏。

团间:同团内方法