资讯专栏INFORMATION COLUMN

基于LSTM循环神经网络的主机健康度预测

IT那活儿 / 1848人阅读
基于LSTM循环神经网络的主机健康度预测

伴随企业业务的不断扩大,业务IT支撑系统规模及平台组件架构数量对应激增,其中作为基础资源之一的主机数量也程指数级增加,与此同时业务对系统资源的需求和敏感度也伴随业务规模的增加而越发的苛刻。运维团队对系统可用性的保障也如履薄冰,每一个可能的异常情况都应该被及时发现,及时响应,及时处理,以保障系统和服务的稳定高效运行,给客户良好的使用体验。为了保障基础资源之一主机的稳定可靠,笔者对运行中的主机健康度做了基于LSTM循环神经网络的预测。


本次分享分为四个部分:


1、LSTM简介


2、基本数据准备


3、多元LSTM预测


4、模型优化

01

LSTM简介



随着深度学习技术发展,相关深度学习模型逐渐被应用到时序数据研究中。深度学习模型是拥有多个非线性映射层级的深度神经网络模型,对输入信号逐层抽象并提取特征,挖掘出更深层次的潜在规律,以达到提前预知预警的效果。


众多深 度 学 习 模 型 中,循 环 神 经 网 络 ( RecurrentNeural Network,RNN) 将时序的概念引入到网络结构设计中,使其在时序数据分析中表现出更强的适应性。


RNN 变体中,长短期记忆( Long Short-Term Memory,LSTM) 模型弥补了RNN 的梯度消失、梯度爆炸和长期记忆能力不足等问题,使循环神经网络能够真正有效地利用长距离的时序信息。


LSTM 模型在不同领域的时序数据研究中已有不少成功的应用案例,包括文字语言相关的语言建模、语音识别、机器翻译,多媒体相关的音频和视频数据分析、图片标题建模,道路运输相关的交通流速预测,以及医学相关的蛋白质二级结构序列预测等。


但在可靠性领域,LSTM 模型的应用非常有限,尤其是对故障时间序列预测的相关问题研究,目前还未发现更多的案例。本文针对系统级故障时间序列数据,提出了一种基于 LSTM 循环神经网络的预测方法,该方法包括3 层( 输入层、隐藏层和输出层) 网络结构的详细设计,以及网络训练和网络预测的具体实现算法等。在此基础上,以预测误差最小化为目标,进一步提出了基于多层网格搜索的 LSTM 预测模型参数优选算法。

LSTM模型网络拓扑

取自知乎LSTM神经网络输入输出究竟是怎样的



02

基本数据准备


例用数据采用某场地实时数据999条作为样本数据进行训练和测试。样本中主要采集了四个现场的主机指标数据(1分钟系统负载、CPU使用率、等待CPU进程个数、内存利用率)。


对样本进行清洗后截取前6个样本数据如下图:


对数据进行归一化处理并对每个样本数据行生成一个模拟健康度,将新样本数保存到test_health.csv文件中。


新生成test_health.csv文件截取前6个样本数据如下图所示:


我们可以使用这些数据来构建预测问题,在此数据基准下,使用前几个小时的主机指标情况和健康度,依此预测下一个小时的主机指标及健康度情况。


我们已经以易于使用的形式获得了数据,创建了每个系列的快速绘图并查看所拥有的数据。


下面代码加载新的“test_health.csv”文件,并将每个系列绘制为多带带的子图。

  

运行示例将创建一个包含5个子图的趋势图,显示每个变量999个小时的数据。如下图所示:


03

多元LSTM预测


LSTM数据准备

第一步是为LSTM准备主机数据集,将数据集构建为有监督的学习问题,并对输入变量进行归一化。


考虑到前面时间步骤的主机指标测量和主机健康度情况,我们将监督学习问题设计为预测当前小时(t)的主机健康度。


根据主机健康度情况和最近24小时的主机指标情况,预测下一个小时的主机健康度情况。


如上预测下一个小时的主机健康度,并根据下一个小时的“预期”主机健康度状况进行预测。我们可以使用开发的series_to_supervised()函数来转换数据集。接下来,将所有特征标准化,然后将数据集转换为监督学习问题。

转化监督学习问题代码:



我们在第一隐藏层中定义50个神经元,在输出层中定义1个神经元来定义LSTM,以预测主机健康度。输入形状为1个时间步长,具有5个特征。我们使用平均绝对误差(MAE)损失函数和随机梯度下降的有效Adam版本。该模型将适合于50个训练周期,每批次的数量为72。请记住,每批结束时都会重置Keras中LSTM的内部权重,因此,内部状态可能是几天的函数,尝试对此进行测试,有助于模型的成熟度完善。最后,我们通过在fit()函数中设置validate_data参数来跟踪训练过程中的训练和测试损失。在运行结束时,绘制训练损失和测试损失。

定义和拟合模型

首先,我们必须将准备好的数据集分为训练集和测试集。为了加快对本演示模型的训练,我们将仅在360的数据上拟合模型,然后在剩余639的数据上对其进行评估。


下面的示例将数据集分为训练集和测试集,然后将训练集和测试集分为输入和输出变量。最后,将输入(X)整形为LSTM期望的3D格式,即[样本,时间步长,特征]。


运行此示例将打印训练数据以及测试输入和输出集,其中约有360个小时的数据用于训练,约有637小时的测试数据。

现在,我们可以定义和拟合我们的LSTM模型。

我们将在第一隐藏层中定义50个神经元,在输出层中定义1个神经元来定义LSTM,以预测主机健康度。输入形状将是1个时间步长,具有5个特征。我们将使用平均绝对误差(MAE)损失函数和随机梯度下降的有效Adam版本。该模型将适合于50个训练周期,每批次的数量为72。请记住,每批结束时都会重置Keras中LSTM的内部权重,因此,内部状态可能是几天的函数,尝试对此进行测试,有助于模型的成熟度。最后,我们通过在fit()函数中设置validate_data参数来跟踪训练过程中的训练和测试损失。在运行结束时,绘制训练损失和测试损失。

评估模型

模型拟合后,我们可以预测整个测试数据集。我们将预测与测试数据集结合起来,然后换算比例。我们还使用预期的主机健康度对测试数据集进行换算。利用原始比例的预测和实际值,我们可以为模型计算一个误差分数。在这种情况下,我们计算均方根误差(RMSE),该均方根误差与变量本身的单位相同。


首先运行示例创建一个图,显示训练期间的训练和测试损失。

我们需要对此模型进行进一步优化。训练和测试损失在每个训练时期的末尾打印,以便于我们知道模型数据。运行结束时,将打印测试数据集上模型的最终RMSE。我们可以看到,该模型实现的RMSE 3.700

04

模型优化



训练多个滞后时间步

首先,在调用series_to_supervised()时必须适当地解决问题。我们将使用3个小时的数据作为输入。还要注意,我们不再将所有其他字段的列都明确地放在ob(t)处,我们在指定输入和输出列时需要更加小心。


我们的框架数据集中有3 * 5 + 5列。我们将使用3 * 5或15列作为前3个小时内所有功能的obs的输入。我们将预测下一个小时主机各个指标作为输出,如下所示:


接下来,我们可以正确地重塑输入数据以反映时间步长和功能。.

此外,我们可以通过增大神经元个数,及增大每个神经元计算次数。来最大量减小优化在神经网络传递时的加权值。如下图所示:

其他变化是如何评估模型那?具体来说,在我们如何重构具有5列的行的过程中,这些行适合于反转缩放操作以将y和yhat还原为原始比例,以便于我们计算RMSE。

更改的要点是我们将y或yhat列与测试数据集的后4个特征连接起来,以求反比例,如下所示:

运行优化后,显示训练期间的训练和测试损失,模型已不存在测试损失,损失降至训练损失以下,如下图所示:


最后,打印出测试RMSE:

模型优化完成!当然最终此次分享只是参考!具体模型调优还需要按照各位的各自业务进行调优操作!


思考题:

主机负载数据可能会存在周期化数据,比如正常业务系统存在忙时和闲时两种状态,如果上午十点为主机业务量最大时期(即主机系统忙时),那输入数据是否要以前一天十点为输入数据?

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/130226.html

相关文章

  • 一个基于TensorFlow简单故事生成案例:带你了解LSTM

    摘要:令人惊讶的是,创作出了一个有一定含义的故事。再次声明,本文中的示例只为了简化讨论。这是由于精度依赖于初始参数的随机设定。训练次数越多超过次精度也会相应提高。 在深度学习中,循环神经网络(RNN)是一系列善于从序列数据中学习的神经网络。由于对长期依赖问题的鲁棒性,长短期记忆(LSTM)是一类已经有实际应用的循环神经网络。现在已有大量关于 LSTM 的文章和文献,其中推荐如下两篇:Goodfel...

    wizChen 评论0 收藏0
  • 从RNN到LSTM,性能良好神经网络到底是如何工作

    摘要:摘要在年率先发布上线了机器翻译系统后,神经网络表现出的优异性能让人工智能专家趋之若鹜。目前在阿里翻译平台组担任,主持上线了阿里神经网络翻译系统,为阿里巴巴国际化战略提供丰富的语言支持。 摘要: 在2016年Google率先发布上线了机器翻译系统后,神经网络表现出的优异性能让人工智能专家趋之若鹜。本文将借助多个案例,来带领大家一同探究RNN和以LSTM为首的各类变种算法背后的工作原理。 ...

    sihai 评论0 收藏0
  • TensorFlow-Bitcoin-Robot:一个基于 TensorFlow LSTM Bi

    摘要:对于以比特币为首的数字货币近期的表现,只能用疯狂来形容。比特币的成交记录就是事件序列上的加个数据,可以基于过去的成交记录序列来对未来的价格作出预测,和的模型比较合适。最后采用了,用爬取,它包含比特币的个交易记录。 简介 TensorFlow-Bitcoin-Robot:一个基于 TensorFlow LSTM 模型的 Bitcoin 价格预测机器人。 文章包括一下几个部分:1.为什么要...

    Mertens 评论0 收藏0
  • 如果你还没搞懂LSTM 网络,那本文绝对值得一看

    摘要:有能力对元胞状态添加或者删除信息,这种能力通过一种叫门的结构来控制。一个有个这种门,来保护和控制元胞状态。输出将会基于目前的元胞状态,并且会加入一些过滤。同时也将元胞状态和隐状态合并,同时引入其他的一些变化。 循环神经网络(RNN)人们的每次思考并不都是从零开始的。比如说你在阅读这篇文章时,你基于对前面的文字的理解来理解你目前阅读到的文字,而不是每读到一个文字时,都抛弃掉前面的思考,从头开始...

    shadowbook 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<