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

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

3天内不再提示

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

电子设计 2018-10-17 10:30 次阅读

摘要:宝信和英特尔相关团队利用Analytics Zoo在无监督的基于时间序列异常检测用例上进行了有益的合作探索,本文分享了合作项目的结果和经验。

背景­­­­

工业制造行业,有多种方法来避免由于设备失效导致的生产中断。常见的方法是定期检修维护,或者提前更换设备零部件,这些方法都可能会增加设备维护和更换的投入。然而,另一个可行的方法是收集不同设备的大量振动数据,并使用这些数据自动检测设备状态的异常。因此,有效地收集大量的时间序列数据并且大规模地进行异常和失效检测,对于降低工业制造行业中的的很多不必要的成本是非常关键的。

Recurrent neural networks (RNNs)循环神经网络,特别是Long short term memory models (LSTMs)长短期记忆模型现在被广泛应用于信号处理,时间序列分析等场景。作为connectionist模型,RNNs可以提取网络节点中的动态序列。在这个项目中,我们利用LSTM来模拟震动信号的统计学规律, 并且使用了来自辛辛那提大学的IMS全生命周期数据 (http://ti.arc.nasa.gov/c/3/)来展示设备异常检测的分析流程。

Analytics Zoo解决方案

Analytics Zoo (https://github.com/intel-analytics/analytics-zoo)是一个基于Apache Spark和BigDL等构建的analytics (分析)+AI人工智能)的平台,由英特尔开源,该平台能够方便地让用户将端到端的基于大数据的深度学习应用直接部署在已有的Hadoop/Spark的大数据集群上,而无需安装专用的GPU设备。

我们已经在Apache Spark和Analytics Zoo上创建了端到端的基于LSTM的异常检测流程,可以应用于大规模时间序列数据的无监督深度学习。作为LSTM模型的输入数据的是一系列设备震动信号,比如在当前时间点之前50秒的信号数据,通过这些信号数据,经过训练的模型可以预测下一个数据点。当下一个数据点和模型预测的数据点有较大偏差,我们认为该数据为异常数据。图1所示为一个端到端的数据处理流程。

图1:基于Analytics Zoo的振动时间序列异常检测处理流程.

1. 处理流程从Spark集群读取原始数据并构造RDD(resilient distributed datasets)弹性分布式数据集,并抽取特征,最后把特征输出到Dataframe。在原始数据集中,每个数据描述了一个检测失效(test-to-failure)的实验,并包含了时长为1秒的20K赫兹采样的即时振动信号(如图2所示)。为了训练深度学习模型,每一秒的统计数据被提取作为特征数据,包括均方根(Root Mean Square), 峰度(Kurtosis),峰值( Peak), 以及小波包分解得到的8个频段的能量值。

2. 处理流程进一步在RDD中处理这些特征数据,包括数值的小波去噪处理、标准化处理(normalize)和滑动平均处理,以50秒为基准展开特征数据序列,以便于深度学习模型可以通过前50秒的模式来预测下一个数据点,并最终把数据转换为Sample RDD。(https://bigdl-project.github.io/master/#APIGuide/Data/#sample).

3. 处理流程使用Analytics Zoo中提供的类Keras API来创建时间序列异常检测模型,包括如图所示的三个LSTM层和一个密集层,并通过数据训练这个模型(前50个点训练下一个点)。

 val model = Sequential[Float]()
  model.add(LSTM[Float](8, returnSequences = true, inputShape = inputShape))
  model.add(Dropout[Float](0.2))
  model.add(LSTM[Float](32, returnSequences = true))
  model.add(Dropout[Float](0.2))
  model.add(LSTM[Float](15, returnSequences = false))
  model.add(Dropout[Float](0.2))
  model.add(Dense[Float](outputDim = 1))

4. 接下来是模型评估:使用测试数据或者全部数据来检测异常。异常数据是指远离RNN模型预测的数据点。在这个项目中,我们指定异常数据为整体数据集的10%,也就是距离模型预测数值最远的那10%数据为异常数据。这个筛选比例设置为可调整参数,可以为每个单独案例进行调整。

图2:时间点2004.02.13.14.32.39上四通道的振动数据

测试结果

图3显示了原始振动数据和LSTM模型预测数据的对比。只有峰值和均方根这两个统计数值显示出来,其他统计数值具有相似的波动。图中所示红点为被识别的异常数据,橙色线条为LSTM模型的预测数值,蓝色线条为原始数值。经过训练的模型最终成功预测了设备的失效,以及在经过600个时间点之后的震动尖峰,在时间序列早期的一些波动可以作为设备失效的预警信息

a), peak
b), RMS
3: RNN预测数值和原始震动数值的比较

结论

通过利用无监督深度学习,以及Analytics Zoo提供的端到端处理流程,我们可以有效地在大数据集和标准大数据集群(Hadoop, Spark等)上应用时间序列异常检测。通过收集、处理大量的时间序列数据(比如日志,传感器读数等),应用RNN来学习数据模式,最终预判数据和判定异常数据,Analytics Zoo提供的端到端处理流程能够为许多新兴的智能系统如智能制造、智能运维、物联网等提供解决方案。基于时间序列的异常检测在设备的智能监控和

预测性维护上可以得到重要应用。

参考文献

1. https://github.com/intel-analytics/analytics-zoo

2. https://github.com/intel-analytics/BigDL

3. https://www.kaggle.com/victorambonati/unsupervised-anomaly-detection

4. https://iwringer.wordpress.com/2015/11/17/anomaly-detection-concepts-and-techniques/

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

    关注

    1

    文章

    90

    浏览量

    15943
  • Apache
    +关注

    关注

    0

    文章

    64

    浏览量

    12435
  • SPARK
    +关注

    关注

    1

    文章

    105

    浏览量

    19857
收藏 人收藏

    评论

    相关推荐

    基于Intel Analytics Zoo上分布式TensorFlow的美的/KUKA工业检测平台

    本文中,我们将分享我们在美的 / KUKA ,使用 英特尔 Analytics Zoo ( 一个基于 Apache Spark 、 TensorFlow 和 BigDL 的 开源数据分析 + AI
    的头像 发表于 10-17 10:30 6808次阅读

    【「时间序列与机器学习」阅读体验】全书概览与时间序列概述

    模型、指数平滑方法、Prophet,以及神经网络,例如循环神经网络长短期记忆网络、Transformer、Informer 等。 ●第4章“时间序列异常检测”:介绍
    发表于 08-07 23:03

    【《时间序列与机器学习》阅读体验】+ 了解时间序列

    据分析处理的专业书籍。再看一下目录结构: 可看出书的前五章以理论为主,先后介绍了时间序列分析的基础知识、时间序列的信息提取、时间
    发表于 08-11 17:55

    介绍有关时间序列预测和时间序列分类

    通过之前有关LSTM的8遍基础教程和10篇处理时间序列预测任务的教程介绍,使用简单的序列数据示例,已经把LSTM的原理,数据处理流程,模型架
    发表于 07-12 09:18

    怎样去搭建一套用于多步时间序列预测的LSTM架构?

    如何开发和评估家庭电力数据集的预测模型?LSTM在多步时间序列预测方面具有哪些优势?怎样去搭建一套用于多步时间序列预测的
    发表于 07-22 06:19

    基于SARIMA、XGBoost和CNN-LSTM时间序列预测对比

    1、基于SARIMA、XGBoost和CNN-LSTM时间序列预测对比  时间序列预测是一个经常被研究的话题,我们这里使用使用两个太阳能电
    发表于 12-20 16:34

    如何基于Keras和Tensorflow用LSTM进行时间序列预测

    为了做到这一点,我们需要先对CSV文件中的数据进行转换,把处理后的数据加载到pandas的数据框架中。之后,它会输出numpy数组,馈送进LSTM。Keras的LSTM一般输入(N, W, F)三维numpy数组,其中N表示训练数据中的
    的头像 发表于 09-06 08:53 2w次阅读
    如何基于Keras和Tensorflow用<b class='flag-5'>LSTM</b>进行<b class='flag-5'>时间</b><b class='flag-5'>序列</b>预测

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

    针对传统异常片 段检测方法在处理增量式时间序列时效率低的问题,提出一种基于频繁模式发现的时间序列
    发表于 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>详细方法概述

    Analytics Zoo: 统一的大数据分析+AI 平台

    怎么应用 Analytics Zoo ?比如在阿里云上面部署 EMR,使用 Analytics Zoo
    的头像 发表于 07-02 11:18 4760次阅读

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

    基于循环神经网络的日志序列异常检测模型对短序列有较好的检测能力,但对长序列
    发表于 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>框架

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

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

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

    时间序列数据是生活中常见的一种数据,在时间顺序上具有一定规律,且大量存在于金融贸易、工业生产、环境保护、网络安全等众多领域。时间序列
    的头像 发表于 08-10 11:29 2597次阅读

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

    目前,日志异常检测算法采用基于时间序列的方法检测异常,具体为:日志结构化 -> 日志模式识别 -
    的头像 发表于 12-09 10:47 1568次阅读

    智能电网时间序列异常检测: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 561次阅读
    <b class='flag-5'>时间</b><b class='flag-5'>序列</b>分析的<b class='flag-5'>异常</b><b class='flag-5'>检测</b>综述