0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一种新的无监督时间序列异常检测方法

电子工程师 来源:现代电子技术 作者:爨莹 吴越 2022-08-10 11:29 次阅读

摘要:传统的时间序列异常检测方法大多以数据点作为检测单位,通过训练模型预测下一时刻数据,这类方法的缺点是没有考虑时间序列数据的特性,即序列模式的多样性。因此文中提出一种基于Seq2Seq深度自编码器的时间序列异常检测方法,以更好地挖掘时间序列数据中的异常序列模式。此方法使用Bi⁃LSTM网络作为深度自编码器,其输入输出均为序列,使用深度自编码器对时间序列进行编码压缩和解码重建。通过计算重建序列与原始序列之间的重建误差,并设置重建异常比率以获取误差阈值,将重建误差大于此阈值的时间序列视为异常序列。异常时间序列的发现取决于模型对原始序列的重建效果,通过在空气质量时间序列数据上的实验,模型初步达到了不错的检测效果,证明了所提方法的可行性。文中方法为时间序列异常检测提供了新的途径。

0 引 言

时间序列数据是生活中常见的一种数据,在时间顺序上具有一定规律,且大量存在于金融贸易、工业生产、环境保护、网络安全等众多领域。时间序列异常检测在生产和生活中有着重要的作用,如在网络安全领域中分析网络异常行为,在金融领域中识别欺诈交易等[1]。

传统时间序列异常检测方法(统计学方法或聚类方法),如高斯模型、ARIMA、K⁃means、IForest等都属于统计机器学习的范畴[2]。这些方法基本在每个时刻训练模型以预测下一时刻,若观测点与预测值相差太远,则将该点视为异常[3]。这类方法的不足之处在于忽视了时间序列数据的序列特性,无法挖掘序列中的异常序列模式。本文提出基于Seq2Seq深度自编码器的时间序列异常检测方法,使用Bi⁃LSTM网络作为自编码器对输入序列进行编码压缩和解码重建,此方法能够更好地挖掘时序数据中的异常序列模式。

1 算法原理

1.1 深度自编码器

深度自编码器(Deep Autoencoder,DAE)是一种无监督或自监督算法,其本质是一种数据压缩算法。构建一个深度自编码器需要两个部分:编码器(Encoder)和解码器(Decoder)。编码器将输入压缩为潜在空间表征, 解码器将潜在空间表征重建为输出, 编码器和解码器都是神经网络[4⁃5]。编码和解码方法都是由模型自动学习输入数据得到的, 深度自编码器的结构如图1所示。

e4f4ff16-17e1-11ed-ba43-dac502259ad0.png

深度自编码器主要有以下三个特点[6]:

1)数据相关性。自编码器只能编码与之前类似的数据。

2)数据有损性。自编码器解码得到的输出与原始输入相比会有信息损失。

3)自动学习性。自动编码器从数据中自动学习编码和解码的方法。

1.2 Bi⁃LSTM 网络

长短期记忆(Long Short⁃Term Memory, LSTM)网络是为解决循环神经网络(Recurrent Neural Networks,RNN)中梯度消失的问题提出的一种网络结构。LSTM单元可以处理长度可变的序列,并捕获其中的长期依赖性和非线性关系,已成为处理序列数据的标准方法[7]。根据LSTM单元提出的自学习门控方法,能确定LSTM单元是否记忆之前的状态或是否存储当前数据中的信息。LSTM单元内部运算过程如图2所示。

设t 时的输入序列为向量xt,输出为ht,LSTM单元内部计算过程如下:

e5170412-17e1-11ed-ba43-dac502259ad0.png

e52f4c2a-17e1-11ed-ba43-dac502259ad0.png

式中:ct是t时记忆单元中的状态向量;ct-1是t-1时记忆单元中的状态向量;W, U和b是参数矩阵和偏差向量;“⊙”表示元素积运算。此外,ft 表示遗忘门(ForgetGate),其作用是存储旧信息的权重向量;it表示输入门(Input Gate),用于获取新信息的权重向量;ot示输出门(Output Gate),用于输出待输出的候选向量[8⁃9]。在激活函数中,σg表示sigmoid函数;σc和σh表示tanh函数。

e5447d84-17e1-11ed-ba43-dac502259ad0.png

双向长短期记忆(Bi⁃directional Long Short⁃TermMemory,Bi⁃LSTM)网络通过引入第二层LSTM单元来扩展单向LSTM网络[10],其可以在前后两个方向上同时处理输入序列。在第二层中,隐含层单元的序列顺序相反,因此该网络可以同时利用过去和未来的序列信息。Bi⁃LSTM网络结构图如图3所示。

e56cba1a-17e1-11ed-ba43-dac502259ad0.png

1.3 基于 Seq2Seq 的 Bi⁃LSTM 深度自编码器时间序列

异常检测模型Seq2Seq模型属于自编码器结构中的一类[11],常用于文本翻译、语音生成等自然语言处理领域。基本思想是用编码器将输入序列压缩成指定长度的向量,再用解码器将编码向量解码成指定长度的序列[12]。

针对时间序列异常检测而言,假设样本中异常序列数量相对于正常序列来说是极少数的。在使用深度自动编码器的情况下,训练模型以学习正常时间序列中的序列模式[13⁃14]。那么当时间序列输入深度自编码器中时,对于多数正常序列,模型可以很容易地发现并记住其中的序列模式,其重建误差相对可能较小;反之对于少数异常序列,模型很难对其序列模式进行挖掘,则重建误差相对可能较大。

因此对于输入的时间序列,若经过模型编码重建后与原始序列差异较大的话,则可以认为当前序列中可能存在异常,并可以进一步发现异常数据点。基于Seq2Seq深度自编码器的时间序列异常检测模型,使用Bi⁃LSTM网络作为自编码器对输入序列进行编码和重建。通过计算重建序列与原始序列之间的重建误差,并设置重建异常比率以获取误差阈值,将重建误差大于阈值的序列视为异常序列。异常检测模型的主要步骤如图4所示。

e58f2fdc-17e1-11ed-ba43-dac502259ad0.png

2 实证分析

2.1 时间序列数据集

实验中所用到的时间序列数据为北京地区每小时PM2.5数据, 数据集来自UCI Machine LearningRepository, 范围为2010⁃01⁃01—2014⁃12⁃31。数据集共43824个样本,对于缺失值使用同一天数据的平均值替换,经过处理后的时间序列数据如图5所示。

对数据进行2天重采样,即用时间窗口大小为48h的时序数据作为输入序列,重采样后的数据集共913个样本。其中使用70%作为训练集,20%作为验证集,10%作为测试集。

e59e27f8-17e1-11ed-ba43-dac502259ad0.png

2.2 Bi⁃LSTM 深度自编码器构建

本文使用基于PythonTensorflow 2深度学习库构建Bi⁃LSTM深度自编码器模型。实验环境为Windows1064位,CPU为I7⁃8750h,显卡为GTX10606GB,内存为8 GB。

首先使用MinMaxScaler方法将数据归一化,采用顺序方式(Sequential)构建网络模型。编码器和解码器均定义为Bi⁃LSTM层,共7层,其单元数量分别为64,48,32,12,32,48,64,前6层均返回序列。接下来定义Dropout层,Dropout比率为0.2。最后一层定义Dense全连接层, 共有48个单元,激活函数为线性整流函数(ReLU)。模型编译时,使用均方误差(Mean Square Error,MSE)作为损失函数(Loss),使用Adam作为和优化算法(Optimizer),学习率(LR)设为0.0001。模型训练时,设置批次训练样本数(Batch_size)为32,训练轮次(Epoch)为50。

2.3 实验结果

在实验中,使用重建序列和原始序列对应元素差值的二范数(2⁃Norm)作为重建误差指标。设序列重建前后对应的元素差为向量X=(x1,x2,…,xn),该数值越大说明重建误差越大。重建误差指标如下:

e5c790f2-17e1-11ed-ba43-dac502259ad0.png

经过50轮训练后,模型在训练集和验证集上的损失见图6。从图6可以看出,模型在训练集上的最终损失约为0.00051,在测试集上的最终损失约为0.00039。

e5ddacfc-17e1-11ed-ba43-dac502259ad0.png

模型训练完成后,将重建异常比率设为0.99,得到重建误差阈值约为0.4005。模型在训练集和验证集上的异常检测结果如图7所示。

e5fb7110-17e1-11ed-ba43-dac502259ad0.png

从图7可以知道,模型在训练集和验证集上共检测到10个异常序列,其编号分别为22,39,40,227,334,376,555,562,711,779。对异常序列711重建前后进行可视化如图8所示。

e61022cc-17e1-11ed-ba43-dac502259ad0.png

从图8可以看出,异常序列711在前42h一直处于较平缓状态,PM2.5值最大在200 μg/m3左右。因此模型可以较好地重建这一部分序列,重建误差较小。在43~47h之间,PM2.5值先剧增后迅速减少,序列出现剧烈变化。模型无法重建预测这一部分序列,重建误差过大,因此将此序列视为异常。接下来使用模型在测试集上进行检测,结果如图9所示。从图9可以看出,模型在测试集上共检测到12个异常序列,对异常序列 901重建前后进行可视化,如图10所示。

e6326472-17e1-11ed-ba43-dac502259ad0.png

e64f5de8-17e1-11ed-ba43-dac502259ad0.png

从图10可以看出,异常序列901在20h左右和25~35h的PM2.5值均为0μg/m3,且在 35h后序列急速上升。模型较好地重建了35h后的上升序列,但无法有效重建两段为0的时间序列,重建误差大于阈值,因此将此序列视为异常。

3 结 语

在时间序列异常检测任务中,除了监督算法外,基于无监督的异常检测方法也值得考虑。本文提出一种新的无监督时间序列异常检测方法,此方法基于Seq2Seq模型,利用Bi⁃LSTM深度自编码器对序列的重建效果来发现异常序列。异常序列的发现取决于模型对原始序列的重建效果,该方法能更好地挖掘时间序列中的异常序列模式。通过在空气质量数据上的实验,证明了该方法的可行性,模型初步达到了不错的检测效果,为时间序列异常检测提供了新的方法。

作者简介:

爨 莹(1968—),女,陕西西安人,博士,教授,研究方向为智能可视化计算。

吴 越(1996—),男,陕西西安人,硕士研究生,研究方向为数据挖掘、机器学习。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编码器
    +关注

    关注

    41

    文章

    3361

    浏览量

    131555
  • 时间序列
    +关注

    关注

    0

    文章

    30

    浏览量

    10365

原文标题:基于 Seq2Seq深度自编码器的时间序列异常检测方法研究 | 论文速览

文章出处:【微信号:现代电子技术,微信公众号:现代电子技术】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于transformer和自监督学习的路面异常检测方法分享

    铺设异常检测可以帮助减少数据存储、传输、标记和处理的压力。本论文描述了一种基于Transformer和自监督学习的新方法,有助于定位
    的头像 发表于 12-06 14:57 808次阅读
    基于transformer和自<b class='flag-5'>监督</b>学习的路面<b class='flag-5'>异常</b><b class='flag-5'>检测</b><b class='flag-5'>方法</b>分享

    一种蓄电池的源隔离检测方法

    一种蓄电池的源隔离检测方法
    发表于 07-04 17:45

    科学数据时间序列的预测方法

    针对传统的时间序列分析方法预测科学数据效果较差的特点,提出了一种结合自组织神经网络和灰色理论的时间序列
    发表于 12-31 23:56 10次下载

    一种快速的视频序列运动分割方法

    提出一种视频序列运动分割的实时方法,该方法通过两次背景更新提取运动前景,其中长程背景更新检测噪声运动区域,并将长
    发表于 04-21 08:52 24次下载

    基于时间序列数据挖掘的故障检测方法_李海林

    基于时间序列数据挖掘的故障检测方法_李海林
    发表于 01-08 10:57 0次下载

    基于导数序列时间序列同构关系

    时间序列序列匹配作为时间序列检索、聚类、分类、异常监测等挖掘任务的基础被广泛研究。但传统的
    发表于 12-12 15:52 0次下载
    基于导数<b class='flag-5'>序列</b>的<b class='flag-5'>时间</b><b class='flag-5'>序列</b>同构关系

    宝信利用Spark Analytics Zoo对基于LSTM的时间序列异常检测的探索

    摘要:宝信和英特尔相关团队利用Analytics Zoo在无监督的基于时间序列异常检测用例上进行了有益的合作探索,本文分享了合作项目的结果和
    的头像 发表于 10-17 10:30 5577次阅读

    如何使用频繁模式发现进行时间序列异常检测详细方法概述

    针对传统异常片 段检测方法在处理增量式时间序列时效率低的问题,提出一种基于频繁模式发现的
    发表于 11-28 11:09 5次下载
    如何使用频繁模式发现进行<b class='flag-5'>时间</b><b class='flag-5'>序列</b><b class='flag-5'>异常</b><b class='flag-5'>检测</b>详细<b class='flag-5'>方法</b>概述

    基于时间卷积网络的通用日志序列异常检测框架

    基于循环神经网络的日志序列异常检测模型对短序列有较好的检测能力,但对长序列
    发表于 03-30 10:29 8次下载
    基于<b class='flag-5'>时间</b>卷积网络的通用日志<b class='flag-5'>序列</b><b class='flag-5'>异常</b><b class='flag-5'>检测</b>框架

    一种全新的高光谱数据异常检测方法

    高光谱遥感技术为探索地物提供了丰富的信息,为异常检测提供了更优质的数据源。但是在先验信息未知的情况下,进行异常检测仍是一项非常具有挑战性的工作。针对该问题,提出
    发表于 04-07 14:38 11次下载
    <b class='flag-5'>一种</b>全新的高光谱数据<b class='flag-5'>异常</b><b class='flag-5'>检测</b><b class='flag-5'>方法</b>

    一种多维时间序列汽车驾驶异常检测模型

    针对传统异常检测模型难以准确分析汽车驾驶异常行为的情况,建立一种基于自动编码器与孤立森林算法的多维时间
    发表于 05-26 16:32 2次下载

    使用MATLAB进行异常检测(下)

    在使用 MATLAB 进行异常检测(上)中,我们探讨了什么是异常值,简单的一维数据异常检测问题,针对高维数据的有
    的头像 发表于 11-24 10:46 1712次阅读

    采用基于时间序列的日志异常检测算法应用

    目前,日志异常检测算法采用基于时间序列方法检测异常
    的头像 发表于 12-09 10:47 1155次阅读

    智能电网时间序列异常检测:a survey

    故障、中断、外部网络攻击或能源欺诈引起的。识别这些异常对于现代电网的可靠和高效运行至关重要。对电网时间序列数据进行异常检测
    发表于 04-04 16:13 0次下载
    智能电网<b class='flag-5'>时间</b><b class='flag-5'>序列</b><b class='flag-5'>异常</b><b class='flag-5'>检测</b>:a survey

    时间序列分析的异常检测综述

    时间序列是在不同时点记录一个或多个变量值的数据。例如,每天访问网站的人数、每月城市的 average 温度、每小时的股票价格等。时间序列非常重要,因为它们允许我们分析过去,理解现在,并
    的头像 发表于 03-11 09:36 229次阅读
    <b class='flag-5'>时间</b><b class='flag-5'>序列</b>分析的<b class='flag-5'>异常</b><b class='flag-5'>检测</b>综述