CN114490156A - 一种时间序列数据异常标记方法 - Google Patents

一种时间序列数据异常标记方法 Download PDF

Info

Publication number
CN114490156A
CN114490156A CN202210090576.6A CN202210090576A CN114490156A CN 114490156 A CN114490156 A CN 114490156A CN 202210090576 A CN202210090576 A CN 202210090576A CN 114490156 A CN114490156 A CN 114490156A
Authority
CN
China
Prior art keywords
sequence
time
data
time series
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210090576.6A
Other languages
English (en)
Inventor
马佳
刘春山
夏永祥
涂海程
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Dianzi University
Original Assignee
Hangzhou Dianzi University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Dianzi University filed Critical Hangzhou Dianzi University
Priority to CN202210090576.6A priority Critical patent/CN114490156A/zh
Publication of CN114490156A publication Critical patent/CN114490156A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • G06F17/142Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Evolutionary Biology (AREA)
  • Algebra (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Probability & Statistics with Applications (AREA)
  • Artificial Intelligence (AREA)
  • Operations Research (AREA)
  • Evolutionary Computation (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Discrete Mathematics (AREA)
  • Testing And Monitoring For Control Systems (AREA)

Abstract

本发明公开了一种时间序列数据异常标记方法,包括以下步骤:对时间序列数据进行预处理。数据预处理包括时间序列数据归一化、序列缺失值填充、以及序列平滑处理三个步骤;对所述预处理后的时间序列进行分类。根据序列快速傅里叶变换周期频域分量的大小、自相关系数大小、以及零值比例的大小,将时间序列按照数据特性分为四种类型;对所述不同数据类型的时间序列分别设计一种异常标记方法。本发明在保证时间序列异常标记高准确率的前提下,开发了一套简单高效、适用于大规模时间序列的异常标记的方法。

Description

一种时间序列数据异常标记方法
技术领域
本发明属于数据分析技术领域,具体涉及一种大数据时间序列异常标记方法。
背景技术
时间序列是按时间顺序连续排列的数据序列,是生产、商业活动等领域最常见的数据类型之一。在数据的收集、传输和存储过程中,软、硬件的故障往往会导致错误数据的产生;数据产生主体的异常也会导致异常数据的产生(例如一个非正常工作的温度传感器记录的不准确的温度信息)。正确标记时间序列中的异常/错误数据是修正错误数据、提高数据完整性以及分析异常事件的关键一步。
随着各种业务数据规模的快速增加,时间序列异常标记也面临着越来越多的挑战。目前大规模时间序列异常标记主要面临着算法复杂度较高、扩展性较差以及人工标注困难等问题。为了解决上述问题,在此开发一套简单高效、适用于大规模时间序列前期数据处理的异常标记算法,以流程化的操作来对时间序列的异常值进行一个准确、高效的标记。
发明内容
本发明以满足大数据分析需求,公布了一种适用于海量数据的简单高效的时间序列异常标记方法。该方法根据序列的数据特性将时间序列分为四类,然后根据每一数据类型的特征进行时间序列的异常标记。
本发明公布的时间序列数据异常标记算法具体包括以下步骤:
步骤1、时间序列数据预处理;
步骤2、时间序列分类;
步骤3、时间序列数据异常标记。
优选的,步骤1具体如下:
步骤1.1,时间序列数据归一化。
令原始时间序列X={x1,x2,…,xN},其中N为序列的长度,xt为序列X某一时刻的具体数值,且t∈{1,2,…,N}。对原始时间序列X使用Min-Max方法进行归一化,将原始数据点映射到[0,1]区间。将归一化后的时间序列记为
Figure BDA0003488394160000011
其计算公式为:
Figure BDA0003488394160000012
其中max(X)为原始时间序列的最大值,min(X)为原始时间序列的最小值,
Figure BDA0003488394160000021
为时间序列
Figure BDA0003488394160000022
的t时刻归一化后的具体数据。
步骤1.2,补充时间序列缺失日期并填充缺失值。
数据集在收集过程中会因为多种原因导致部分数据和日期缺失,根据数据采集规则对序列缺失日期进行填补,并使用线性插值方法对序列
Figure BDA0003488394160000023
的缺失值进行填充,以得到连续性的时间序列
Figure BDA0003488394160000024
步骤1.3,对时间序列进行平滑处理。
采用移动加权平均(Exponentially Weighted Moving Average,EWMA)算法对时间序列
Figure BDA0003488394160000025
进行平滑处理,并将处理后的时间序列记为
Figure BDA0003488394160000026
该算法的公式为:
Figure BDA0003488394160000027
其中
Figure BDA0003488394160000028
为序列
Figure BDA0003488394160000029
的t时刻的值,
Figure BDA00034883941600000210
为序列
Figure BDA00034883941600000211
的t时刻的平滑处理后的数据值,系数β表示移动加权下降的速率。
优选的,步骤2具体如下:
步骤2.1,对预处理后的时间序列
Figure BDA00034883941600000212
进行快速傅里叶变换(FFT)以确定备选周期序列。
将序列
Figure BDA00034883941600000213
进行快速傅里叶变换后的序列记为F,且将序列F中周期为一天和一周的频率分量分别记为fd和fw。若在序列F中,除直流分量外,fd或fw为序列F中的最大值,则将该序列标识为备选周期时间序列。
步骤2.2,根据自相关系数判断备选周期序列是否为真正周期序列且确定周期大小。
自相关系数反映的是时间序列不同时间的相关程度,当自相关系数值在区间(0.6,0.8]时,为强正相关,自相关系数值在区间(0.8,1.0]时,为极强正相关。若时间序列为周期时间序列,当自相关数据延迟相位等于周期时,自相关系数的值会很大。根据此原理,在此使用皮尔逊相关系数计算不同相位差的自相关系数值,其原理公式为:
Figure BDA00034883941600000214
其中
Figure BDA00034883941600000215
表示时间序列
Figure BDA00034883941600000216
相位为l的数据延迟,cov(·)和std(·)分别表示协方差和标准差,
Figure BDA00034883941600000217
表示延迟为l的自相关系数值。令以一天和以一周为周期的时间序列的周期长度分别为d和w,将滞后相位为一天时长d的自相关系数记为
Figure BDA00034883941600000218
滞后相位为一周时长w的自相关系数记为
Figure BDA00034883941600000219
同时令自相关系数阈值为ρts,通过
Figure BDA00034883941600000220
和ρts的比较确定备选周期序列是否为真正周期序列,其比较公式为:
Figure BDA0003488394160000031
通过上式将时间序列分为周期时间序列和非周期时间序列。为了判别周期序列的周期大小,需要比较周期序列
Figure BDA0003488394160000032
Figure BDA0003488394160000033
的大小,其比较公式为:
Figure BDA0003488394160000034
通过上式确定周期时间序列的周期大小。经过此步骤后时间序列可分为以一天为周期的时间序列、以一周为周期的时间序列和非周期时间序列。
步骤2.3,对非周期时间序列进行分类。
将非周期时间序列分为多零的非周期序列和非多零的非周期序列,两种时间序列具有不同的数据特征。将时间序列零值个数比例记为n,零值个数比例阈值记为nts,根据下式将非周期时间序列分为多零的非周期序列和非多零的非周期序列。
Figure BDA0003488394160000035
优选的,步骤3具体如下:
针对四种类型的时间序列分别设计了四种不同的异常标记方法,时间序列需根据分类的结果,匹配相应的标记方法对归一化后的时间序列
Figure BDA0003488394160000036
进行异常点的标记。
若时间序列被判定为以一天为周期的时间序列,则按照方法1的流程进行异常点的标记。方法1的具体流程为:
流程(1.1):取时间序列每天相同时刻的值,对每一时刻所有的值进行异常检测,标记出时间序列的离群值和部分上下文异常值。比如选取时间序列
Figure BDA0003488394160000037
中所有0点时刻的数据
Figure BDA0003488394160000038
然后使用N-sigma准则检测该序列的异常点。N-sigma准则中的N值为可调系数,该准则根据N值大小按照特定概率确定正常数值区间,并将超出区间的数值标记为异常数据,其表达式为:
Figure BDA0003488394160000039
其中μ和σ分别为相应序列的均值和标准差,xi为对应时间序列i时刻的数值。
流程(1.2):对时间序列数据做差分运算,通过差分数据检测原始时间序列的上下文异常点。将时间序列
Figure BDA0003488394160000041
进行差分后的序列记为
Figure BDA0003488394160000042
其差分公式为:
Figure BDA0003488394160000043
其中
Figure BDA0003488394160000044
表示差分序列
Figure BDA0003488394160000045
的第t个数据,
Figure BDA0003488394160000046
表示时间序列
Figure BDA0003488394160000047
的t时刻的数据。判断差分数据某一时刻数值是否为异常值,需要通过该时刻前面一定长度窗口的统计信息来确定当前时刻数值的范围。在此令滑动窗口的长度为s0,此时历史窗口的数据为
Figure BDA0003488394160000048
然后使用boxplot方法确定当前时刻正常数据范围为(Q1-k*IQR,Q3+k*IQR),其中Q3、Q1分别为数据
Figure BDA0003488394160000049
的上、下四分位数,IQR为Q3-Q1,k为可调系数。当前时刻数值超出正常数据范围时,便可将数值标记为异常值。有的周期数据每一天同时刻都会发生跳变,但从数据全局来看不属于异常,而boxplot算法也能将这样的数据检测出来,为了避免这类误判,对差分后的数据同样使用同时刻N-sigma准则来排除上述误判情况,将boxplot和同时刻N-sigma算法共同检测出的异常点作为差分数据最终的异常点。
流程(1.3):对差分数据标签进行修正。经过流程(1.2)后,便可得到差分序列
Figure BDA00034883941600000410
的标签序列
Figure BDA00034883941600000411
Figure BDA00034883941600000412
为标签序列
Figure BDA00034883941600000413
中t时刻的值,且
Figure BDA00034883941600000414
差分的目的是为了找出不符合变化趋势的点,对该类数据进行差分后,会出现一正一负的异常差分数据点。对于一个上下文异常的数据
Figure BDA00034883941600000415
会在
Figure BDA00034883941600000416
Figure BDA00034883941600000417
中出现一个正的、一个负的异常差分数据,若只检测到其中一个异常差分数据,则根据此点前后正负关系,修正标签序列
Figure BDA00034883941600000418
以确定异常差分数据对应原始数据的准确位置。
流程(1.4):对时间序列重采样并检测重采样时间序列的异常点。取时间序列
Figure BDA00034883941600000419
每一天的上四分位数,得到分位数时间序列
Figure BDA00034883941600000420
然后对分位数时间序列
Figure BDA00034883941600000421
使用滑动窗口结合boxplot的方法进行异常检测,若某时刻为正常点,标签记为0,为异常点标签记为1,同时将异常点的值从序列
Figure BDA00034883941600000422
中剔除,以免污染下一个滑动窗口的数据。为了防止在初始窗口中含有跳变点,还需使用同样大小的窗口从序列末尾向序列开头进行滑动,以完成反向异常检测,得到正向标记序列
Figure BDA00034883941600000423
和反向标记序列
Figure BDA00034883941600000424
流程(1.5):根据标记后的0、1序列确定时间序列跳变点位置。将
Figure BDA00034883941600000425
中的最长异常了序列的长度分别记为lf和lb,将规定的异常了序列长度阈值记为lts。首先将lf、lb跟阈值lts作比较,若两者都小于阈值,则说明时间序列中不存在长时间的异常值跳变,将标记序列
Figure BDA0003488394160000051
Figure BDA0003488394160000052
相加形成综合标签,将大于0的标签变为1,然后对综合标签进行差分,通过1与-1值的位置定位到异常跳变点。若lf、lb中有一个以上大于阈值lts,则说明原始时间序列中存在长时间的跳变,将跳变时间持续较长的标记序列作为主标记序列,对该序列进行差分,通过1与-1定位跳变点,并将发生最长时间跳变的跳变时刻记为tb,然后对另一条标记序列差分数据tb时刻附近的值进行归零操作,以防止两次标记结果冲突,造成误判。
若时间序列被判定为以一周为周期的时间序列,则需按照方法2的流程进行异常点的标记,方法2的具体流程为:
流程(2.1):将以一周为周期的时间序列拼接成工作日时间序列和周未时间序列。对于时间序列
Figure BDA0003488394160000053
由于工作日和周末的数据特征表现不一样,需要将时间序列的所有工作日数据拼接在一块组合成工作日序列
Figure BDA0003488394160000054
将所有的周末数据拼接在一块组合成周末时间序列
Figure BDA0003488394160000055
然后分别对序列
Figure BDA0003488394160000056
Figure BDA0003488394160000057
做异常标记。
流程(2.2-2.4):对序列
Figure BDA0003488394160000058
和序列
Figure BDA0003488394160000059
分别执行跟流程(1.1-1.3)相同的操作,获取时间序列
Figure BDA00034883941600000510
的离群值数据和上下文异常数据。
流程(2.5):检测以一周为周期的时间序列的跳变点。对工作日时间序列和周末时间序列进行重采样,取每天的上四分位数得到工作日分位数时间序列
Figure BDA00034883941600000511
和周末分位数时间序列
Figure BDA00034883941600000512
然后分别对这两个分位数时间序列整体使用boxplot算法检测异常,该异常点即为数据发生跳变的点。
若时间序列被判定为非多零的非周期时间序列,则按照方法3的流程进行异常点的标记,方法3的具体流程为:
流程(3.1):检测序列离群点。
对于序列
Figure BDA00034883941600000513
若想判断某一点
Figure BDA00034883941600000514
是否为异常值,需要使用该点前后长度为s1的窗口数据
Figure BDA00034883941600000515
进行统计判断。对该窗口数据使用N-sigma准则进行异常检测,若
Figure BDA00034883941600000516
为离群值,将该值标记为1,并将此值用窗口数据中每天相同时刻所有值的均值进行替换。对时间序列
Figure BDA00034883941600000517
使用该方法进行一次标记后,有的时间序列中仍存在部分的离群值,为了将离群值标记的更为完善,对序列
Figure BDA00034883941600000518
使用该方法进行第二次标记。
流程(3.2):对时间序列重采样并检测重采样时间序列的异常点。
取时间序列
Figure BDA0003488394160000061
每一天的中位数,得到中位数时间序列
Figure BDA0003488394160000062
然后对中位数时间序列
Figure BDA0003488394160000063
使用滑动窗口结合boxplot的方法进行异常检测,若某时刻为正常点,标签记为0,为异常点标签记为1,同时将异常点的值从序列
Figure BDA0003488394160000064
中剔除,以免污染下一个滑动窗口的数据。为了防止在初始窗口中含有跳变点,还需使用同样大小的窗口从序列末尾向序列开头进行滑动,以完成反向异常检测,得到正向标记序列
Figure BDA0003488394160000065
和反向标记序列
Figure BDA0003488394160000066
流程(3.3):根据标记后的0、1序列确定时间序列跳变点位置。此流程跟方法1中流程(1.5)的操作相同。
若时间序列被判定为多零的非周期时间序列,则按照方法4的流程进行异常点的标记,方法4的具体流程为:
流程(4.1):检测序列的离群点。与流程(3.1)的操作相同。
流程(4.2):检测序列跳变值。
对去除离群值后的时间序列进行重采样得到每天中位数时间序列
Figure BDA0003488394160000067
和每天均值时间序列
Figure BDA0003488394160000068
首先判断
Figure BDA0003488394160000069
序列是否为全零若全零则代表原始时间序列无跳变点,不需要进行跳变点检测,否则需要对
Figure BDA00034883941600000610
序列使用滑动窗口结合boxplot的方法进行异常检测,当平均值时间序列某一点被检测为异常,则需要返回该均值点当天使用箱型图算法去除当天离群点后再求该天均值,然后利用新的均值跟平均值时间序列的阈值作比较,若仍大于阈值,则该点被判定为异常值且在均值序列中剔除,同样需要对均值序列进行两遍异常检测得到正向标记序列
Figure BDA00034883941600000611
和反向标记序列
Figure BDA00034883941600000612
流程(4.3):根据标记后的0、1序列确定时间序列跳变点位置。此流程跟方法1中流程(1.5)的操作完全相同,在此不再进行赘述。
本发明有益效果如下:
本发明提供了一种适用于大规模时间序列异常标记的方法,该方法能够对时间序列的离群值、上下文异常值、以及跳变值进行一个准确高效的标记。本发明在提供一套流程化的标记算法的同时,也提出了一种通过0、1标记序列定位异常跳变点的方法,该方法在效率和准确率的综合性能上优于其它算法,在大规模时间序列中能够达到了一个令人满意的效果。
附图说明
图1为本发明实施例流程图;
图2为本发明实施例时间序列预处理算法流程图;
图3为本发明实施例时间序列分类算法流程图;
图4为以一天为周期的时间序列标记算法流程图。
具体实施方式
本发明公布的方法能够自动的对时间序列进行分类,然后快速的对每一类时间序列进行准确高效的异常数据标记。特别的,本方法对时间序列异常跳变点的检测性能表现较好,适用于大规模时间序列的数据分析和异常标记。
本算法实施例的数据集为某电信运营商收集到的某些地区一段时间的基站数据,数据每隔一小时进行采集,其数据包括关键性能指标数据(KPI)和通信***用于对设备和***资源使用情况进行统计的数据(counter)。
下面结合附图和实施例,对本发明所提供的技术方案做进一步的描述:
本发明公布的时间序列数据异常标记算法具体包括以下步骤:
步骤1、时间序列数据预处理;
步骤1.1,时间序列数据归一化。
不同的业务数据具有不同的数据范围,归一化的目的是为了消除不同数据之间的量纲差别,方便数据的比较和共同处理。令原始时间序列X={x1,x2,…,xN},其中N为序列的长度,xt为序列X某一时刻的具体数值,且t∈{1,2,…,N}。对原始时间序列X使用Min-Max方法进行归一化,将原始数据点映射到[0,1]区间。将归一化后的时间序列记为
Figure BDA0003488394160000071
其计算公式为:
Figure BDA0003488394160000072
其中max(X)为原始时间序列的最大值,min(X)为原始时间序列的最小值,
Figure BDA0003488394160000074
为时间序列
Figure BDA0003488394160000075
的t时刻归一化后的具体数据。
步骤1.2,补充时间序列缺失日期并填充缺失值。
数据集在收集过程中会因为多种原因导致部分数据和日期缺失,根据数据采集规则对序列缺失日期进行填补,并使用线性插值方法对序列
Figure BDA0003488394160000076
的缺大值进行填充,以得到连续性的时间序列
Figure BDA0003488394160000077
步骤1.3,对时间序列进行平滑处理。
为了在执行步骤2-时间序列分类时减小数据毛刺波动和异常值的影响,在此采用移动加权平均(Exponentially Weighted Moving Average,EWMA)算法对时间序列
Figure BDA0003488394160000078
进行平滑处理,并将处理后的时间序列记为
Figure BDA0003488394160000079
该算法的公式为:
Figure BDA00034883941600000710
其中
Figure BDA0003488394160000081
为序列
Figure BDA0003488394160000082
的t时刻的值,
Figure BDA0003488394160000083
为序列
Figure BDA0003488394160000084
的t时刻的平滑处理后的数据值,系数β表示移动加权下降的速率。
步骤2、时间序列分类;
步骤2.1,对预处理后的时间序列
Figure BDA0003488394160000085
进行快速傅里叶变换(FFT)以确定备选周期序列。
在实际数据中,许多的业务数据部是以一天或以一周为周期的时间序列。对于一个周期时间序列,其经过快速傅里叶变换后,在频域除直流分量外,一般会存在着一个较大的频率分量,通过对该频率分量的分析便可确定时间序列是否为备选周期序列。在此将序列
Figure BDA0003488394160000086
进行快速傅里叶变换后的序列记为F,且将序列F中周期为一天和一周的频率分量分别记为fd和fw。若在序列F中,除直流分量外,fd或fw为序列F中的最大值,则将该序列标识为备选周期时间序列。
步骤2.2,根据自相关系数判断备选周期序列是否为真正周期序列且确定周期大小。
自相关系数反映的是时间序列不同时间的相关程度,当自相关系数值在区间(0.6,0.8]时,为强正相关,自相关系数值在区间(0.8,1.0]时,为极强正相关。若时间序列为周期时间序列,当自相关数据延迟相位等于周期时,自相关系数的值会很大。根据此原理,在此使用皮尔逊相关系数计算不同相位差的自相关系数值,其原理公式为:
Figure BDA0003488394160000087
其中
Figure BDA0003488394160000088
表示时间序列
Figure BDA0003488394160000089
相位为l的数据延迟,cov(·)和std(·)分别表示协方差和标准差,
Figure BDA00034883941600000810
表示延迟为l的自相关系数值。令以一天和以一周为周期的时间序列的周期长度分别为d和w,将滞后相位为一天时长d的自相关系数记为
Figure BDA00034883941600000811
滞后相位为一周时长w的自相关系数记为
Figure BDA00034883941600000812
同时令自相关系数阈值为ρts,通过
Figure BDA00034883941600000813
和ρts的比较确定备选周期序列是否为真正周期序列,其比较公式为:
Figure BDA00034883941600000814
通过上式将时间序列分为周期时间序列和非周期时间序列。为了判别周期序列的周期大小,需要比较周期序列
Figure BDA00034883941600000815
Figure BDA00034883941600000816
的大小,其比较公式为:
Figure BDA0003488394160000091
通过上式确定周期时间序列的周期大小。经过此步骤后时间序列可分为以一天为周期的时间序列、以一周为周期的时间序列和非周期时间序列。
步骤2.3,对非周期时间序列进行分类。
将非周期时间序列分为多零的非周期序列和非多零的非周期序列,两种时间序列具有不同的数据特征。将时间序列零值个数比例记为n,零值个数比例阈值记为nts,根据下式将非周期时间序列分为多零的非周期序列和非多零的非周期序列。
Figure BDA0003488394160000092
步骤3、时间序列数据异常标记。
针对四种类型的时间序列分别设计了四种不同的异常标记方法,时间序列需根据分类的结果,匹配相应的标记方法对归一化后的时间序列
Figure BDA0003488394160000093
进行异常点的标记。
若时间序列被判定为以一天为周期的时间序列,则按照方法1的流程进行异常点的标记。方法1的具体流程为:
流程(1.1):取时间序列每天相同时刻的值,对每一时刻所有的值进行异常检测,标记出时间序列的离群值和部分上下文异常值。比如选取时间序列
Figure BDA0003488394160000094
中所有0点时刻的数据
Figure BDA0003488394160000095
然后使用N-sigma准则检测该序列的异常点。N-sigma准则中的N值为可调系数,该准则根据N值大小按照特定概率确定正常数值区间,并将超出区间的数值标记为异常数据,其表达式为:
Figure BDA0003488394160000096
其中μ和σ分别为相应序列的均值和标准差,xi为对应时间序列i时刻的数值。
流程(1.2):对时间序列数据做差分运算,通过差分数据检测原始时间序列的上下文异常点。将时间序列
Figure BDA0003488394160000097
进行差分后的序列记为
Figure BDA0003488394160000098
其差分公式为:
Figure BDA0003488394160000099
其中
Figure BDA00034883941600000910
表示差分序列
Figure BDA00034883941600000911
的第t个数据,
Figure BDA00034883941600000912
表示时间序列
Figure BDA00034883941600000913
的t时刻的数据。判断差分数据某一时刻数值是否为异常值,需要通过该时刻前面一定长度窗口的统计信息来确定当前时刻数值的范围。在此令滑动窗口的长度为s0,此时历史窗口的数据为
Figure BDA0003488394160000101
然后使用boxplot方法确定当前时刻正常数据范围为(Q1-k*IQR,Q3+k*IQR),其中Q3、Q1分别为数据
Figure BDA0003488394160000102
的上、下四分位数,IQR为Q3-Q1,k为可调系数。当前时刻数值超出正常数据范围时,便可将数值标记为异常值。有的周期数据每一天同时刻都会发生跳变,但从数据全局来看不属于异常,而boxplot算法也能将这样的数据检测出来,为了避免这类误判,对差分后的数据同样使用同时刻N-sigma准则来排除上述误判情况,将boxplot和同时刻N-sigma算法共同检测出的异常点作为差分数据最终的异常点。
流程(1.3):对差分数据标签进行修正。经过流程(1.2)后,便可得到差分序列
Figure BDA0003488394160000103
的标签序列
Figure BDA0003488394160000104
Figure BDA0003488394160000105
为标签序列
Figure BDA0003488394160000106
中t时刻的值,且
Figure BDA0003488394160000107
差分的目的是为了找出不符合变化趋势的点,对该类数据进行差分后,会出现一正一负的异常差分数据点。对于一个上下文异常的数据
Figure BDA0003488394160000108
会在
Figure BDA0003488394160000109
Figure BDA00034883941600001010
中出现一个正的、一个负的异常差分数据,若只检测到其中一个异常差分数据,则根据此点前后正负关系,修正标签序列
Figure BDA00034883941600001011
以确定异常差分数据对应原始数据的准确位置。
流程(1.4):对时间序列重采样并检测重采样时间序列的异常点。取时间序列
Figure BDA00034883941600001012
每一天的上四分位数,得到分位数时间序列
Figure BDA00034883941600001013
然后对分位数时间序列
Figure BDA00034883941600001014
使用滑动窗口结合boxplot的方法进行异常检测,若某时刻为正常点,标签记为0,为异常点标签记为1,同时将异常点的值从序列
Figure BDA00034883941600001015
中剔除,以免污染下一个滑动窗口的数据。为了防止在初始窗口中含有跳变点,还需使用同样大小的窗口从序列末尾向序列开头进行滑动,以完成反向异常检测,得到正向标记序列
Figure BDA00034883941600001016
和反向标记序列
Figure BDA00034883941600001017
流程(1.5):根据标记后的0、1序列确定时间序列跳变点位置。将
Figure BDA00034883941600001018
中的最长异常了序列的长度分别记为lf和lb,将规定的异常了序列长度阈值记为lts。首先将lf、lb跟阈值lts作比较,若两者都小于阈值,则说明时间序列中不存在长时间的异常值跳变,将标记序列
Figure BDA00034883941600001019
Figure BDA00034883941600001020
相加形成综合标签,将大于0的标签变为1,然后对综合标签进行差分,通过1与-1值的位置定位到异常跳变点。若lf、lb中有一个以上大于阈值lts,则说明原始时间序列中存在长时间的跳变,将跳变时间持续较长的标记序列作为主标记序列,对该序列进行差分,通过1与-1定位跳变点,并将发生最长时间跳变的跳变时刻记为tb,然后对另一条标记序列差分数据tb时刻附近的值进行归零操作,以防止两次标记结果冲突,造成误判。
若时间序列被判定为以一周为周期的时间序列,则需按照方法2的流程进行异常点的标记,方法2的具体流程为:
流程(2.1):将以一周为周期的时间序列拼接成工作日时间序列和周未时间序列。对于时间序列
Figure BDA0003488394160000111
由于工作日和周末的数据特征表现不一样,需要将时间序列的所有工作日数据拼接在一块组合成工作日序列
Figure BDA0003488394160000112
将所有的周末数据拼接在一块组合成周末时间序列
Figure BDA0003488394160000113
然后分别对序列
Figure BDA0003488394160000114
Figure BDA0003488394160000115
做异常标记。
流程(2.2-2.4):对序列
Figure BDA0003488394160000116
和序列
Figure BDA0003488394160000117
分别执行跟流程(1.1-1.3)相同的操作,获取时间序列
Figure BDA0003488394160000118
的离群值数据和上下文异常数据。
流程(2.5):检测以一周为周期的时间序列的跳变点。对工作日时间序列和周末时间序列进行重采样,取每天的上四分位数得到工作日分位数时间序列
Figure BDA0003488394160000119
和周末分位数时间序列
Figure BDA00034883941600001110
然后分别对这两个分位数时间序列整体使用boxplot算法检测异常,该异常点即为数据发生跳变的点。
若时间序列被判定为非多零的非周期时间序列,则按照方法3的流程进行异常点的标记,方法3的具体流程为:
流程(3.1):检测序列离群点。
对于序列
Figure BDA00034883941600001111
若想判断某一点
Figure BDA00034883941600001112
是否为异常值,需要使用该点前后长度为s1的窗口数据
Figure BDA00034883941600001113
进行统计判断。对该窗口数据使用N-sigma准则进行异常检测,若
Figure BDA00034883941600001114
为离群值,将该值标记为1,并将此值用窗口数据中每天相同时刻所有值的均值进行替换。对时间序列
Figure BDA00034883941600001115
使用该方法进行一次标记后,有的时间序列中仍存在部分的离群值,这是因为检测这些离群值的窗口数据中含有较多异常值,影响了N-sigma准则的判断。为了将离群值标记的更为完善,对序列
Figure BDA00034883941600001116
使用该方法进行第二次标记,以尽可能标记出该类时间序列所有的离群值。
流程(3.2):对时间序列重采样并检测重采样时间序列的异常点。
取时间序列
Figure BDA00034883941600001117
每一天的中位数,得到中位数时间序列
Figure BDA00034883941600001118
然后对中位数时间序列
Figure BDA00034883941600001119
使用滑动窗口结合boxplot的方法进行异常检测,若某时刻为正常点,标签记为0,为异常点标签记为1,同时将异常点的值从序列
Figure BDA00034883941600001120
中剔除,以免污染下一个滑动窗口的数据。为了防止在初始窗口中含有跳变点,还需使用同样大小的窗口从序列末尾向序列开头进行滑动,以完成反向异常检测,得到正向标记序列
Figure BDA0003488394160000121
和反向标记序列
Figure BDA0003488394160000122
流程(3.3):根据标记后的0、1序列确定时间序列跳变点位置。
根据标记后的0、1序列确定时间序列跳变点位置。将
Figure BDA0003488394160000123
中的最长异常了序列的长度分别记为lf和lb,将规定的异常了序列长度阈值记为lts。首先将lf、lb跟阈值lts作比较,若两者都小于阈值,则说明时间序列中不存在长时间的异常值跳变,将标记序列
Figure BDA0003488394160000124
Figure BDA0003488394160000125
相加形成综合标签,将大于0的标签变为1,然后对综合标签进行差分,通过1与-1值的位置定位到异常跳变点。若lf、lb中有一个以上大于阈值lts,则说明原始时间序列中存在长时间的跳变,将跳变时间持续较长的标记序列作为主标记序列,对该序列进行差分,通过1与-1定位跳变点,并将发生最长时间跳变的跳变时刻记为tb,然后对另一条标记序列差分数据tb时刻附近的值进行归零操作,以防止两次标记结果冲突,造成误判。
若时间序列被判定为多零的非周期时间序列,则按照方法4的流程进行异常点的标记,方法4的具体流程为:
流程(4.1):检测序列的离群点。
对于序列
Figure BDA0003488394160000126
若想判断某一点
Figure BDA0003488394160000127
是否为异常值,需要使用该点前后长度为s1的窗口数据
Figure BDA0003488394160000128
进行统计判断。对该窗口数据使用N-sigma准则进行异常检测,若
Figure BDA0003488394160000129
为离群值,将该值标记为1,并将此值用窗口数据中每天相同时刻所有值的均值进行替换。对时间序列
Figure BDA00034883941600001210
使用该方法进行一次标记后,有的时间序列中仍存在部分的离群值,这是因为检测这些离群值的窗口数据中含有较多异常值,影响了N-sigma准则的判断。为了将离群值标记的更为完善,对序列
Figure BDA00034883941600001211
使用该方法进行第二次标记,以尽可能标记出该类时间序列所有的离群值。
流程(4.2):检测序列跳变值。
对去除离群值后的时间序列进行重采样得到每天中位数时间序列
Figure BDA00034883941600001212
和每天均值时间序列
Figure BDA00034883941600001213
首先判断
Figure BDA00034883941600001214
序列是否为全零,若全零则代表原始时间序列无跳变点,不需要进行跳变点检测,否则需要对
Figure BDA00034883941600001215
序列使用滑动窗口结合boxplot的方法进行异常检测,当平均值时间序列某一点被检测为异常,则需要返回该均值点当天使用箱型图算法去除当天离群点后再求该天均值,然后利用新的均值跟平均值时间序列的阈值作比较,若仍大于阈值,则该点被判定为异常值且在均值序列中剔除,同样需要对均值序列进行两遍异常检测得到正向标记序列
Figure BDA0003488394160000131
和反向标记序列
Figure BDA0003488394160000132
流程(4.3):根据标记后的0、1序列确定时间序列跳变点位置。
根据标记后的0、1序列确定时间序列跳变点位置。将
Figure BDA0003488394160000133
中的最长异常了序列的长度分别记为lf和lb,将规定的异常了序列长度阈值记为lts。首先将lf、lb跟阈值lts作比较,若两者都小于阈值,则说明时间序列中不存在长时间的异常值跳变,将标记序列
Figure BDA0003488394160000134
Figure BDA0003488394160000135
相加形成综合标签,将大于0的标签变为1,然后对综合标签进行差分,通过1与-1值的位置定位到异常跳变点。若lf、lb中有一个以上大于阈值lts,则说明原始时间序列中存在长时间的跳变,将跳变时间持续较长的标记序列作为主标记序列,对该序列进行差分,通过1与-1定位跳变点,并将发生最长时间跳变的跳变时刻记为tb,然后对另一条标记序列差分数据tb时刻附近的值进行归零操作,以防止两次标记结果冲突,造成误判。
图1为本发明实施例提供的算法流程图。如图1所示,首先对基站数据集进行预处理,得到预处理后的时间序列数据;然后将预处理后的时间序列进行分类,可以得到以一天或以一周为周期的周期时间序列、非多零或多零的非周期时间序列;最后对所述四种类型的时间序列进行异常标记,从而得到所有时间序列的异常标签。
图2为本申请提供的时间序列预处理过程示意图。具体的,执行步骤1.1-1.3,将基站时间序列X按照公式(1)执行后便可得到归一化后的时间序列
Figure BDA0003488394160000136
然后根据每一小时采集基站数据的规则,填补基站数据集中缺失的日期,并对缺失值进行线性插值以得到连续时间序列
Figure BDA0003488394160000137
最后根据公式(2)利用EWMA算法对序列
Figure BDA0003488394160000138
进行平滑处理从而得到平滑序列
Figure BDA0003488394160000139
此实施例中将EWMA算法的加权下降速率系数β设置为0.25。
图3为本申请的时间序列分类算法的流程图,对实施例基站数据进行可视化分析可以发现,KPI数据和counter数据中的周期序列的周期大小为一天或一周,即d=24,w=168。对预处理后的时间序列执行步骤2.1-2.3,首先对平滑序列
Figure BDA00034883941600001310
进行快速傅里叶变换,通过频域分量fd和fw的大小确定备选周期时间序列。然后利用公式(3)计算备选周期时间序列的自相关系数
Figure BDA00034883941600001311
本实施例将自相关系数阈值ρts设置为0.6,根据公式(4)中
Figure BDA00034883941600001312
和阈值ρts的比较,确定备选周期序列是否为真正周期序列,然后比较备选序列相关系数
Figure BDA00034883941600001313
Figure BDA00034883941600001314
的大小,从而确定周期序列的周期值。最后将步骤2.3中的零值比例阈值nts设置为0.2,当基站非周期时间序列数据中的零值比例n大于0.2时,就将该序列判定为多零的非周期序列,反之判定为非多零的非周期时间序列。
图4为本申请以一天为周期时间序列的标记算法流程图,若基站时间序列被判定为以一天为周期的时间序列,该时间序列就会执行步骤3中方法1的流程来进行异常标记。
具体的:执行流程(1.1)至流程(1.3),将以一天为周期时间序列的离群值和上下文异常值给标记出来。在本实施例中,将流程(1.1)和流程(1.2)中的N-sigma算法的N值设置为3.76,将流程(1.2)中的boxplot算法的k值设置为2.0。接着执行流程(1.4)和流程(1.5)标记时间序列的异常跳变点,将流程(1.4)中的滑动窗口长度s0设置为35,boxplot算法的k值设置为2.66,经过滑动窗口来回两次异常检测后便可得到标记序列
Figure BDA0003488394160000141
Figure BDA0003488394160000142
将流程(1.5)的lts设置为14,通过lf、lb与阈值lts的比较,用两标记序列的差分序列便可定位到时间序列的跳变点。
若基站时间序列被判定为以一周为周期的时间序列,该时间序列就会执行步骤3中方法2的流程来进行异常标记。
具体的:执行流程(2.1)将基站时间序列分成工作日时间序列
Figure BDA0003488394160000143
和周末时间序列
Figure BDA0003488394160000144
然后执行流程(2.2-2.4),找出以一周为周期的时间序列的离群值和上下文异常值,该流程跟流程(1.1-1.3)相同,且参数设定也相同。最后将流程(2.5)中的boxplot算法的k值设置为2.52,以完成此类时间序列跳变点的标记。
若基站时间序列被判定为非多零的非周期时间序列,该时间序列就会执行步骤3中方法3的流程来进行异常标记。
具体的:执行流程(3.1)标记非多零的非周期时间序列的离群值,将该流程滑动窗口的大小s1设置为168,N值设置为3.66。执行流程(3.2),将滑动窗口长度设置为21,boxplot算法的k值设为5.66。最后执行流程(3.3),将lts设置为14,以完成该类时间序列跳变点的标记。
若基站时间序列被判定为多零的非周期时间序列,该时间序列就会执行步骤3中方法4的流程来进行异常标记。
具体的:执行流程(4.1)标记多零的非周期时间序列的离群值,此流程跟流程(3.1)一样,且参数设置也相同。然后执行流程(4.2)对重采样时间序列做异常检测,将此方法滑动窗口的长度设置为21,箱型图系数k值设置为7.66,均值时间序列异常当天boxplot算法系数设置为2.0,最后执行流程(4.3)以完成异常跳变点的定位,此流程跟流程(1.5)相同,且参数设置也相同。
本发明对大规模时间序列跳变点标记表现效果较好,在能够快速高效的完成标记的同时,也能取得较高的准确率。表1为本实施例选取统计的各KPI跳变点的数据汇总,其中序列标记的精确率(precision)和召回率(recall)分别用P和R进行表示,其评估公式分别为:
Figure BDA0003488394160000151
Figure BDA0003488394160000152
其中TP为真正例,FP为假正例,FN为假反例。通过表格可以看出,该算法对基站KPI数据跳变点的标记效果较好,其综合P值达到了90.3%,综合R值达到了92.9%。
表1
KPI TP FN FP P R
KPI1 637 48 64 90.9% 93.0%
KPI2 345 20 35 90.8% 94.5%
KPI3 386 32 44 89.8% 92.3%
KPI4 403 36 48 89.4% 91.8%
综上所述,本发明提供了一种适用于大规模时间序列异常标记的方法,该方法能够对时间序列的离群值、上下文异常值、以及跳变值进行一个准确高效的标记。本发明在提供一套流程化的标记算法的同时,也提出了一种通过0、1标记序列定位异常跳变点的方法,该方法在效率和准确率的综合性能上优于其它算法,在实施例中达到了一个较为满意的效果。

Claims (4)

1.一种时间序列数据异常标记方法,其特征在于,包括以下步骤:
步骤1、时间序列数据预处理;
步骤2、时间序列分类;
步骤3、时间序列数据异常标记。
2.根据权利要求1所述的一种时间序列数据异常标记方法,其特征在于,步骤1具体如下:
步骤1.1,时间序列数据归一化;
令原始时间序列X={x1,x2,…,xN},其中N为序列的长度,xt为序列X某一时刻的具体数值,且t∈{1,2,…,N};对原始时间序列X使用Min-Max方法进行归一化,将原始数据点映射到[0,1]区间;将归一化后的时间序列记为
Figure FDA0003488394150000011
其计算公式为:
Figure FDA0003488394150000012
其中max(X)为原始时间序列的最大值,min(X)为原始时间序列的最小值,
Figure FDA0003488394150000013
为时间序列
Figure FDA0003488394150000014
的t时刻归一化后的具体数据;
步骤1.2,补充时间序列缺失日期并填充缺失值;
数据集在收集过程中会因为多种原因导致部分数据和日期缺失,根据数据采集规则对序列缺失日期进行填补,并使用线性插值方法对序列
Figure FDA0003488394150000015
的缺失值进行填充,以得到连续性的时间序列
Figure FDA0003488394150000016
步骤1.3,对时间序列进行平滑处理;
采用移动加权平均算法对时间序列
Figure FDA0003488394150000017
进行平滑处理,并将处理后的时间序列记为
Figure FDA0003488394150000018
该算法的公式为:
Figure FDA0003488394150000019
其中
Figure FDA00034883941500000110
为序列
Figure FDA00034883941500000111
的t时刻的值,
Figure FDA00034883941500000112
为序列
Figure FDA00034883941500000113
的t时刻的平滑处理后的数据值,系数β表示移动加权下降的速率。
3.根据权利要求2所述的一种时间序列数据异常标记方法,其特征在于,步骤2具体如下:
步骤2.1,对预处理后的时间序列
Figure FDA00034883941500000114
进行快速傅里叶变换(FFT)以确定备选周期序列;
将序列
Figure FDA00034883941500000115
进行快速傅里叶变换后的序列记为F,且将序列F中周期为一天和一周的频率分量分别记为fd和fw;若在序列F中,除直流分量外,fd或fw为序列F中的最大值,则将该序列标识为备选周期时间序列;
步骤2.2,根据自相关系数判断备选周期序列是否为真正周期序列且确定周期大小;
自相关系数反映的是时间序列不同时间的相关程度,当自相关系数值在区间(0.6,0.8]时,为强正相关,自相关系数值在区间(0.8,1.0]时,为极强正相关;若时间序列为周期时间序列,当自相关数据延迟相位等于周期时,自相关系数的值会很大;根据此原理,在此使用皮尔逊相关系数计算不同相位差的自相关系数值,其原理公式为:
Figure FDA0003488394150000021
其中
Figure FDA0003488394150000022
表示时间序列
Figure FDA0003488394150000023
相位为l的数据延迟,cov(·)和std(·)分别表示协方差和标准差,
Figure FDA0003488394150000024
表示延迟为l的自相关系数值;令以一天和以一周为周期的时间序列的周期长度分别为d和w,将滞后相位为一天时长d的自相关系数记为
Figure FDA0003488394150000025
滞后相位为一周时长w的自相关系数记为
Figure FDA0003488394150000026
同时令自相关系数阈值为ρts,通过
Figure FDA0003488394150000027
和ρts的比较确定备选周期序列是否为真正周期序列,其比较公式为:
Figure FDA0003488394150000028
通过上式将时间序列分为周期时间序列和非周期时间序列;为了判别周期序列的周期大小,需要比较周期序列
Figure FDA0003488394150000029
Figure FDA00034883941500000210
的大小,其比较公式为:
Figure FDA00034883941500000211
通过上式确定周期时间序列的周期大小;经过此步骤后时间序列可分为以一天为周期的时间序列、以一周为周期的时间序列和非周期时间序列;
步骤2.3,对非周期时间序列进行分类;
将非周期时间序列分为多零的非周期序列和非多零的非周期序列,两种时间序列具有不同的数据特征;将时间序列零值个数比例记为n,零值个数比例阈值记为nts,根据下式将非周期时间序列分为多零的非周期序列和非多零的非周期序列;
Figure FDA00034883941500000212
4.根据权利要求3所述的一种时间序列数据异常标记方法,其特征在于,步骤3具体如下:
针对四种类型的时间序列分别设计了四种不同的异常标记方法,时间序列需根据分类的结果,匹配相应的标记方法对归一化后的时间序列
Figure FDA00034883941500000213
进行异常点的标记;
若时间序列被判定为以一天为周期的时间序列,则按照方法1的流程进行异常点的标记;方法1的具体流程为:
流程(1.1):取时间序列每天相同时刻的值,对每一时刻所有的值进行异常检测,标记出时间序列的离群值和部分上下文异常值;比如选取时间序列
Figure FDA0003488394150000031
中所有0点时刻的数据
Figure FDA0003488394150000032
然后使用N-sigma准则检测该序列的异常点;N-sigma准则中的N值为可调系数,该准则根据N值大小按照特定概率确定正常数值区间,并将超出区间的数值标记为异常数据,其表达式为:
Figure FDA0003488394150000033
其中μ和σ分别为相应序列的均值和标准差,xi为对应时间序列i时刻的数值;
流程(1.2):对时间序列数据做差分运算,通过差分数据检测原始时间序列的上下文异常点;将时间序列
Figure FDA0003488394150000034
进行差分后的序列记为
Figure FDA0003488394150000035
其差分公式为:
Figure FDA0003488394150000036
其中
Figure FDA0003488394150000037
表示差分序列
Figure FDA0003488394150000038
的第t个数据,
Figure FDA0003488394150000039
表示时间序列
Figure FDA00034883941500000310
的t时刻的数据;判断差分数据某一时刻数值是否为异常值,需要通过该时刻前面一定长度窗口的统计信息来确定当前时刻数值的范围;在此令滑动窗口的长度为s0,此时历史窗口的数据为
Figure FDA00034883941500000311
然后使用boxplot方法确定当前时刻正常数据范围为(Q1-k*IQR,Q3+k*IQR),其中Q3、Q1分别为数据
Figure FDA00034883941500000312
的上、下四分位数,IQR为Q3-Q1,k为可调系数;当前时刻数值超出正常数据范围时,便可将数值标记为异常值;有的周期数据每一天同时刻都会发生跳变,但从数据全局来看不属于异常,而boxplot算法也能将这样的数据检测出来,为了避免这类误判,对差分后的数据同样使用同时刻N-sigma准则来排除上述误判情况,将boxplot和同时刻N-sigma算法共同检测出的异常点作为差分数据最终的异常点;
流程(1.3):对差分数据标签进行修正;经过流程(1.2)后,便可得到差分序列
Figure FDA00034883941500000313
的标签序列
Figure FDA00034883941500000314
Figure FDA00034883941500000315
为标签序列
Figure FDA00034883941500000316
中t时刻的值,且
Figure FDA00034883941500000317
差分的目的是为了找出不符合变化趋势的点,对该类数据进行差分后,会出现一正一负的异常差分数据点;对于一个上下文异常的数据
Figure FDA00034883941500000318
会在
Figure FDA00034883941500000319
Figure FDA00034883941500000320
中出现一个正的、一个负的异常差分数据,若只检测到其中一个异常差分数据,则根据此点前后正负关系,修正标签序列
Figure FDA00034883941500000321
以确定异常差分数据对应原始数据的准确位置;
流程(1.4):对时间序列重采样并检测重采样时间序列的异常点;取时间序列
Figure FDA00034883941500000322
每一天的上四分位数,得到分位数时间序列
Figure FDA00034883941500000323
然后对分位数时间序列
Figure FDA00034883941500000324
使用滑动窗口结合boxplot的方法进行异常检测,若某时刻为正常点,标签记为0,为异常点标签记为1,同时将异常点的值从序列
Figure FDA0003488394150000041
中剔除,以免污染下一个滑动窗口的数据;为了防止在初始窗口中含有跳变点,还需使用同样大小的窗口从序列末尾向序列开头进行滑动,以完成反向异常检测,得到正向标记序列
Figure FDA0003488394150000042
和反向标记序列
Figure FDA0003488394150000043
流程(1.5):根据标记后的0、1序列确定时间序列跳变点位置;将
Figure FDA0003488394150000044
中的最长异常子序列的长度分别记为lf和lb,将规定的异常子序列长度阈值记为lts;首先将lf、lb跟阈值lts作比较,若两者都小于阈值,则说明时间序列中不存在长时间的异常值跳变,将标记序列
Figure FDA0003488394150000045
Figure FDA0003488394150000046
相加形成综合标签,将大于0的标签变为1,然后对综合标签进行差分,通过1与-1值的位置定位到异常跳变点;若lf、lb中有一个以上大于阈值lts,则说明原始时间序列中存在长时间的跳变,将跳变时间持续较长的标记序列作为主标记序列,对该序列进行差分,通过1与-1定位跳变点,并将发生最长时间跳变的跳变时刻记为tb,然后对另一条标记序列差分数据tb时刻附近的值进行归零操作,以防止两次标记结果冲突,造成误判;
若时间序列被判定为以一周为周期的时间序列,则需按照方法2的流程进行异常点的标记,方法2的具体流程为:
流程(2.1):将以一周为周期的时间序列拼接成工作日时间序列和周未时间序列;对于时间序列
Figure FDA0003488394150000047
由于工作日和周末的数据特征表现不一样,需要将时间序列的所有工作日数据拼接在一块组合成工作日序列
Figure FDA0003488394150000048
将所有的周末数据拼接在一块组合成周末时间序列
Figure FDA0003488394150000049
然后分别对序列
Figure FDA00034883941500000410
Figure FDA00034883941500000411
做异常标记;
流程(2.2-2.4):对序列
Figure FDA00034883941500000412
和序列
Figure FDA00034883941500000413
分别执行跟流程(1.1-1.3)相同的操作,获取时间序列
Figure FDA00034883941500000414
的离群值数据和上下文异常数据;
流程(2.5):检测以一周为周期的时间序列的跳变点;对工作日时间序列和周末时间序列进行重采样,取每天的上四分位数得到工作日分位数时间序列
Figure FDA00034883941500000415
和周末分位数时间序列
Figure FDA00034883941500000416
然后分别对这两个分位数时间序列整体使用boxplot算法检测异常,该异常点即为数据发生跳变的点;
若时间序列被判定为非多零的非周期时间序列,则按照方法3的流程进行异常点的标记,方法3的具体流程为:
流程(3.1):检测序列离群点;
对于序列
Figure FDA00034883941500000417
若想判断某一点
Figure FDA00034883941500000418
是否为异常值,需要使用该点前后长度为s1的窗口数据
Figure FDA00034883941500000419
进行统计判断;对该窗口数据使用N-sigma准则进行异常检测,若
Figure FDA00034883941500000420
为离群值,将该值标记为1,并将此值用窗口数据中每天相同时刻所有值的均值进行替换;对时间序列
Figure FDA00034883941500000421
使用该方法进行一次标记后,有的时间序列中仍存在部分的离群值,为了将离群值标记的更为完善,对序列
Figure FDA0003488394150000051
使用该方法进行第二次标记;
流程(3.2):对时间序列重采样并检测重采样时间序列的异常点;
取时间序列
Figure FDA0003488394150000052
每一天的中位数,得到中位数时间序列
Figure FDA0003488394150000053
然后对中位数时间序列
Figure FDA0003488394150000054
使用滑动窗口结合boxplot的方法进行异常检测,若某时刻为正常点,标签记为0,为异常点标签记为1,同时将异常点的值从序列
Figure FDA0003488394150000055
中剔除,以免污染下一个滑动窗口的数据;为了防止在初始窗口中含有跳变点,还需使用同样大小的窗口从序列末尾向序列开头进行滑动,以完成反向异常检测,得到正向标记序列
Figure FDA0003488394150000056
和反向标记序列
Figure FDA0003488394150000057
流程(3.3):根据标记后的0、1序列确定时间序列跳变点位置;此流程跟方法1中流程(1.5)的操作相同;
若时间序列被判定为多零的非周期时间序列,则按照方法4的流程进行异常点的标记,方法4的具体流程为:
流程(4.1):检测序列的离群点;与流程(3.1)的操作相同;
流程(4.2):检测序列跳变值;
对去除离群值后的时间序列进行重采样得到每天中位数时间序列
Figure FDA0003488394150000058
和每天均值时间序列
Figure FDA0003488394150000059
首先判断
Figure FDA00034883941500000510
序列是否为全零,若全零则代表原始时间序列无跳变点,不需要进行跳变点检测,否则需要对
Figure FDA00034883941500000511
序列使用滑动窗口结合boxplot的方法进行异常检测,当平均值时间序列某一点被检测为异常,则需要返回该均值点当天使用箱型图算法去除当天离群点后再求该天均值,然后利用新的均值跟平均值时间序列的阈值作比较,若仍大于阈值,则该点被判定为异常值且在均值序列中剔除,同样需要对均值序列进行两遍异常检测得到正向标记序列
Figure FDA00034883941500000512
和反向标记序列
Figure FDA00034883941500000513
流程(4.3):根据标记后的0、1序列确定时间序列跳变点位置;此流程跟方法1中流程(1.5)的操作完全相同,在此不再进行赘述。
CN202210090576.6A 2022-01-25 2022-01-25 一种时间序列数据异常标记方法 Pending CN114490156A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210090576.6A CN114490156A (zh) 2022-01-25 2022-01-25 一种时间序列数据异常标记方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210090576.6A CN114490156A (zh) 2022-01-25 2022-01-25 一种时间序列数据异常标记方法

Publications (1)

Publication Number Publication Date
CN114490156A true CN114490156A (zh) 2022-05-13

Family

ID=81474025

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210090576.6A Pending CN114490156A (zh) 2022-01-25 2022-01-25 一种时间序列数据异常标记方法

Country Status (1)

Country Link
CN (1) CN114490156A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115080555A (zh) * 2022-08-18 2022-09-20 北京融信数联科技有限公司 一种基于信令获取人口数据判别离群点的方法、***和介质
CN115410342A (zh) * 2022-08-26 2022-11-29 安徽省地质矿产勘查局332地质队 一种基于裂缝计实时监测的滑坡灾害智能预警方法
CN116299019A (zh) * 2023-04-13 2023-06-23 合肥国轩高科动力能源有限公司 锂电池数据采集异常识别方法、***、存储介质及设备
CN117609928A (zh) * 2024-01-23 2024-02-27 华北电力科学研究院有限责任公司 基于电力数据的污染物排放量异常识别方法与装置
CN117743808A (zh) * 2024-02-20 2024-03-22 中铁西南科学研究院有限公司 一种隧道变形预测方法、***、设备及介质

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115080555A (zh) * 2022-08-18 2022-09-20 北京融信数联科技有限公司 一种基于信令获取人口数据判别离群点的方法、***和介质
CN115410342A (zh) * 2022-08-26 2022-11-29 安徽省地质矿产勘查局332地质队 一种基于裂缝计实时监测的滑坡灾害智能预警方法
CN115410342B (zh) * 2022-08-26 2023-08-11 安徽省地质矿产勘查局332地质队 一种基于裂缝计实时监测的滑坡灾害智能预警方法
CN116299019A (zh) * 2023-04-13 2023-06-23 合肥国轩高科动力能源有限公司 锂电池数据采集异常识别方法、***、存储介质及设备
CN116299019B (zh) * 2023-04-13 2024-04-02 合肥国轩高科动力能源有限公司 锂电池数据采集异常识别方法、***、存储介质及设备
CN117609928A (zh) * 2024-01-23 2024-02-27 华北电力科学研究院有限责任公司 基于电力数据的污染物排放量异常识别方法与装置
CN117609928B (zh) * 2024-01-23 2024-04-05 华北电力科学研究院有限责任公司 基于电力数据的污染物排放量异常识别方法与装置
CN117743808A (zh) * 2024-02-20 2024-03-22 中铁西南科学研究院有限公司 一种隧道变形预测方法、***、设备及介质
CN117743808B (zh) * 2024-02-20 2024-05-14 中铁西南科学研究院有限公司 一种隧道变形预测方法、***、设备及介质

Similar Documents

Publication Publication Date Title
CN114490156A (zh) 一种时间序列数据异常标记方法
CA2634328C (en) Method and system for trend detection and analysis
CA2931624A1 (en) Systems and methods for event detection and diagnosis
CN113838054B (zh) 基于人工智能的机械零件表面损伤检测方法
CN110363339B (zh) 一种基于电机参数进行预测性维护的方法与***
CN109238455B (zh) 一种基于图论的旋转机械振动信号监测方法及***
JP2015011027A (ja) 時系列データにおける異常を検出する方法
CN109995561B (zh) 通信网络故障定位的方法、装置、设备及介质
CN112000081B (zh) 基于多块信息提取和马氏距离的故障监测方法及***
KR20190098254A (ko) 불량 요인 추정 장치 및 불량 요인 추정 방법
CN113064796B (zh) 一种无监督指标异常检测方法
CN112380992B (zh) 一种加工过程监控数据准确性评估与优化方法及装置
CN110083803A (zh) 基于时间序列arima模型取水异常检测方法与***
CN110474862B (zh) 一种网络流量异常检测方法及装置
CN108257365A (zh) 一种基于全局不确定性证据动态融合的工业报警器设计方法
Wen et al. A new method for identifying the ball screw degradation level based on the multiple classifier system
CN115220396A (zh) 一种数控机床智能监控方法及***
CN114020598B (zh) 一种时间序列数据的异常检测方法、装置及设备
WO2020166236A1 (ja) 作業効率評価方法、作業効率評価装置、及びプログラム
CN116708038A (zh) 基于资产测绘的工业互联网企业网络安全威胁识别方法
CN116503025B (zh) 一种基于工作流引擎的业务工单流程处理方法
JP5637157B2 (ja) 無線局データベース作成装置、電波監視装置、方法およびプログラム
CN114371677B (zh) 基于谱半径-区间主成分分析的工业过程状态监测方法
CN115904955A (zh) 性能指标的诊断方法、装置、终端设备及存储介质
CN101923605B (zh) 铁路防灾风预警方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination