一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于时间序列分解和LSTM的时间序列数据预测方法与流程

2022-03-26 13:15:23 来源:中国专利 TAG:

一种基于时间序列分解和lstm的时间序列数据预测方法
技术领域
1.本发明涉及一种基于时间序列分解和lstm的时间序列数据预测方法,属于时间序列数据预测技术领域。


背景技术:

2.时间序列数据预测是通过对历史数据的分析模拟出数据的变化规律,然后预测出未来时间点上的数据。时间序列预测在股票分析、大气污染监测、交通流调度等众多应用中具有重要意义。
3.常用的时序数据预测方法包括统计方法和机器学习方法。近年来,随着深度学习的不断发展,循环神经网络(recurrent neural network,rnn),长短期记忆网络(long short term memory,lstm)在数据预测上表现了较好的预测性能。然而,常用的方法不能很好地预测复杂的非线性时间序列,深度学习方法的表现有所提升,但训练时间较长且存在过拟合的现象。此外,预测滞后性的问题仍然存在,无法适应时序数据的变化特征,尤其对非平稳的突发数据预测不准确。
4.时序数据分解在时间序列分析上有着很重要的作用。时间序列数据一般分解为3个部分:趋势分量、周期分量和余项分量。


技术实现要素:

5.本发明设计开发了一种基于时间序列分解和lstm的时间序列数据预测方法,采用时间序列分解将时间数据的趋势与周期分离,并与lstm相结合,从而有效提高预测的准确率,在交通流监控系统中,通过交通路况的实时预测,支持交通流量的预先调度,能够解决交通拥堵现象。
6.本发明提供的技术方案为:
7.一种基于时间序列分解和lstm的时间序列数据预测方法,包括:
8.步骤一、采集时间序列数据,建立预测模型数据需求的时间序列样本集,进行训练集和测试集的划分,得到第一训练集与第一测试集;
9.步骤二、基于lstm建立用于趋势分量和余项预测的第一神经网络,通过第一训练集进行训练与调参,将训练好的第一神经网络模型对第一训练集进行预测,获得第一训练集的趋势分量和余项的预测结果,进一步处理成第二训练集;
10.步骤三、基于ann建立第二神经网络,通过第二训练集进行训练和调参,得到训练好的第二神经网络;
11.步骤四、将训练好的第一神经网络和第二神经网络模型对第一测试集进行联合预测,获得拟合的时间序列数据预测结果。
12.优选的是,所述步骤一包括:
13.对原始时间序列数据进行一阶差分和二阶差分,分解原始时间序列数据得到周期分量、趋势分量和余项;
14.通过滑动窗口的方法确定第一神经网络的输入输出,设窗口大小为n,窗口每次滑动1,输入为:窗口前n-1个六种数据,输出为:窗口第n个趋势分量和窗口第n个余项;
15.其中,六种数据包括:原始序列、一阶差分序列、二阶差分序列、周期分量序列、趋势分量序列和余项序列;
16.将第一神经网络的输入和输出数据样本按照0.95:0.05进行划分,并分别进行归一化,得到第一训练集和第一测试集。
17.优选的是,所述步骤二包括:
18.使用第一训练集对第一神经网络模型进行训练和调参,得到训练好的第一神经网络模型;
19.通过训练好的第一神经网络预测第一训练集和第一测试集的趋势分量以及余项。
20.优选的是,所述步骤三包括:
21.将第一神经网络预测得到的趋势分量、余项以及相应的周期分量作为第二神将网络的输入,相应的原始时序数据作为第二神经网络的输出,基于ann构建第二神经网络;
22.通过第二训练集对第二神经网络进行训练和调参,得到训练好的第二神经网络。
23.优选的是,所述步骤四包括:
24.使用第一神经网络处理第一测试集,将预测得到的趋势分量、余项以及相应的周期分量作为第二神经网络的输入,相应的原始时序数据作为第二神经网络的输出,得到第二测试集。
25.通过训练好的第二神经网络对第二测试集进行预测,将预测结果反归一化,得到最终拟合的时间序列数据预测结果。
26.优选的是,所述步骤一中,通过分解法的加法模型分解原始时序数据,所述加法模型为:
27.f(t)=s(t) t(t) r(t);
28.式中,s(t)为周期分量,t(t)为趋势分量,r(t)为余项。
29.优选的是,所述步骤一中,分解时间序列时选择周期为60,分解时间趋势时使用移动平均值。
30.本发明所述的有益效果:
31.1)本发明利用时序分解,将交通流/网络流时间序列数据的趋势分量、周期分量和余项分离出来,对趋势分量和余项进行预测,然后将预测到的趋势分量、余项和周期分量合成时序数据。将神经网络与时序差分和分解相结合,使数据整体预测变成了3个独立的部分预测,降低了交通流/网络流预测难度,从而有效提高了交通流/网络流预测的精度。
32.2)本发明利用时序分解得到明确的交通流/网络流周期性,在交通流/网络流时间序列数据周期性突增的情况下有更好的预测效果,提高了交通调度/网络监控的性能。
33.3)在流式计算平台中,面向应用的主动式弹性资源调度以输入流数据的预测为基础,准确的预测有利于提高资源调度的性能,能够节约资源使用,进而节省系统能耗。
34.4)在交通流监控系统中,通过交通路况的实时预测,支持交通流量的预先调度,能够解决交通拥堵现象
附图说明
35.图1为本发明的预测方法原理示意图
36.图2为本发明实施例提供的时间序列数据预测方法的示意性流程图
37.图3为本发明实施例前500个数据时间序列分解结果图
38.图4为本发明实施例预测结果对比图
39.图5为传统使用lstm网络预测的结果对比图
具体实施方式
40.下面结合附图对本发明做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。
41.如图1-5所示,本发明提供一种基于时间序列分解和lstm的时间序列数据预测方法,采用时间序列分解将时间数据的趋势与周期分离,并与lstm相结合,从而有效提高预测的准确率。
42.采用python软件,版本号为:python3.7,tensorflow1.14,运行软件环境:windows10,硬件配置:处理器amd ryzen 5 4600h with radeon graphics(12cpus),3.0ghz,内存16g ram,显卡nvidia geforce gtx 1650;
43.第一神经网络模型:如图1中lstm网络所示:第1层为lstm层,100个神经元。第2层为dense层,50个神经元,第3层分成两部分,其中一部分用于预测趋势分量,本发明实施例这一部分是用两个dense层来拟合趋势分量,第1个dense层有24个神经元,第2个dense有1个神经元,用于输出趋势分量的预测结果;另一部分用于预测余项,这一部分是用1个dense层来拟合余项,只有一个神经元,用于输出余项的预测结果。
44.输入格式:[none,60,6],其中6表示6种输入数据:原始序列、一阶差分序列、二阶差分序列、周期分量序列、趋势分量序列和余项序列。60指每个滑动窗口中前60个数据。none表示每次输入的组数。
[0045]
输出格式:[none,2],其中2表示神经网络对滑动窗口中第61个趋势分量和余项的预测,none表示每次输出的组数。
[0046]
第二神经网络模型:如图2中ann网络所示,本发明实施例设置3层,均为dense层,神经元个数分别为:50,24,1。最后一层为输出层,用于输出预测结果。
[0047]
输入格式:[none,3],其中3表示3种输入数据:第一神经网络模型的两个输出和每个滑动窗口中第61个周期分量。none表示每次输入的组数。
[0048]
输出格式:[none,1],其中1表示第二神经网络对滑动窗口中第61个原始时序数据的预测,none表示每次输出的组数。
[0049]
预测模型是由两个神经网络模型组成的,分别是用于预测趋势分量和余项的第一神经网络模型,用于将趋势分量、周期分量以及余项拟合成对应时间序列数据的第二神经网络模型。在对实验数据处理时,需要使用两组训练集和测试集,分别是用来训练测试第一神经网络模型的第一训练集和第一测试集、用来训练测试第二神经网络模型的第二训练集和第二测试集。
[0050]
由于第二神经网络模型的输入需要使用第一神经网络模型的输出,所以需要在对第一神经网络模型训练完成后,才能得到第二训练集和第二测试集,具体包括:
[0051]
步骤一、采集时间序列数据,并对其进行预处理,获得满足建立预测模型数据需求的时间序列样本集,进行训练集和测试集的划分;
[0052]
其中,实验数据源于covid19_twitter数据集中text文本,内容是获取了推特上与covid-19相关的推文,时间范围是2021-08-01日起的31天,考虑到使用英语的国家与地区较多,为了丰富数据样本,实验数据采用了英文文本数据。每日数据约15~20万条。在获取具体推文时需要申请推特的开发者账户,在申请过程中要发多次邮件表明获取的数据的用途和其他的信息。使用该github项目(https://github.com/thepanacealab/covid19_twitter)中的covid_19_dataset_tutorial可以快速下载到具体数据。
[0053]
原始数据包括推文的点赞数、平台、文本、评论、转发信息、编号、创建时间,在本发明中,作为一种优选,原始数据为创建时间。
[0054]
对原始数据进行处理,将原始数据按时间排序,计算出每分钟推文的个数,得到原始时序数据;
[0055]
对原始时序数据进行一阶差分和二阶差分;
[0056]
使用经典分解法的加法模型分解原始时序数据,得到周期分量、趋势分量和余项;
[0057]
通过滑动窗口的方法确定第一神经网络的输入输出,设窗口大小为n,窗口每次滑动1,输入为:窗口前n-1个六种数据,输出为:窗口第n个趋势分量和窗口第n个余项,n》1;
[0058]
其中,加法模型为:f(t)=s(t) t(t) r(t);
[0059]
式中,s(t)为周期分量,t(t)为趋势分量,r(t)为余项;
[0060]
分解时间序列时选择周期为60,即以一个小时为一个周期;
[0061]
分解趋势分量时使用移动平均值,由于需要用已知数据去预测未知数据,在进行时间序列分解时,就不能使用被预测的数据作为分解的输入,计算移动平均值时仅使用过去的值进行计算;
[0062]
计算移动平均值时可以使用当前数据向前k个值和向后k个值计算均值,如果使用这种方式分解,分解出的三个分量就会包含未来的时序数据的信息,k≥1。
[0063]
前500数据进行时间序列分解结果如图3所示,由于计算移动平均值时仅使用过去的值进行计算,所以前60个数据趋势分量与余项为空值,用0填充;
[0064]
将原始序列、一阶差分序列、二阶差分序列、周期分量序列、趋势分量序列和余项序列这六种数据采用滑动窗口的方法得到第一神经网络的输入与输出,窗口大小为61,每次滑动1,窗口前60个6种数据作为第一神经网络的输入,窗口的第61个的趋势分量和余项作为第一神经网络的输出;
[0065]
将第一神经网络的输入和输出数据样本按照0.95:0.05进行划分,得到第一训练集和第一测试集;
[0066]
删除异常数据0值以及其前后60个数据,使用min-max normalization方法将训练集和测试集归一化处理,得到第一训练集和第一测试集;
[0067]
步骤二、基于lstm建立用于趋势分量和余项预测的第一神经网络,模型结构如图1中lstm所示,第一层为lstm层,第二层为dense层,第三层分成两部分,其中一部分用于预测趋势分量,本发明实施例中这一部分是用两个dense层来拟合趋势分量;另一部分用于预测余项,这一部分是用一个dense层来拟合余项。通过第一训练集进行训练与调参,将训练好的第一神经网络模型对第一训练集进行预测,获得第一训练集的趋势分量和余项的预测结
果;
[0068]
利用第一训练集对第一神经网络模型进行训练与调参,学习率设置为0.001,训练次数为20次;
[0069]
将第一神经网络模型预测得到的第一训练集和第一测试集中的趋势分量和余项以及相应的周期分量作为第二神经网络模型的输入,相应的原始时序数据作为第二神经网络膜的输出,得到第二训练集;
[0070]
步骤三、基于ann建立第二神经网络,模型结构如图1中ann网络所示,由于对三个分解量拟合原始时序数据较为简单,故由三个dense层连接成ann网络,通过第二训练集进行训练和调参;
[0071]
第二神经网络模型的输入有3个,分别为滑动窗口第61个数据的趋势分量、余项和周期分量,其中趋势分量和余项是第一神经网络的预测结果,周期分量具有周期性,不需要进行预测,输出有一个,为滑动窗口中第61个原始时序数据,即需要被预测的数据;
[0072]
通过第二训练集对第二神经网络模型进行训练和调参,学习率设置为0.001,训练次数20次;
[0073]
步骤四、将训练好的第一神经网络和第二神经网络模型对第一测试集进行联合预测,获得拟合的时间序列数据预测结果;
[0074]
使用第一神经网络处理第一测试集,将预测得到的趋势分量、余项以及相应的周期分量作为第二神将网络的输入,相应的原始时序数据作为第二神经网络的输出,得到第二测试集;
[0075]
利用第二神经网络模型对第二测试集进行预测,将预测反归一化,与真实结果对比。
[0076]
其中,测试集分为第一测试集和第二测试集,第一测试集是用于测试第一神经网络,第二测试需要第一神经网络的结果,第一测试集输入第一神经网络之后将输出结果和步骤一的部分数据处理得到第二测试集。
[0077]
如图4所示,测试集前500个数据的预测结果,可以看出对于波峰的位置有较好的预测,较好的解决了传统神经网络预测滞后性的问题。
[0078]
如图5所示,与传统的单一使用lstm的模型进行对比:
[0079]
对两种预测方法都从均方误差(mse)、均方根误差(rmse)平均绝对误差(mae)和决定系数(r2)这四个指标进行了衡量。
[0080]
传统lstm模型的评价结果:mse:343.57、rmse:18.53、mae:13.41、r2:0.717,本发明的模型评价指标值:mse:192.19、rmse:13.86、mae:10.54、r2:0.842,上述四种衡量指标中,前三种的数值越小,说明所得的预测值与观测值之间的误差越小,最后的r2越接近1,则预测结果越好,通过上述所得的四组衡量指标的对比数据,进一步验证了本发明基于时间序列分解和lstm的时间序列数据预测方法可以有效提高最终预测结果的准确度。
[0081]
综上所述,本发明在对时序数据预测时,首先将时序数据分解处理,对分解量进行预测,最后将预测的分解量合成得到对时序数据的预测,提出了一种基于时间序列分解和lstm的时间序列数据预测方法。与现有lstm相比,该方法对流数据的预测有着更好的表现。在流式计算平台中,面向应用的主动式弹性资源调度以输入流数据的预测为基础,准确的预测有利于提高资源调度的性能,能够节约资源使用,进而节省系统能耗。
[0082]
尽管本发明的实施方案已公开如上,但其并不仅仅限于说明书和实施方式中所列运用,它完全可以被适用于各种适合本发明的领域,对于熟悉本领域的人员而言,可容易地实现另外的修改,因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图例。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献