CN114490156A - 一种时间序列数据异常标记方法 - Google Patents
一种时间序列数据异常标记方法 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0766—Error or fault reporting or storing
- G06F11/0772—Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/079—Root cause analysis, i.e. error or fault diagnosis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/141—Discrete Fourier transforms
- G06F17/142—Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/18—Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification 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]区间。将归一化后的时间序列记为其计算公式为:
步骤1.2,补充时间序列缺失日期并填充缺失值。
步骤1.3,对时间序列进行平滑处理。
优选的,步骤2具体如下:
步骤2.2,根据自相关系数判断备选周期序列是否为真正周期序列且确定周期大小。
自相关系数反映的是时间序列不同时间的相关程度,当自相关系数值在区间(0.6,0.8]时,为强正相关,自相关系数值在区间(0.8,1.0]时,为极强正相关。若时间序列为周期时间序列,当自相关数据延迟相位等于周期时,自相关系数的值会很大。根据此原理,在此使用皮尔逊相关系数计算不同相位差的自相关系数值,其原理公式为:
其中表示时间序列相位为l的数据延迟,cov(·)和std(·)分别表示协方差和标准差,表示延迟为l的自相关系数值。令以一天和以一周为周期的时间序列的周期长度分别为d和w,将滞后相位为一天时长d的自相关系数记为滞后相位为一周时长w的自相关系数记为同时令自相关系数阈值为ρts,通过和ρts的比较确定备选周期序列是否为真正周期序列,其比较公式为:
通过上式确定周期时间序列的周期大小。经过此步骤后时间序列可分为以一天为周期的时间序列、以一周为周期的时间序列和非周期时间序列。
步骤2.3,对非周期时间序列进行分类。
将非周期时间序列分为多零的非周期序列和非多零的非周期序列,两种时间序列具有不同的数据特征。将时间序列零值个数比例记为n,零值个数比例阈值记为nts,根据下式将非周期时间序列分为多零的非周期序列和非多零的非周期序列。
优选的,步骤3具体如下:
若时间序列被判定为以一天为周期的时间序列,则按照方法1的流程进行异常点的标记。方法1的具体流程为:
流程(1.1):取时间序列每天相同时刻的值,对每一时刻所有的值进行异常检测,标记出时间序列的离群值和部分上下文异常值。比如选取时间序列中所有0点时刻的数据然后使用N-sigma准则检测该序列的异常点。N-sigma准则中的N值为可调系数,该准则根据N值大小按照特定概率确定正常数值区间,并将超出区间的数值标记为异常数据,其表达式为:
其中μ和σ分别为相应序列的均值和标准差,xi为对应时间序列i时刻的数值。
其中表示差分序列的第t个数据,表示时间序列的t时刻的数据。判断差分数据某一时刻数值是否为异常值,需要通过该时刻前面一定长度窗口的统计信息来确定当前时刻数值的范围。在此令滑动窗口的长度为s0,此时历史窗口的数据为然后使用boxplot方法确定当前时刻正常数据范围为(Q1-k*IQR,Q3+k*IQR),其中Q3、Q1分别为数据的上、下四分位数,IQR为Q3-Q1,k为可调系数。当前时刻数值超出正常数据范围时,便可将数值标记为异常值。有的周期数据每一天同时刻都会发生跳变,但从数据全局来看不属于异常,而boxplot算法也能将这样的数据检测出来,为了避免这类误判,对差分后的数据同样使用同时刻N-sigma准则来排除上述误判情况,将boxplot和同时刻N-sigma算法共同检测出的异常点作为差分数据最终的异常点。
流程(1.3):对差分数据标签进行修正。经过流程(1.2)后,便可得到差分序列的标签序列令为标签序列中t时刻的值,且差分的目的是为了找出不符合变化趋势的点,对该类数据进行差分后,会出现一正一负的异常差分数据点。对于一个上下文异常的数据会在和中出现一个正的、一个负的异常差分数据,若只检测到其中一个异常差分数据,则根据此点前后正负关系,修正标签序列以确定异常差分数据对应原始数据的准确位置。
流程(1.4):对时间序列重采样并检测重采样时间序列的异常点。取时间序列每一天的上四分位数,得到分位数时间序列然后对分位数时间序列使用滑动窗口结合boxplot的方法进行异常检测,若某时刻为正常点,标签记为0,为异常点标签记为1,同时将异常点的值从序列中剔除,以免污染下一个滑动窗口的数据。为了防止在初始窗口中含有跳变点,还需使用同样大小的窗口从序列末尾向序列开头进行滑动,以完成反向异常检测,得到正向标记序列和反向标记序列
流程(1.5):根据标记后的0、1序列确定时间序列跳变点位置。将中的最长异常了序列的长度分别记为lf和lb,将规定的异常了序列长度阈值记为lts。首先将lf、lb跟阈值lts作比较,若两者都小于阈值,则说明时间序列中不存在长时间的异常值跳变,将标记序列与相加形成综合标签,将大于0的标签变为1,然后对综合标签进行差分,通过1与-1值的位置定位到异常跳变点。若lf、lb中有一个以上大于阈值lts,则说明原始时间序列中存在长时间的跳变,将跳变时间持续较长的标记序列作为主标记序列,对该序列进行差分,通过1与-1定位跳变点,并将发生最长时间跳变的跳变时刻记为tb,然后对另一条标记序列差分数据tb时刻附近的值进行归零操作,以防止两次标记结果冲突,造成误判。
若时间序列被判定为以一周为周期的时间序列,则需按照方法2的流程进行异常点的标记,方法2的具体流程为:
流程(2.1):将以一周为周期的时间序列拼接成工作日时间序列和周未时间序列。对于时间序列由于工作日和周末的数据特征表现不一样,需要将时间序列的所有工作日数据拼接在一块组合成工作日序列将所有的周末数据拼接在一块组合成周末时间序列然后分别对序列和做异常标记。
流程(2.5):检测以一周为周期的时间序列的跳变点。对工作日时间序列和周末时间序列进行重采样,取每天的上四分位数得到工作日分位数时间序列和周末分位数时间序列然后分别对这两个分位数时间序列整体使用boxplot算法检测异常,该异常点即为数据发生跳变的点。
若时间序列被判定为非多零的非周期时间序列,则按照方法3的流程进行异常点的标记,方法3的具体流程为:
流程(3.1):检测序列离群点。
对于序列若想判断某一点是否为异常值,需要使用该点前后长度为s1的窗口数据进行统计判断。对该窗口数据使用N-sigma准则进行异常检测,若为离群值,将该值标记为1,并将此值用窗口数据中每天相同时刻所有值的均值进行替换。对时间序列使用该方法进行一次标记后,有的时间序列中仍存在部分的离群值,为了将离群值标记的更为完善,对序列使用该方法进行第二次标记。
流程(3.2):对时间序列重采样并检测重采样时间序列的异常点。
取时间序列每一天的中位数,得到中位数时间序列然后对中位数时间序列使用滑动窗口结合boxplot的方法进行异常检测,若某时刻为正常点,标签记为0,为异常点标签记为1,同时将异常点的值从序列中剔除,以免污染下一个滑动窗口的数据。为了防止在初始窗口中含有跳变点,还需使用同样大小的窗口从序列末尾向序列开头进行滑动,以完成反向异常检测,得到正向标记序列和反向标记序列
流程(3.3):根据标记后的0、1序列确定时间序列跳变点位置。此流程跟方法1中流程(1.5)的操作相同。
若时间序列被判定为多零的非周期时间序列,则按照方法4的流程进行异常点的标记,方法4的具体流程为:
流程(4.1):检测序列的离群点。与流程(3.1)的操作相同。
流程(4.2):检测序列跳变值。
对去除离群值后的时间序列进行重采样得到每天中位数时间序列和每天均值时间序列首先判断序列是否为全零若全零则代表原始时间序列无跳变点,不需要进行跳变点检测,否则需要对序列使用滑动窗口结合boxplot的方法进行异常检测,当平均值时间序列某一点被检测为异常,则需要返回该均值点当天使用箱型图算法去除当天离群点后再求该天均值,然后利用新的均值跟平均值时间序列的阈值作比较,若仍大于阈值,则该点被判定为异常值且在均值序列中剔除,同样需要对均值序列进行两遍异常检测得到正向标记序列和反向标记序列
流程(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]区间。将归一化后的时间序列记为其计算公式为:
步骤1.2,补充时间序列缺失日期并填充缺失值。
步骤1.3,对时间序列进行平滑处理。
为了在执行步骤2-时间序列分类时减小数据毛刺波动和异常值的影响,在此采用移动加权平均(Exponentially Weighted Moving Average,EWMA)算法对时间序列进行平滑处理,并将处理后的时间序列记为该算法的公式为:
步骤2、时间序列分类;
在实际数据中,许多的业务数据部是以一天或以一周为周期的时间序列。对于一个周期时间序列,其经过快速傅里叶变换后,在频域除直流分量外,一般会存在着一个较大的频率分量,通过对该频率分量的分析便可确定时间序列是否为备选周期序列。在此将序列进行快速傅里叶变换后的序列记为F,且将序列F中周期为一天和一周的频率分量分别记为fd和fw。若在序列F中,除直流分量外,fd或fw为序列F中的最大值,则将该序列标识为备选周期时间序列。
步骤2.2,根据自相关系数判断备选周期序列是否为真正周期序列且确定周期大小。
自相关系数反映的是时间序列不同时间的相关程度,当自相关系数值在区间(0.6,0.8]时,为强正相关,自相关系数值在区间(0.8,1.0]时,为极强正相关。若时间序列为周期时间序列,当自相关数据延迟相位等于周期时,自相关系数的值会很大。根据此原理,在此使用皮尔逊相关系数计算不同相位差的自相关系数值,其原理公式为:
其中表示时间序列相位为l的数据延迟,cov(·)和std(·)分别表示协方差和标准差,表示延迟为l的自相关系数值。令以一天和以一周为周期的时间序列的周期长度分别为d和w,将滞后相位为一天时长d的自相关系数记为滞后相位为一周时长w的自相关系数记为同时令自相关系数阈值为ρts,通过和ρts的比较确定备选周期序列是否为真正周期序列,其比较公式为:
通过上式确定周期时间序列的周期大小。经过此步骤后时间序列可分为以一天为周期的时间序列、以一周为周期的时间序列和非周期时间序列。
步骤2.3,对非周期时间序列进行分类。
将非周期时间序列分为多零的非周期序列和非多零的非周期序列,两种时间序列具有不同的数据特征。将时间序列零值个数比例记为n,零值个数比例阈值记为nts,根据下式将非周期时间序列分为多零的非周期序列和非多零的非周期序列。
步骤3、时间序列数据异常标记。
若时间序列被判定为以一天为周期的时间序列,则按照方法1的流程进行异常点的标记。方法1的具体流程为:
流程(1.1):取时间序列每天相同时刻的值,对每一时刻所有的值进行异常检测,标记出时间序列的离群值和部分上下文异常值。比如选取时间序列中所有0点时刻的数据然后使用N-sigma准则检测该序列的异常点。N-sigma准则中的N值为可调系数,该准则根据N值大小按照特定概率确定正常数值区间,并将超出区间的数值标记为异常数据,其表达式为:
其中μ和σ分别为相应序列的均值和标准差,xi为对应时间序列i时刻的数值。
其中表示差分序列的第t个数据,表示时间序列的t时刻的数据。判断差分数据某一时刻数值是否为异常值,需要通过该时刻前面一定长度窗口的统计信息来确定当前时刻数值的范围。在此令滑动窗口的长度为s0,此时历史窗口的数据为然后使用boxplot方法确定当前时刻正常数据范围为(Q1-k*IQR,Q3+k*IQR),其中Q3、Q1分别为数据的上、下四分位数,IQR为Q3-Q1,k为可调系数。当前时刻数值超出正常数据范围时,便可将数值标记为异常值。有的周期数据每一天同时刻都会发生跳变,但从数据全局来看不属于异常,而boxplot算法也能将这样的数据检测出来,为了避免这类误判,对差分后的数据同样使用同时刻N-sigma准则来排除上述误判情况,将boxplot和同时刻N-sigma算法共同检测出的异常点作为差分数据最终的异常点。
流程(1.3):对差分数据标签进行修正。经过流程(1.2)后,便可得到差分序列的标签序列令为标签序列中t时刻的值,且差分的目的是为了找出不符合变化趋势的点,对该类数据进行差分后,会出现一正一负的异常差分数据点。对于一个上下文异常的数据会在和中出现一个正的、一个负的异常差分数据,若只检测到其中一个异常差分数据,则根据此点前后正负关系,修正标签序列以确定异常差分数据对应原始数据的准确位置。
流程(1.4):对时间序列重采样并检测重采样时间序列的异常点。取时间序列每一天的上四分位数,得到分位数时间序列然后对分位数时间序列使用滑动窗口结合boxplot的方法进行异常检测,若某时刻为正常点,标签记为0,为异常点标签记为1,同时将异常点的值从序列中剔除,以免污染下一个滑动窗口的数据。为了防止在初始窗口中含有跳变点,还需使用同样大小的窗口从序列末尾向序列开头进行滑动,以完成反向异常检测,得到正向标记序列和反向标记序列
流程(1.5):根据标记后的0、1序列确定时间序列跳变点位置。将中的最长异常了序列的长度分别记为lf和lb,将规定的异常了序列长度阈值记为lts。首先将lf、lb跟阈值lts作比较,若两者都小于阈值,则说明时间序列中不存在长时间的异常值跳变,将标记序列与相加形成综合标签,将大于0的标签变为1,然后对综合标签进行差分,通过1与-1值的位置定位到异常跳变点。若lf、lb中有一个以上大于阈值lts,则说明原始时间序列中存在长时间的跳变,将跳变时间持续较长的标记序列作为主标记序列,对该序列进行差分,通过1与-1定位跳变点,并将发生最长时间跳变的跳变时刻记为tb,然后对另一条标记序列差分数据tb时刻附近的值进行归零操作,以防止两次标记结果冲突,造成误判。
若时间序列被判定为以一周为周期的时间序列,则需按照方法2的流程进行异常点的标记,方法2的具体流程为:
流程(2.1):将以一周为周期的时间序列拼接成工作日时间序列和周未时间序列。对于时间序列由于工作日和周末的数据特征表现不一样,需要将时间序列的所有工作日数据拼接在一块组合成工作日序列将所有的周末数据拼接在一块组合成周末时间序列然后分别对序列和做异常标记。
流程(2.5):检测以一周为周期的时间序列的跳变点。对工作日时间序列和周末时间序列进行重采样,取每天的上四分位数得到工作日分位数时间序列和周末分位数时间序列然后分别对这两个分位数时间序列整体使用boxplot算法检测异常,该异常点即为数据发生跳变的点。
若时间序列被判定为非多零的非周期时间序列,则按照方法3的流程进行异常点的标记,方法3的具体流程为:
流程(3.1):检测序列离群点。
对于序列若想判断某一点是否为异常值,需要使用该点前后长度为s1的窗口数据进行统计判断。对该窗口数据使用N-sigma准则进行异常检测,若为离群值,将该值标记为1,并将此值用窗口数据中每天相同时刻所有值的均值进行替换。对时间序列使用该方法进行一次标记后,有的时间序列中仍存在部分的离群值,这是因为检测这些离群值的窗口数据中含有较多异常值,影响了N-sigma准则的判断。为了将离群值标记的更为完善,对序列使用该方法进行第二次标记,以尽可能标记出该类时间序列所有的离群值。
流程(3.2):对时间序列重采样并检测重采样时间序列的异常点。
取时间序列每一天的中位数,得到中位数时间序列然后对中位数时间序列使用滑动窗口结合boxplot的方法进行异常检测,若某时刻为正常点,标签记为0,为异常点标签记为1,同时将异常点的值从序列中剔除,以免污染下一个滑动窗口的数据。为了防止在初始窗口中含有跳变点,还需使用同样大小的窗口从序列末尾向序列开头进行滑动,以完成反向异常检测,得到正向标记序列和反向标记序列
流程(3.3):根据标记后的0、1序列确定时间序列跳变点位置。
根据标记后的0、1序列确定时间序列跳变点位置。将中的最长异常了序列的长度分别记为lf和lb,将规定的异常了序列长度阈值记为lts。首先将lf、lb跟阈值lts作比较,若两者都小于阈值,则说明时间序列中不存在长时间的异常值跳变,将标记序列与相加形成综合标签,将大于0的标签变为1,然后对综合标签进行差分,通过1与-1值的位置定位到异常跳变点。若lf、lb中有一个以上大于阈值lts,则说明原始时间序列中存在长时间的跳变,将跳变时间持续较长的标记序列作为主标记序列,对该序列进行差分,通过1与-1定位跳变点,并将发生最长时间跳变的跳变时刻记为tb,然后对另一条标记序列差分数据tb时刻附近的值进行归零操作,以防止两次标记结果冲突,造成误判。
若时间序列被判定为多零的非周期时间序列,则按照方法4的流程进行异常点的标记,方法4的具体流程为:
流程(4.1):检测序列的离群点。
对于序列若想判断某一点是否为异常值,需要使用该点前后长度为s1的窗口数据进行统计判断。对该窗口数据使用N-sigma准则进行异常检测,若为离群值,将该值标记为1,并将此值用窗口数据中每天相同时刻所有值的均值进行替换。对时间序列使用该方法进行一次标记后,有的时间序列中仍存在部分的离群值,这是因为检测这些离群值的窗口数据中含有较多异常值,影响了N-sigma准则的判断。为了将离群值标记的更为完善,对序列使用该方法进行第二次标记,以尽可能标记出该类时间序列所有的离群值。
流程(4.2):检测序列跳变值。
对去除离群值后的时间序列进行重采样得到每天中位数时间序列和每天均值时间序列首先判断序列是否为全零,若全零则代表原始时间序列无跳变点,不需要进行跳变点检测,否则需要对序列使用滑动窗口结合boxplot的方法进行异常检测,当平均值时间序列某一点被检测为异常,则需要返回该均值点当天使用箱型图算法去除当天离群点后再求该天均值,然后利用新的均值跟平均值时间序列的阈值作比较,若仍大于阈值,则该点被判定为异常值且在均值序列中剔除,同样需要对均值序列进行两遍异常检测得到正向标记序列和反向标记序列
流程(4.3):根据标记后的0、1序列确定时间序列跳变点位置。
根据标记后的0、1序列确定时间序列跳变点位置。将中的最长异常了序列的长度分别记为lf和lb,将规定的异常了序列长度阈值记为lts。首先将lf、lb跟阈值lts作比较,若两者都小于阈值,则说明时间序列中不存在长时间的异常值跳变,将标记序列与相加形成综合标签,将大于0的标签变为1,然后对综合标签进行差分,通过1与-1值的位置定位到异常跳变点。若lf、lb中有一个以上大于阈值lts,则说明原始时间序列中存在长时间的跳变,将跳变时间持续较长的标记序列作为主标记序列,对该序列进行差分,通过1与-1定位跳变点,并将发生最长时间跳变的跳变时刻记为tb,然后对另一条标记序列差分数据tb时刻附近的值进行归零操作,以防止两次标记结果冲突,造成误判。
图1为本发明实施例提供的算法流程图。如图1所示,首先对基站数据集进行预处理,得到预处理后的时间序列数据;然后将预处理后的时间序列进行分类,可以得到以一天或以一周为周期的周期时间序列、非多零或多零的非周期时间序列;最后对所述四种类型的时间序列进行异常标记,从而得到所有时间序列的异常标签。
图2为本申请提供的时间序列预处理过程示意图。具体的,执行步骤1.1-1.3,将基站时间序列X按照公式(1)执行后便可得到归一化后的时间序列然后根据每一小时采集基站数据的规则,填补基站数据集中缺失的日期,并对缺失值进行线性插值以得到连续时间序列最后根据公式(2)利用EWMA算法对序列进行平滑处理从而得到平滑序列此实施例中将EWMA算法的加权下降速率系数β设置为0.25。
图3为本申请的时间序列分类算法的流程图,对实施例基站数据进行可视化分析可以发现,KPI数据和counter数据中的周期序列的周期大小为一天或一周,即d=24,w=168。对预处理后的时间序列执行步骤2.1-2.3,首先对平滑序列进行快速傅里叶变换,通过频域分量fd和fw的大小确定备选周期时间序列。然后利用公式(3)计算备选周期时间序列的自相关系数本实施例将自相关系数阈值ρts设置为0.6,根据公式(4)中和阈值ρts的比较,确定备选周期序列是否为真正周期序列,然后比较备选序列相关系数和的大小,从而确定周期序列的周期值。最后将步骤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,经过滑动窗口来回两次异常检测后便可得到标记序列和将流程(1.5)的lts设置为14,通过lf、lb与阈值lts的比较,用两标记序列的差分序列便可定位到时间序列的跳变点。
若基站时间序列被判定为以一周为周期的时间序列,该时间序列就会执行步骤3中方法2的流程来进行异常标记。
具体的:执行流程(2.1)将基站时间序列分成工作日时间序列和周末时间序列然后执行流程(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进行表示,其评估公式分别为:
其中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]区间;将归一化后的时间序列记为其计算公式为:
步骤1.2,补充时间序列缺失日期并填充缺失值;
步骤1.3,对时间序列进行平滑处理;
3.根据权利要求2所述的一种时间序列数据异常标记方法,其特征在于,步骤2具体如下:
步骤2.2,根据自相关系数判断备选周期序列是否为真正周期序列且确定周期大小;
自相关系数反映的是时间序列不同时间的相关程度,当自相关系数值在区间(0.6,0.8]时,为强正相关,自相关系数值在区间(0.8,1.0]时,为极强正相关;若时间序列为周期时间序列,当自相关数据延迟相位等于周期时,自相关系数的值会很大;根据此原理,在此使用皮尔逊相关系数计算不同相位差的自相关系数值,其原理公式为:
其中表示时间序列相位为l的数据延迟,cov(·)和std(·)分别表示协方差和标准差,表示延迟为l的自相关系数值;令以一天和以一周为周期的时间序列的周期长度分别为d和w,将滞后相位为一天时长d的自相关系数记为滞后相位为一周时长w的自相关系数记为同时令自相关系数阈值为ρts,通过和ρts的比较确定备选周期序列是否为真正周期序列,其比较公式为:
通过上式确定周期时间序列的周期大小;经过此步骤后时间序列可分为以一天为周期的时间序列、以一周为周期的时间序列和非周期时间序列;
步骤2.3,对非周期时间序列进行分类;
将非周期时间序列分为多零的非周期序列和非多零的非周期序列,两种时间序列具有不同的数据特征;将时间序列零值个数比例记为n,零值个数比例阈值记为nts,根据下式将非周期时间序列分为多零的非周期序列和非多零的非周期序列;
4.根据权利要求3所述的一种时间序列数据异常标记方法,其特征在于,步骤3具体如下:
若时间序列被判定为以一天为周期的时间序列,则按照方法1的流程进行异常点的标记;方法1的具体流程为:
流程(1.1):取时间序列每天相同时刻的值,对每一时刻所有的值进行异常检测,标记出时间序列的离群值和部分上下文异常值;比如选取时间序列中所有0点时刻的数据然后使用N-sigma准则检测该序列的异常点;N-sigma准则中的N值为可调系数,该准则根据N值大小按照特定概率确定正常数值区间,并将超出区间的数值标记为异常数据,其表达式为:
其中μ和σ分别为相应序列的均值和标准差,xi为对应时间序列i时刻的数值;
其中表示差分序列的第t个数据,表示时间序列的t时刻的数据;判断差分数据某一时刻数值是否为异常值,需要通过该时刻前面一定长度窗口的统计信息来确定当前时刻数值的范围;在此令滑动窗口的长度为s0,此时历史窗口的数据为然后使用boxplot方法确定当前时刻正常数据范围为(Q1-k*IQR,Q3+k*IQR),其中Q3、Q1分别为数据的上、下四分位数,IQR为Q3-Q1,k为可调系数;当前时刻数值超出正常数据范围时,便可将数值标记为异常值;有的周期数据每一天同时刻都会发生跳变,但从数据全局来看不属于异常,而boxplot算法也能将这样的数据检测出来,为了避免这类误判,对差分后的数据同样使用同时刻N-sigma准则来排除上述误判情况,将boxplot和同时刻N-sigma算法共同检测出的异常点作为差分数据最终的异常点;
流程(1.3):对差分数据标签进行修正;经过流程(1.2)后,便可得到差分序列的标签序列令为标签序列中t时刻的值,且差分的目的是为了找出不符合变化趋势的点,对该类数据进行差分后,会出现一正一负的异常差分数据点;对于一个上下文异常的数据会在和中出现一个正的、一个负的异常差分数据,若只检测到其中一个异常差分数据,则根据此点前后正负关系,修正标签序列以确定异常差分数据对应原始数据的准确位置;
流程(1.4):对时间序列重采样并检测重采样时间序列的异常点;取时间序列每一天的上四分位数,得到分位数时间序列然后对分位数时间序列使用滑动窗口结合boxplot的方法进行异常检测,若某时刻为正常点,标签记为0,为异常点标签记为1,同时将异常点的值从序列中剔除,以免污染下一个滑动窗口的数据;为了防止在初始窗口中含有跳变点,还需使用同样大小的窗口从序列末尾向序列开头进行滑动,以完成反向异常检测,得到正向标记序列和反向标记序列
流程(1.5):根据标记后的0、1序列确定时间序列跳变点位置;将中的最长异常子序列的长度分别记为lf和lb,将规定的异常子序列长度阈值记为lts;首先将lf、lb跟阈值lts作比较,若两者都小于阈值,则说明时间序列中不存在长时间的异常值跳变,将标记序列与相加形成综合标签,将大于0的标签变为1,然后对综合标签进行差分,通过1与-1值的位置定位到异常跳变点;若lf、lb中有一个以上大于阈值lts,则说明原始时间序列中存在长时间的跳变,将跳变时间持续较长的标记序列作为主标记序列,对该序列进行差分,通过1与-1定位跳变点,并将发生最长时间跳变的跳变时刻记为tb,然后对另一条标记序列差分数据tb时刻附近的值进行归零操作,以防止两次标记结果冲突,造成误判;
若时间序列被判定为以一周为周期的时间序列,则需按照方法2的流程进行异常点的标记,方法2的具体流程为:
流程(2.1):将以一周为周期的时间序列拼接成工作日时间序列和周未时间序列;对于时间序列由于工作日和周末的数据特征表现不一样,需要将时间序列的所有工作日数据拼接在一块组合成工作日序列将所有的周末数据拼接在一块组合成周末时间序列然后分别对序列和做异常标记;
流程(2.5):检测以一周为周期的时间序列的跳变点;对工作日时间序列和周末时间序列进行重采样,取每天的上四分位数得到工作日分位数时间序列和周末分位数时间序列然后分别对这两个分位数时间序列整体使用boxplot算法检测异常,该异常点即为数据发生跳变的点;
若时间序列被判定为非多零的非周期时间序列,则按照方法3的流程进行异常点的标记,方法3的具体流程为:
流程(3.1):检测序列离群点;
对于序列若想判断某一点是否为异常值,需要使用该点前后长度为s1的窗口数据进行统计判断;对该窗口数据使用N-sigma准则进行异常检测,若为离群值,将该值标记为1,并将此值用窗口数据中每天相同时刻所有值的均值进行替换;对时间序列使用该方法进行一次标记后,有的时间序列中仍存在部分的离群值,为了将离群值标记的更为完善,对序列使用该方法进行第二次标记;
流程(3.2):对时间序列重采样并检测重采样时间序列的异常点;
取时间序列每一天的中位数,得到中位数时间序列然后对中位数时间序列使用滑动窗口结合boxplot的方法进行异常检测,若某时刻为正常点,标签记为0,为异常点标签记为1,同时将异常点的值从序列中剔除,以免污染下一个滑动窗口的数据;为了防止在初始窗口中含有跳变点,还需使用同样大小的窗口从序列末尾向序列开头进行滑动,以完成反向异常检测,得到正向标记序列和反向标记序列
流程(3.3):根据标记后的0、1序列确定时间序列跳变点位置;此流程跟方法1中流程(1.5)的操作相同;
若时间序列被判定为多零的非周期时间序列,则按照方法4的流程进行异常点的标记,方法4的具体流程为:
流程(4.1):检测序列的离群点;与流程(3.1)的操作相同;
流程(4.2):检测序列跳变值;
对去除离群值后的时间序列进行重采样得到每天中位数时间序列和每天均值时间序列首先判断序列是否为全零,若全零则代表原始时间序列无跳变点,不需要进行跳变点检测,否则需要对序列使用滑动窗口结合boxplot的方法进行异常检测,当平均值时间序列某一点被检测为异常,则需要返回该均值点当天使用箱型图算法去除当天离群点后再求该天均值,然后利用新的均值跟平均值时间序列的阈值作比较,若仍大于阈值,则该点被判定为异常值且在均值序列中剔除,同样需要对均值序列进行两遍异常检测得到正向标记序列和反向标记序列
流程(4.3):根据标记后的0、1序列确定时间序列跳变点位置;此流程跟方法1中流程(1.5)的操作完全相同,在此不再进行赘述。
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)
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 | 中铁西南科学研究院有限公司 | 一种隧道变形预测方法、***、设备及介质 |
-
2022
- 2022-01-25 CN CN202210090576.6A patent/CN114490156A/zh active Pending
Cited By (9)
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 |