精华内容
下载资源
问答
  • 时间序列模型和神经网络模型在股票预测中的分析
  • 神经网络时间序列分析应用,余元超,魏娜,时间序列分析是通过建立数学模型来刻画数据间内在联系,而多层神经网络又可以任意精度逼近任何非线性函数,本文研究主要内容
  • 损 失 。 这 种 例 子 在 发 达 国 家 金 融 市 场 发 展 中 屡 见 不 鲜 。 例 如 , 1 9 2 9 年 1 0 月 2 8 日 , 美 国 纽 约 华 尔 街 股 票 市 场 行 情 一 天 暴 跌 了 1 2 . 8 % , 引 起 了 股 票 市 ...
  • 预测方法包括插值拟合 灰色预测 回归分析 马尔可夫预测 神经网络预测 时间序列的详细介绍等等。
  • 利用小波神经网络时间序列进行分析,并对交通流量进行预测
  • 时间序列数据首选神经网络

    万次阅读 2017-07-16 19:54:49
    本文简单介绍循环神经网络RNN发展过程,分析了梯度下降算法、反向传播及LSTM过程。 随着科学技术发展以及硬件计算能力大幅提升,人工智能已经从几十年幕后工作一下子跃入人们眼帘。人工智能背后...
    本文简单介绍循环神经网络RNN的发展过程,分析了梯度下降算法、反向传播及LSTM过程。

    随着科学技术的发展以及硬件计算能力的大幅提升,人工智能已经从几十年的幕后工作一下子跃入人们眼帘。人工智能的背后源自于大数据、高性能的硬件与优秀的算法的支持。2016年,深度学习已成为Google搜索的热词,随着最近一两年的围棋人机大战中,阿法狗完胜世界冠军后,人们感觉到再也无法抵挡住AI的车轮的快速驶来。在2017年这一年中,AI已经突破天际,相关产品也出现在人们的生活中,比如智能机器人、无人驾驶以及语音搜索等。最近,世界智能大会在天津举办成功,大会上许多业内行家及企业家发表自己对未来的看法,可以了解到,大多数的科技公司及研究机构都非常看好人工智能的前景,比如百度公司将自己的全部身家压在人工智能上,不管破釜沉舟后是一举成名还是一败涂地,只要不是一无所获就行。为什么突然之间深度学习会有这么大的效应与热潮呢?这是因为科技改变生活,很多的职业可能在今后的时间里慢慢被人工智能所取代。全民都在热议人工智能与深度学习,就连Yann LeCun大牛都感受到了人工智能在中国的火热!

    时间序列数据的首选神经网络时间序列数据的首选神经网络

    言归正传,人工智能的背后是大数据、优秀的算法以及强大运算能力的硬件支持。比如,英伟达公司凭借自己的强大的硬件研发能力以及对深度学习框架的支持夺得世全球最聪明的五十家公司榜首。另外优秀的深度学习算法有很多,时不时就会出现一个新的算法,真是令人眼花缭乱。但大多都是基于经典的算法改进而来,比如卷积神经网络(CNN)、深度信念网络(DBN)、循环神经网络(RNN)等等。

    本文将介绍经典的网络之循环神经网络(RNN),这一网络也是时序数据的首选网络。当涉及某些顺序机器学习任务时,RNN可以达到很高的精度,没有其他算法可以与之一较高下。这是由于传统的神经网络只是具有一种短期记忆,而RNN具有有限的短期记忆的优势。然而,第一代RNNs网络并没有引起人们着重的注意,这是由于研究人员在利用反向传播和梯度下降算法过程中遭受到了严重的梯度消失问题,阻碍了RNN几十年的发展。最后,于90年代后期出现了重大突破,导致更加准确的新一代RNN的问世。基于这一突破的近二十年,直到Google Voice Search和Apple Siri等应用程序开始抢夺其关键流程,开发人员完善和优化了新一代的RNN。现在,RNN网络遍布各个研究领域,并且正在帮助点燃人工智能的复兴之火。

    与过去有关的神经网络(RNN)

    时间序列数据的首选神经网络时间序列数据的首选神经网络

    大多数人造神经网络,如前馈神经网络,都没有记忆它们刚刚收到的输入。例如,如果提供前馈神经网络的字符“WISDOM”,当它到达字符“D”时,它已经忘记了它刚刚读过字符“S”,这是一个大问题。无论训练该网络是多么的辛苦,总是很难猜出下一个最有可能的字符“O”。这使得它成为某些任务的一个相当无用的候选人,例如在语音识别中,识别的好坏在很大程度上受益于预测下一个字符的能力。另一方面,RNN网络确实记住了之前的输入,但是处于一个非常复杂的水平。

    我们再次输入“WISDOM”,并将其应用到一个复发性网络中。RNN网络中的单元或人造神经元在接收到“D”时也将其之前接收到的字符“S”作为其输入。换句话说,就是把刚刚过去的事情联合现在的事情作为输入,来预测接下来会发生的事情,这给了它有限的短期记忆的优势。当训练时,提供足够的背景下,可以猜测下一个字符最有可能是“O”。

    调整和重新调整

    像所有人工神经网络一样,RNN的单元为其多个输入分配一个权重矩阵,这些权重代表各个输入在网络层中所占的比重;然后对这些权重应用一个函数来确定单个输出,这个函数一般被称为损失函数(代价函数),限定实际输出与目标输出之间的误差。然而,循环神经网络不仅对当前输入分配权重,而且还从对过去时刻输入分配权重。然后,通过使得损失函数最下来动态的调整分配给当前输入和过去输入的权重,这个过程涉及到两个关键概念:梯度下降和反向传播(BPTT)。

    梯度下降

    机器学习中最著名的算法之一就是梯度下降算法。它的主要优点在于它显着的回避了“维数灾难”。什么是“维数灾难”呢,就是说在涉及到向量的计算问题中,随着维数的增加,计算量会呈指数倍增长。这个问题困扰着诸多神经网络系统,因为太多的变量需要计算来达到最小的损失函数。然而,梯度下降算法通过放大多维误差或代价函数的局部最小值来打破维数灾难。这有助于系统调整分配给各个单元的权重值,以使网络变得更加精确。

    通过时间的反向传播

    RNN通过反向推理微调其权重来训练其单元。简单的说,就是根据单元计算出的总输出与目标输出之间的误差,从网络的最终输出端反向逐层回归,利用损失函数的偏导调整每个单元的权重。这就是著名的BP算法,关于BP算法可以看本博主之前的相关博客。而RNN网络使用的是类似的一个版本,称为通过时间的反向传播(BPTT)。该版本扩展了调整过程,包括负责前一时刻(T-1)输入值对应的每个单元的记忆的权重。

    Yikes:梯度消失问题

    时间序列数据的首选神经网络时间序列数据的首选神经网络

    尽管在梯度下降算法和BPTT的帮助下享有一些初步的成功,但是许多人造神经网络(包括第一代RNNs网络),最终都遭受了严重的挫折——梯度消失问题。什么是梯度消失问题呢,其基本思想其实很简单。首先,来看一个梯度的概念,将梯度视为斜率。在训练深层神经网络的背景中,梯度值越大代表坡度越陡峭,系统能够越快地下滑到终点线并完成训练。但这也是研究者陷入困境的地方——当斜坡太平坦时,无法进行快速的训练。这对于深层网络中的第一层而言特别关键,因为若第一层的梯度值为零,说明没有了调整方向,无法调整相关的权重值来最下化损失函数,这一现象就是“消梯度失”。随着梯度越来越小,训练时间也会越来越长,类似于物理学中的沿直线运动,光滑表面,小球会一直运动下去。

    时间序列数据的首选神经网络时间序列数据的首选神经网络

    大的突破:长短期记忆(LSTM)

    在九十年代后期,一个重大的突破解决了上述梯度消失问题,给RNN网络发展带来了第二次研究热潮。这种大突破的中心思想是引入了单元长短期记忆(LSTM)。

    时间序列数据的首选神经网络时间序列数据的首选神经网络

    LSTM的引入给AI领域创造了一个不同的世界。这是由于这些新单元或人造神经元(如RNN的标准短期记忆单元)从一开始就记住了它们的输入。然而,与标准的RNN单元不同,LSTM可以挂载在它们的存储器上,这些存储器具有类似于常规计算机中的存储器寄存器的读/写属性。另外LSTM是模拟的,而不是数字,使得它们的特征可以区分。换句话说,它们的曲线是连续的,可以找到它们的斜坡的陡度。因此,LSTM特别适合于反向传播和梯度下降中所涉及的偏微积分。

    时间序列数据的首选神经网络时间序列数据的首选神经网络

    总而言之,LSTM不仅可以调整其权重,还可以根据训练的梯度来保留、删除、转换和控制其存储数据的流入和流出。最重要的是,LSTM可以长时间保存重要的错误信息,以使梯度相对陡峭,从而网络的训练时间相对较短。这解决了梯度消失的问题,并大大提高了当今基于LSTM的RNN网络的准确性。由于RNN架构的显著改进,谷歌、苹果及许多其他先进的公司现在正在使用RNN为其业务中心的应用提供推动力。

    总结

    循环神经网络(RNN)可以记住其以前的输入,当涉及到连续的、与上下文相关的任务(如语音识别)时,它比其他人造神经网络具有更大的优势。
    关于RNN网络的发展历程:第一代RNNs通过反向传播和梯度下降算法达到了纠正错误的能力。但梯度消失问题阻止了RNN的发展;直到1997年,引入了一个基于LSTM的架构后,取得了大的突破。
    新的方法有效地将RNN网络中的每个单元转变成一个模拟计算机,大大提高了网络精度。
    作者信息
    Jason Roell:软件工程师,热爱深度学习及其可改变技术的应用。
    Linkedin:http://www.linkedin.com/in/jason-roell-47830817/
    本文由北邮@爱可可-爱生活老师推荐,阿里云云栖社区组织翻译。

    本文地址: http://www.linuxprobe.com/time-net.html

    展开全文
  • 依据神经网络建模原理,提出了一种基于神经网络的时间序列预测方法,并通过在山东枣庄矿业集团公司柴里煤矿进行预测分析,验证了预测方法有效性。为解决煤炭自燃预测提供了一条良好思路和方法,具有较大理论...
  • 摘要:本文简单介绍循环神经网络RNN发展过程,分析了梯度下降算法、反向传播及LSTM过程。 随着科学技术发展以及硬件计算能力大幅提升,人工智能已经从几十年幕后工作一下子跃入人们眼帘。人工智能背后...

    摘要:本文简单介绍循环神经网络RNN的发展过程,分析了梯度下降算法、反向传播及LSTM过程。

            随着科学技术的发展以及硬件计算能力的大幅提升,人工智能已经从几十年的幕后工作一下子跃入人们眼帘。人工智能的背后源自于大数据、高性能的硬件与优秀的算法的支持。2016年,深度学习已成为Google搜索的热词,随着最近一两年的围棋人机大战中,阿法狗完胜世界冠军后,人们感觉到再也无法抵挡住AI的车轮的快速驶来。在2017年这一年中,AI已经突破天际,相关产品也出现在人们的生活中,比如智能机器人、无人驾驶以及语音搜索等。最近,世界智能大会在天津举办成功,大会上许多业内行家及企业家发表自己对未来的看法,可以了解到,大多数的科技公司及研究机构都非常看好人工智能的前景,比如百度公司将自己的全部身家压在人工智能上,不管破釜沉舟后是一举成名还是一败涂地,只要不是一无所获就行。为什么突然之间深度学习会有这么大的效应与热潮呢?这是因为科技改变生活,很多的职业可能在今后的时间里慢慢被人工智能所取代。全民都在热议人工智能与深度学习,就连Yann LeCun大牛都感受到了人工智能在中国的火热!


    10011643_uxhz.png

            言归正传,人工智能的背后是大数据、优秀的算法以及强大运算能力的硬件支持。比如,英伟达公司凭借自己的强大的硬件研发能力以及对深度学习框架的支持夺得世全球最聪明的五十家公司榜首。另外优秀的深度学习算法有很多,时不时就会出现一个新的算法,真是令人眼花缭乱。但大多都是基于经典的算法改进而来,比如卷积神经网络(CNN)、深度信念网络(DBN)、循环神经网络(RNN)等等。

            本文将介绍经典的网络之循环神经网络(RNN),这一网络也是时序数据的首选网络。当涉及某些顺序机器学习任务时,RNN可以达到很高的精度,没有其他算法可以与之一较高下。这是由于传统的神经网络只是具有一种短期记忆,而RNN具有有限的短期记忆的优势。然而,第一代RNNs网络并没有引起人们着重的注意,这是由于研究人员在利用反向传播和梯度下降算法过程中遭受到了严重的梯度消失问题,阻碍了RNN几十年的发展。最后,于90年代后期出现了重大突破,导致更加准确的新一代RNN的问世。基于这一突破的近二十年,直到Google Voice SearchApple Siri等应用程序开始抢夺其关键流程,开发人员完善和优化了新一代的RNN。现在,RNN网络遍布各个研究领域,并且正在帮助点燃人工智能的复兴之火。

    与过去有关的神经网络(RNN)

    10011643_Xfg6.png


            大多数人造神经网络,如前馈神经网络,都没有记忆它们刚刚收到的输入。例如,如果提供前馈神经网络的字符“WISDOM”,当它到达字符“D”时,它已经忘记了它刚刚读过字符“S”,这是一个大问题。无论训练该网络是多么的辛苦,总是很难猜出下一个最有可能的字符“O”。这使得它成为某些任务的一个相当无用的候选人,例如在语音识别中,识别的好坏在很大程度上受益于预测下一个字符的能力。另一方面,RNN网络确实记住了之前的输入,但是处于一个非常复杂的水平。

            我们再次输入“WISDOM”,并将其应用到一个复发性网络中。RNN网络中的单元或人造神经元在接收到“D”时也将其之前接收到的字符“S”作为其输入。换句话说,就是把刚刚过去的事情联合现在的事情作为输入,来预测接下来会发生的事情,这给了它有限的短期记忆的优势。当训练时,提供足够的背景下,可以猜测下一个字符最有可能是“O”。

    调整和重新调整

            像所有人工神经网络一样,RNN的单元为其多个输入分配一个权重矩阵,这些权重代表各个输入在网络层中所占的比重;然后对这些权重应用一个函数来确定单个输出,这个函数一般被称为损失函数(代价函数),限定实际输出与目标输出之间的误差。然而,循环神经网络不仅对当前输入分配权重,而且还从对过去时刻输入分配权重。然后,通过使得损失函数最下来动态的调整分配给当前输入和过去输入的权重,这个过程涉及到两个关键概念:梯度下降和反向传播(BPTT)。

      梯度下降

            机器学习中最著名的算法之一就是梯度下降算法。它的主要优点在于它显着的回避了“维数灾难”。什么是“维数灾难”呢,就是说在涉及到向量的计算问题中,随着维数的增加,计算量会呈指数倍增长。这个问题困扰着诸多神经网络系统,因为太多的变量需要计算来达到最小的损失函数。然而,梯度下降算法通过放大多维误差或代价函数的局部最小值来打破维数灾难。这有助于系统调整分配给各个单元的权重值,以使网络变得更加精确。

      通过时间的反向传播

            RNN通过反向推理微调其权重来训练其单元。简单的说,就是根据单元计算出的总输出与目标输出之间的误差,从网络的最终输出端反向逐层回归,利用损失函数的偏导调整每个单元的权重。这就是著名的BP算法,关于BP算法可以看本博主之前的相关博客。而RNN网络使用的是类似的一个版本,称为通过时间的反向传播(BPTT)。该版本扩展了调整过程,包括负责前一时刻(T-1)输入值对应的每个单元的记忆的权重。

    Yikes:梯度消失问题


    10011643_Gv0b.jpeg

            尽管在梯度下降算法和BPTT的帮助下享有一些初步的成功,但是许多人造神经网络(包括第一代RNNs网络),最终都遭受了严重的挫折——梯度消失问题。什么是梯度消失问题呢,其基本思想其实很简单。首先,来看一个梯度的概念,将梯度视为斜率。在训练深层神经网络的背景中,梯度值越大代表坡度越陡峭,系统能够越快地下滑到终点线并完成训练。但这也是研究者陷入困境的地方——当斜坡太平坦时,无法进行快速的训练。这对于深层网络中的第一层而言特别关键,因为若第一层的梯度值为零,说明没有了调整方向,无法调整相关的权重值来最下化损失函数,这一现象就是“消梯度失”。随着梯度越来越小,训练时间也会越来越长,类似于物理学中的沿直线运动,光滑表面,小球会一直运动下去。


    10011644_Ur13.png

    大的突破:长短期记忆(LSTM)

            在九十年代后期,一个重大的突破解决了上述梯度消失问题,给RNN网络发展带来了第二次研究热潮。这种大突破的中心思想是引入了单元长短期记忆(LSTM)。


    10011644_DH3X.png

            LSTM的引入给AI领域创造了一个不同的世界。这是由于这些新单元或人造神经元(如RNN的标准短期记忆单元)从一开始就记住了它们的输入。然而,与标准的RNN单元不同,LSTM可以挂载在它们的存储器上,这些存储器具有类似于常规计算机中的存储器寄存器的读/写属性。另外LSTM是模拟的,而不是数字,使得它们的特征可以区分。换句话说,它们的曲线是连续的,可以找到它们的斜坡的陡度。因此,LSTM特别适合于反向传播和梯度下降中所涉及的偏微积分。


    10011645_gZbU.png

            总而言之,LSTM不仅可以调整其权重,还可以根据训练的梯度来保留、删除、转换和控制其存储数据的流入和流出。最重要的是,LSTM可以长时间保存重要的错误信息,以使梯度相对陡峭,从而网络的训练时间相对较短。这解决了梯度消失的问题,并大大提高了当今基于LSTM的RNN网络的准确性。由于RNN架构的显著改进,谷歌、苹果及许多其他先进的公司现在正在使用RNN为其业务中心的应用提供推动力。

    总结

       1. 循环神经网络(RNN)可以记住其以前的输入,当涉及到连续的、与上下文相关的任务(如语音识别)时,它比其他人造神经网络具有更大的优势。

       2. 关于RNN网络的发展历程:第一代RNNs通过反向传播和梯度下降算法达到了纠正错误的能力。但梯度消失问题阻止了RNN的发展;直到1997年,引入了一个基于LSTM的架构后,取得了大的突破。

       3. 新的方法有效地将RNN网络中的每个单元转变成一个模拟计算机,大大提高了网络精度。

    作者信息

       Jason Roell:软件工程师,热爱深度学习及其可改变技术的应用。

       Linkedin:http://www.linkedin.com/in/jason-roell-47830817/

       本文由北邮@爱可可-爱生活老师推荐,阿里云云栖社区组织翻译。

       文章原标题《Understanding Recurrent Neural Networks: The Preferred Neural Network for Time-Series Data》,作者:Jason Roel,译者:海棠,审阅:袁虎

    转载于:https://my.oschina.net/u/3579120/blog/1533255

    展开全文
  • 提出一种经验模式分解和时间序列分析的网络流量预测方法. 首先, 对网络流量时间序列进行经验模式分解, 产生高低频分量和余量; 然后, 对各分量进行时间序列分析, 确保高频分量采用改进和声搜索算法优化的最小二乘支持...
  • 《混沌时间序列的小 波神经网络预测方法及其优化研究》主要研究成果与 创新点分述 如下: (1)用混沌理论及其分析方法对非线性时间序 列进行了研 究,为混沌时间序列的短期预测性提供了理论基础。 并以上证综 合...
  • 将合作企业生产迷你型洗衣机近4年销售数据和影响销售关联因素作为训练样本,先建立时间序列回归模型和BP神经网络模型对洗衣机销量进行预测,然后建立遗传算法优化灰色神经预测模型。通过对三种模型预测结果...
  • 从复杂系统历史故障数据出发,提出了一种基于...通过与多种典型时间序列预测模型实验对比,验证了所提出LSTM预测模型及其参数优选算法在故障时间序列分析中具有很强适用性和更高准确性。 知网论文,学习使用
  • #时间序列预测分析就是利用过去一段时间内某事件时间特征来预测未来一段时间...#时间序列模型最常用最强大的的工具就是递归神经网络(recurrent neural network, RNN)。相比与普通神经网络的各计算结果之间相互独立...

    #时间序列预测分析就是利用过去一段时间内某事件时间的特征来预测未来一段时间内该事件的特征。这是一类相对比较复杂的预测建模问题,和回归分析模型的预测不同,时间序列模型是依赖于事件发生的先后顺序的,同样大小的值改变顺序后输入模型产生的结果是不同的。

    #时间序列模型最常用最强大的的工具就是递归神经网络(recurrent neural network, RNN)。相比与普通神经网络的各计算结果之间相互独立的特点,RNN的每一次隐含层的计算结果都与当前输入以及上一次的隐含层结果相关。通过这种方法,RNN的计算结果便具备了记忆之前几次结果的特点。

    #LSTM(Long Short-Term Memory)模型是一种RNN的变型,可以处理rnn模型的局限性

    #这里实现pytorch的LSTM来预测未来的风速的模型

    #导包(都用得到)

    import torch

    from torch.autograd import Variable

    import torch.nn as nn

    import pandas as pd

    from pandas import DataFrame

    import matplotlib.pyplot as plt

    import numpy as np

    #原始数据

    #时间序列问题,时间的那一列是不代入训练或者测试的,所以时间列可以删除。是用前几行的预测下一行的。通俗点[1,2,3,4,5,6,7],可以通过1,2,3预测出4,。然后2,3,4预测出5.训练的时候跟时间列没关系

    df1 = pd.read_excel(r'D:\Personal\Desktop\cs3h.xlsx')

    df1

    #一、数据准备

    datas = df1.values

    #归一化处理,这一步必不可少,不然后面训练数据误差会很大,模型没法用

    max_value = np.max(datas)

    min_value = np.min(datas)

    scalar = max_value - min_value

    datas = list(map(lambda x: x / scalar, datas))

    #数据集和目标值赋值,dataset为数据,look_back为以几行数据为特征维度数量

    def creat_dataset(dataset,look_back):

    data_x = []

    data_y = []

    for i in range(len(dataset)-look_back):

    data_x.append(dataset[i:i+look_back])

    data_y.append(dataset[i+look_back])

    return np.asarray(data_x), np.asarray(data_y) #转为ndarray数据

    #以2为特征维度,得到数据集

    dataX, dataY = creat_dataset(datas,2)

    train_size = int(len(dataX)*0.7)

    x_train = dataX[:train_size] #训练数据

    y_train = dataY[:train_size] #训练数据目标值

    x_train = x_train.reshape(-1, 1, 2) #将训练数据调整成pytorch中lstm算法的输入维度

    y_train = y_train.reshape(-1, 1, 1)  #将目标值调整成pytorch中lstm算法的输出维度

    #将ndarray数据转换为张量,因为pytorch用的数据类型是张量

    x_train = torch.from_numpy(x_train)

    y_train = torch.from_numpy(y_train)

    二、创建LSTM模型

    class RNN(nn.Module):

    def __init__(self):

    super(RNN,self).__init__() #面向对象中的继承

    self.lstm = nn.LSTM(2,6,2) #输入数据2个特征维度,6个隐藏层维度,2个LSTM串联,第二个LSTM接收第一个的计算结果

    self.out = nn.Linear(6,1) #线性拟合,接收数据的维度为6,输出数据的维度为1

    def forward(self,x):

    x1,_ = self.lstm(x)

    a,b,c = x1.shape

    out = self.out(x1.view(-1,c)) #因为线性层输入的是个二维数据,所以此处应该将lstm输出的三维数据x1调整成二维数据,最后的特征维度不能变

    out1 = out.view(a,b,-1) #因为是循环神经网络,最后的时候要把二维的out调整成三维数据,下一次循环使用

    return out1

    rnn = RNN()

    #参数寻优,计算损失函数

    optimizer = torch.optim.Adam(rnn.parameters(),lr = 0.02)

    loss_func = nn.MSELoss()

    #三、训练模型

    for i in range(1000):

    var_x = Variable(x_train).type(torch.FloatTensor)

    var_y = Variable(y_train).type(torch.FloatTensor)

    out = rnn(var_x)

    loss = loss_func(out,var_y)

    optimizer.zero_grad()

    loss.backward()

    optimizer.step()

    if (i+1)%100==0:

    print('Epoch:{}, Loss:{:.5f}'.format(i+1, loss.item()))

    #损失值

    #四、模型测试

    #准备测试数据

    dataX1 = dataX.reshape(-1,1,2)

    dataX2 = torch.from_numpy(dataX1)

    var_dataX = Variable(dataX2).type(torch.FloatTensor)

    pred = rnn(var_dataX)

    pred_test = pred.view(-1).data.numpy()  #转换成一维的ndarray数据,这是预测值

    dataY为真实值

    #五、画图检验

    plt.plot(pred.view(-1).data.numpy(), 'r', label='prediction')

    plt.plot(dataY, 'b', label='real')

    plt.legend(loc='best')

    百分之七十是训练数据的目标值和真实目标值,剩下的为预测的目标值和真实目标值之间关系

    展开全文
  • 为什么研究心跳间隔序列在算法自动识别心电图(ECG)这个领域,要解决形态识别和周期性...这种时候就需要根据此前若干个心跳间隔推算出之后若干个心跳可能出现在什么位置(即周期性规律),在可能出现的时间区间内搜索...

    为什么研究心跳间隔序列

    在算法自动识别心电图(ECG)这个领域,要解决形态识别和周期性识别两方面问题。形态识别就是从ECG信号的高低起伏中识别出PQRST特征点。但形态识别不能解决所有问题:当原始信号信噪比不高,混杂了部分难以通过滤波等手段抑制的噪音时,单纯形态无法给出确定性判断。这种时候就需要根据此前的若干个心跳间隔推算出之后若干个心跳可能出现在什么位置(即周期性规律),在可能出现的时间区间内搜索形态上最可能的PQRST特征点。

    什么是心跳间隔序列

    心跳间隔序列,指的是用心脏相邻两次跳动的时间间隔组成的时间序列。其中心脏一次跳动到下一次跳动之间的时间也称为心动周期或心跳间隔。由于受到复杂的人体生物机制调节(包括但不限于交感神经、副交感神经等),每个心跳间隔的长度并不一样。

    如果我们将每个心跳间隔用线连起来,那么将是下图所示的样子,数据来自MIT-BIH Arrhythmia数据库[1]中编号为100的测试记录。图中纵坐标单位为ms,代表这次心跳周期的时间长度,横坐标是每一次心跳的序号。这是一个健康人测量到的心率变化,可以看出其心动周期长度既呈现快速的起落,也呈现相对中长期的趋势,同时还存在个别异常点。

    接下来一张图是[1]中编号为200的一份心律不齐情况下的心跳间隔序列,对比前一幅图片,可以看到在心律不齐发生的情况下,被试者心跳间隔变化幅度明显变大,在500-1000+ms之间反复变化。

    问题定义和模型设计

    根据前述背景,此问题可以抽象为:给定前N个心跳间隔,预测第N+1个心跳间隔最可能是多少。

    抽象之后的问题是一个典型的时间序列预测问题。在常用的神经网络结构中,RNN是比较适合表征时间序列特征的结构,因此我选择了LSTM作为模型的主要部分。对于输入层,考虑到时间序列的关键规律在于变化趋势,为了凸显这个趋势,可以使用batch normalization将数据归一化,提升学习效率。网络的最终输出是下一个心跳的具体值,那么使用线性回归的全连接层处理LSTM的输出就比较合适。综合上述考虑,设计出的模型基本结构如下图所示。

    Loss函数的选择

    如何评价预测出的下一个心跳间隔准不准?这里有两种选择。

    一种是追求绝对值的准确,即预测值与真实值误差越小越好,这种情况下RMSE[2]是一个比较合适的误差评价指标。

    另一种是评价预测值与真实值误差是否落在一定范围内。由于前N个心跳间隔不一定包含决定第N+1个点心跳间隔的所有信息,要求严格精确的预测第N+1个点并不合理,具体到目标应用中也没必要精确预测第N+1个点,只要给出第N+1个心跳最可能出现的时间区间就可以了。这种思路下网络结构和损失函数都要做相应调整。

    出于简单和直观的考虑,本文采取上述第一种设计思路,即使用RMSE评价Loss. RMSE是由预测向量与标签向量做初等运算得到的,所以具备可导的数学特性,可以使用梯度下降法调优。

    性能评价

    从MIT-BIH数据库找到一份正常心率的记录,取其中90%做训练,10%做测试,下图是测试集预测效果图,橙色为真实值,蓝色为预测值,纵坐标单位为ms。从图中可以看到,除了真实曲线的几次较大突变,预测曲线基本学习到了真实曲线的波动规律。

    上述结果验证了对于一个人一次测量,网络基于前90%的心跳间隔训练可以较为良好的预测最后10%的心跳间隔,那么如果是两个不同人,取一个人的数据训练,在另一个人身上是否有效呢?下图回答了这个问题,训练数据取自100号记录,测试数据取自101号记录。虽然RMSE较之上一张图有增加,但是预测曲线仍然能较好的跟踪真实曲线的变化趋势。

    前面展示两份数据都是正常心律测量记录,在心律不齐发生时,被试者短时间内心率会发生较大变化,这种情况下网络学习情况如何?

    从MIT-BIH数据库中找到一份编号为200的心律不齐用户的测试结果。利用这份数据,选择前90%的数据训练,最后10%的数据测试,得到测试集上跟踪曲线如下。相比于健康心律,心律不齐的情况下预测难度提升,RMSE显著增大,即预测误差增大。但从曲线跟踪趋势来看,预测值仍然可以比较好的跟踪真实曲线的波动趋势,实现趋势判断。

    总结与讨论

    本文使用一个较为简单的神经网络结构,在MIT-BIH公开数据集上实现了对心跳间隔时间序列的预测,验证了LSTM对于时间序列中长期和短期的趋势特征具备抽象和表达能力。

    但是,本文描述的模型只能被视为一个Demo,在实际应用还有以下问题要考虑:通用模型 or 专用模型:从本文的实验数据可以看出来,对于健康心跳和心律不齐两种情况下心跳间隔数组的趋势规律完全不同。在模型实际应用时,这两种情况都有可能遇到,是设计出一个包含多种规律的通用模型,还是多个不同规律的模型?如果是前者,模型结构方面需要增加复杂度,以便表征不同心跳间隔序列的关系;如果是后者,在在多个规律模型之外还需要增加分类器,对于输入信号正确分类,从而选择不同的模型。

    离线学习 or 在线学习:从前面的实验可以看出,在一个人身上训练的模型应用于另一个人时误差会增大。那么是否可以利用在被试身上采集到的前N个心跳间隔序列对模型的部分参数做调优,使得基于大样本学习的通用模型更加适用于当前被试者本人。

    预测下一个心跳间隔的值 or 可能范围:这一点在文中Loss函数的选择这部分就有讨论。本文虽然采用的是预测下一个心跳间隔的值,但在实际应用中预测“可能的范围”更具有意义,没有误差范围的预测结果对实际应用难以产生指导价值。在设计能够预测“可能范围”的网络时,需要注意几个问题。首先要对预测范围做正则化,否则梯度下降法会倾向于预测范围无穷大,这样无论如何真实值都会落入范围内,但无穷大的范围预测结果是没有实际用途的;其次,一个范围预测的好或不好,需要合理设计Loss函数,这其中如果用到类似于类似Sigmoid函数的非线性变换,一定要考虑梯度丢失问题,即Sigmoid函数求导之后在+-3以外的梯度快速趋向于0,不利于基于梯度下降的网络优化,极端情况下可能出现训练中梯度消失,无法优化网络。

    参考文献

    展开全文
  • 最近一段时间在研究如何利用...发现神经网络模型可以来预测,并且有很多是结合时间序列或者SVM(支持向量机)等组合模型来进行预测,本文结合实际数据,选取了常用BP神经网络算法,其算法原理,因网上一大堆,所以...
  • 分析神经网络非线性建模原理基础上,以典型非线性差分方程为研究对象,提出了一类基于神经网络的非线性动态系统建模方法.针对传统 BP算法局限性,提出了一种非线性动态系统神经网络改善梯度估计精度新算法.并...
  • 本文为沙迦美国大学(作者:Assia Lasfer)...本研究使用实验设计(DOE)来研究人工神经网络(ANN)设计参数意义和行为,以及它们对发达、新兴和前沿市场预测变化性能影响。在本研究中,每种分类用两种市场...
  • 在利用神经网络分析时间序列预测方法的基础上,用方差分析的统计方法确定样本序列的长度,从而有效地确定神经网络输入层节点数。对太阳黑子年平均活动序列进行了训练和预测,并从网络本身的内在制约因素出发比较了小...
  • 何时应用 1D CNN?CNN 可以很好地识别出数据中简单模式,然后使用这些简单模式在更高级层中...1D CNN 可以很好地应用于传感器数据的时间序列分析(比如陀螺仪或加速度计数据);同样也可以很好地用于分析具有固定...
  • #时间序列预测分析就是利用过去一段时间内某事件时间特征来预测未来一段时间内...#时间序列模型最常用最强大的的工具就是递归神经网络(recurrent neural network, RNN)。相比与普通神经网络的各计算结果之间相互...
  • 金融时间序列分析

    2018-03-17 21:58:30
    特别是包含当前研究热点,如风险值、高频数据分析和马尔町夫链蒙特卡罗方法等。主要内容包括:金融时间序列数据基本...本书可作为金融等专业高年级本科生或研究生的时间序列分析教材,也可供相关专业研究人员参考
  • 利用MATLAB 进行BP神经网络的预测(含有神经网络工具箱) 最近一段时间在研究如何利用预测其销量个数,在网上搜索了...发现神经网络模型可以来预测,并且有很多是结合时间序列或者SVM(支持向量机)等组合模型来进...
  • N-BEATS:神经网络底层扩展分析,用于可解释的时间序列预测题目:N-BEATS: Neural basis expansion analysis for interpretable time series forecasting 作者:Boris N. Oreshkin, Dmitri Carpov, Nicolas Chapados...
  • 在此基础上, 选取2008年1月21日-2012年7月1日中国马铃薯日度价格为研究对象, 对所构建动态混沌神经网络时间序列预测模型进行学习、训练和测试, 并用统计分析方法对模型性能进行评价与分析, 最后, 将所构建模型...
  • 分析比较了各种模型进行时间序列预测,以确定哪种模型效果最好 数据 数据来自Kaggle: ://www.kaggle.com/robikscube/hourly-energy-consumption包含兆瓦(MW)中各种电力公司能耗读数。 代顿数据集已用于此...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 552
精华内容 220
关键字:

时间序列分析的神经网络