一种通过在线矩阵画像对运维数据进行无监督异常检测的技术

文档序号:153032 发布日期:2021-10-26 浏览:13次 >En<

阅读说明:本技术 一种通过在线矩阵画像对运维数据进行无监督异常检测的技术 (Technology for carrying out unsupervised anomaly detection on operation and maintenance data through online matrix portrait ) 是由 赵万磊 兰诗莹 陈润青 雷蕴奇 于 2021-07-12 设计创作,主要内容包括:本发明公开了一种通过在线矩阵画像对运维数据进行无监督异常检测方法,其首先采用窗口大小为m的滑动窗口将时间序列X分为多个子序列X-(i,m);然后基于多个子序列X-(i,m)构建在线矩阵画像P={p-(1),…,p-(t),…,p-(n-m+1)};最后通过在线矩阵画像算法计算出最近邻子序列,并利用最近邻子序列计算出x-(t)的距离显著性r-(t),若距离显著性r-(t)大于预定义阈值τ,则被认为是异常,否则被认为是正常。本发明能够进行无监督单变量时间序列异常检测任务,不需要进行任何模型地训练且能高效准确地找出异常。(The invention discloses a method for carrying out unsupervised anomaly detection on operation and maintenance data through an online matrix portrait, which comprises the steps of firstly adopting a sliding window with the window size of m to divide a time sequence X into a plurality of subsequences X i,m (ii) a Then based on a plurality of subsequences X i,m Constructing an online matrix representation P ═ P 1 ,…,p t ,…,p n‑m&#43;1 }; finally, calculating a nearest neighbor subsequence by an online matrix sketch algorithm, and calculating x by using the nearest neighbor subsequence t Distance significance r of t Distance significance r t Above a predefined threshold τ, it is considered abnormal, otherwise it is considered normal. The invention can be carried out withoutThe single variable time sequence abnormity detection task is supervised, no model training is needed, and the abnormity can be efficiently and accurately found out.)

一种通过在线矩阵画像对运维数据进行无监督异常检测的 技术

技术领域

本发明涉及计算机系统异常检测技术,尤其是涉及可应用到互联网公司中基于智能运维监控等领域。

背景技术

时间序列是一系列以时间顺序进行组织的观测点,通常认为每两点之间有相同的时间间隔。给定一条单变量时间序列X={x1,…,xt,…,xn},xt表示t时刻计算机系统某一运行指标的状态值,异常检测的目的是判断在t时刻的状态是否显著地偏离了正常的状态,我们将那些偏离了正常状态的点视为异常点。在智能运维领域中,时间序列异常检测对关键性能指标的监控至关重要。

时间序列异常检测面临着很多挑战。首先,由于异常是罕见的且对其进行标注是困难且昂贵的,收集大量有标签的异常数据来训练模型是不切实际的。其次,随着环境的变化,时间序列会发生概念漂移。一旦出现概念漂移,模型就需要进行更新,这是相当耗时耗力的。最后,时间序列的模式是不固定的,可以表现为有季节性的,稳定的或者不稳定的模式等。因此,在实际应用中,需要一个对时间序列模式变化不敏感的无监督异常检测方法。

然而,目前的无监督异常检测技术要么需要大量资源来进行训练,要么性能不佳,无法在效率和检测精度上取得平衡。基于预测的无监督异常检测方法,使用历史数据对当前时刻的状态进行预测,通过判断当前状态的观测值是否极大地偏离预测值来检测异常。这种方法严重依赖于预测的性能,如果预测性能不佳,那么检测的效果也会很差。基于分布的异常检测方法,通过学习正常状态的分布,判断当前时刻的状态是否偏离正常状态的分布,来检测异常。但是数据中的异常常常会干扰到正常状态分布地学习,使得异常检测的性能下降。同时,当时间序列发生概念漂移时,需要重新训练模型学习新的分布。当同时监控数百条时间序列时,训练和维护这些模型的成本非常高。基于距离的无监督异常检测方法,通过探索当前状态与其k近邻的关系来检测异常。但这些方法对参数k的设置很敏感且需要比较高的时间复杂度。

发明内容

有鉴于此,本发明的目的在于提出一种通过在线矩阵画像对运维数据进行无监督异常检测方法,以提高检测效率和检测精度。

为实现上述目的,本发明采用的技术方案是:

一种通过在线矩阵画像对运维数据进行无监督异常检测方法,其包括以下步骤:

步骤1、获取以时间序列表示的运维数据X,并进行数据预处理:采用窗口大小为m的滑动窗口将时间序列X切分为多个子序列Xi,m

步骤2、对时间序列上的每个子序列Xi,m,计算出子序列Xi,m和其之前出现的所有子序列Xj,m之间的距离,取距离的最小值pi为Xi,m的在线矩阵画像的值,取距离最小值对应的下标idxi为最近邻下标;那么时间序列X的在线矩阵画像P={p1,…,pt,…,pn-m+1},对应的最近邻下标I={idx1,…,idxt,…,idxn-m+1};

步骤3、对于t时刻的状态xt,其与前m-1个状态组成子序列Xt-m+1,m=xt-m+1,…,xt},通过在线矩阵画像算法计算出该子序列Xt-m+1,m和其最近邻子序列的距离pt-m+1以及最近邻下标idxt-m+1,利用最近邻子序列计算出xt的距离显著性rt,若距离显著性rt大于预定义阈值τ,则被认为是异常,否则被认为是正常;其中,τ为常数。

所述步骤1中,在采用滑动窗口对时间序列X进行切分之前,进行如下处理:

根据时间戳检测时间序列X是否存在缺失值,若存在缺失值,采用相邻状态的一阶线性插值填充。

所述方法设置一个大小为c的缓冲区,该缓冲区存储历史最近c个时刻的状态值;当前时刻的子序列只与缓冲区里的子序列计算矩阵画像。

采用上述方案后,本发明首先将标准矩阵画像改进为在线矩阵画像,通过对均值对齐保留了可能的异常幅值变化,然后利用子序列与其最近邻子序列计算距离显著性,距离显著性利用距离的比值而非距离本身去提取异常,这使得它对幅值变化不敏感,对于存在变点的时间序列也适用;从而使本发明能够进行无监督时间序列异常检测任务,不需要进行任何模型地训练且能高效准确地找出异常点。

此外,本发明还提出了缓存策略,极大提高了运算效率,并节约了存储空间。

具体实施方式

本发明揭示了一种通过在线矩阵画像对运维数据进行无监督异常检测方法,其首先将标准矩阵画像改进为在线矩阵画像,然后利用距离显著性从在线矩阵画像上提取异常。该方法具体包括以下步骤:

步骤1、数据预处理:清洗原始时间序列X。

步骤1.1、对于给定原始时间序列X={x1,…,xt,…,xn},根据时间戳检测是否存在缺失值,若存在缺失值,采用相邻状态的一阶线性插值填充。

具体地,对于缺失长度小于或等于M的缺失段,直接利用缺失段前后的状态进行一阶线性插值填充,对于缺失长度大于M的缺失段,利用缺失段相邻周期的相同时段的状态值进行一阶线性插值填充。

步骤1.2、采用窗口大小为m,步长为1的滑动窗口将序列切分成多个子序列。每个子序列表示为Xi,m={xi,xi+1,…,xi+m-1},所有的子序列集合表示为S={X1,m,…,Xt,m,…,Xn-m+1,m}。其中对于小时级数据,m取值为48;对于分钟级数据,m取值为2880。

步骤2、对时间序列上的每个子序列Xi,m,计算出子序列Xi,m和其之前出现的所有子序列Xj,m之间的距离,取距离的最小值pi为Xi,m的在线矩阵画像的值,取距离最小值对应的下标idxi为最近邻下标;那么时间序列X的在线矩阵画像P={p1,…,pt,…,pn-m+1},对应的最近邻下标I={idx1,…,idxt,…,idxn-m+1}。

标准矩阵画像利用滑动窗口将时间序列划分成固定长度为m的子序列Xi,m,计算经过z-score后的每个子序列与其在时间序列上的最近邻子序列之间的欧几里德距离。在线场景下,当前时刻之后的状态是未知的。因此,在线矩阵画像计算经过z-score后的每个子序列与在其之前出现的最近邻子序列之间的欧几里德距离。子序列经过z-score后,子序列本身的波动会被消除掉。然而,波动的变化可能昭示着异常的发生。为了避免这样的异常被忽略,在线矩阵画像在计算子序列间的欧几里德距离时只对均值进行对齐。给定子序列Xi,m,其均值和方差分别为μi和σi,Xi,m和在其之前出现的子序列Xj,m的距离计算公式如下:

其中<Xi,m,Xj,m〉的计算可以通过前一时刻<Xi-1,m,Xj-1,m>的计算结果得到,从而加速计算。<Xi,m,Xj,m>的计算公式如下:

<Xi,m,Xj,m>=<Xi-1,m,Xj-1,m>-xi-1xj-1+xi+m-1xj+m-1

为了进一步提高计算效率和节约存储空间,本发明设置了一个大小为c的缓冲区。缓冲区只存储历史最近c个时刻的状态值。当前时刻的子序列只与缓冲区里的子序列计算矩阵画像。

步骤3、异常检测:对于t时刻的状态xt,其与前m-1个状态组成子序列Xt-m+1,m={xt-m+1,…,xt},通过在线矩阵画像算法计算出该子序列Xt-m+1,m和其最近邻子序列的距离pt-m+1以及最近邻下标idxt-m+1,接着利用最近邻子序列计算出xt的距离显著性rt,若距离显著性rt大于预定义阈值τ,则被认为是异常,否则被认为是正常。其中,τ为常数。其中,

l是一个参数,通常情况下,取l=m。但是当m足够大,窗口中可能存在多个异常的时候,取l<m。

本发明利用在线矩阵画像计算子序列的距离显著性,并通过预定义阈值检测出异常点,达到异常检测的目的,在效率和检测精度间取得最佳平衡。

为证明本发明的效果,将其与现有的检测方法SPOT、DSPOT、SR、SR-CNN、DONUT、VAE和PAD在KPI和Yahoo测试数据集上的F1、准确率、召回率和CPU运行时间的对比如表1所示。其中SR-CNN、DONUT、VAE和PAD是基于网络的方法,需要对模型进行训练,训练时间如表2所示。

表1

表2

方法 KPI(秒) Yahoo(秒)
SR-CNN 37390.82 1415.75
DONUT 37412.59 1432.68
VAE 37412.59 1432.68
PAD 387691.11 14535.43

从表1可以看出,本发明算法在两个数据集下的F1都高于所有不用训练的方法。本发明算法在Yahoo数据集上取得了最好的性能,在KPI数据集上略微逊色于VAE。虽然基于网络的方法DONUT、VAE和PAD在KPI数据集上的性能更好,但他们需要花费大量的时间和资源去训练模型,并且在数据分布发生变化的时候,需要重新训练,在实际场景中并不实用。本发明的算法是唯一一个不用训练并能在两个数据集上都获得较好性能的方法。总的来说,本发明的算法在准确率和实时性上面取得了一个最佳平衡。

以上所述,仅是本发明实施例而已,并非对本发明的技术范围作任何限制,故凡是依据本发明的技术实质对以上实施例所作的任何细微修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

6页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:监控处理方法、监控处理装置、存储介质与电子设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!