本发明涉及时间序列预测技术领域,具体涉及一种基于深度学习的船舶流量预测方法,特别涉及一种基于改进的if-ceemd-lstm(孤立森林-互补集合经验模态分解-长短期记忆神经网络)的船舶流量预测方法。
背景技术:
现代海上贸易的增加,海上船舶流量的预测精确度对保障船舶通行效率和安全、拓宽水运交通领域理论、港口和海事部门对港口建设和发展以及对航道进行有效利用很有必要。但交通流量预测过程比较复杂,受多种因素的影响,有季节、gdp、港口集装箱吞吐量、港口货物吞吐量等。
过去大部分采用传统机器学习的方法建模预测船舶流量,根据船舶流量众多的影响因素中,选取对预测结果影响较大的因素,作为模型数据输入的一部分。现在,根据船舶流量的数据特点,处理其原始数据,减少因数据的复杂度对预测精度影响;其次通过船舶流量的数据本身来揭示影响船舶流量的因素,这样就规避了传统方法的选取因素的不确定性,并且还可以提高预测的精确度。
目前,国内外对船舶流量预测的研究很丰富,主要有神经网络,时间序列模型,支持向量机,和组合预测等。其中神经网络对非线性的数据具有很好的拟合,循环神经网络(rnn)是常用来对时间序列数据的预测,但其存在梯度爆炸或梯度消失的问题,因此由长短期记忆神经网络来处理这一问题。由于单一的模型不能满足预测的精度,现在时间序列的预测方法都是两种模型以上的有效的结合。
针对现有时间序列预测技术精度不高,船舶流量数据非线性和非平稳性的特点以及循环神经网络存在梯度消失等问题,需要研发一种改进if-ceemd-lstm(if是指isolationforest,即孤立森林算法;ceemd是指改进互补集合经验模态分解;lstm是指longshortterm网络,即长短期记忆神经网络)预测的方法,对长期或短期时间序列数据预测都有较好的适应性,在预测中具有优越的性能。
技术实现要素:
本发明的目的在于提供一种基于改进if-ceemd-lstm的船舶流量预测方法,在深度学习的环境下,建立森林孤立算法和互补集合经验模态分解和长短期记忆神经网络的模型,通过森林孤立算法去除原始数据中的异常分量,然后采用互补集合经验模态分解对原始船舶流量数据分解为有限个平稳的本征模函数分量和一个余数分量,结合排列熵算法去除分解后的伪分量,再用优化好参数的长短期记忆神经网络模型对分解后的数据单独进行预测,最后对各个预测分量进行叠加,就是最终的预测的结果;本发明对长或短期时间序列具有较好的适应性,同时也提高了预测精度。
为了达到上述目的,本发明通过以下技术方案实现:
一种基于深度学习的船舶流量预测方法,该方法包含:
步骤s1、采用森林孤立算法去除原始船舶流量数据x(t)的异常点;
步骤s2、对去除异常点的船舶流量数据进行平稳性验证;
步骤s3、对经过步骤s2验证得到的非平稳性的船舶流量数据s(t)进行互补集合经验模态分解,获得有限个平稳的本征模函数分量和一个残余分量;
步骤s4、将步骤s3中得到的所述有限个平稳的本征模函数分量和一个残余分量作为长短期记忆神经网络的输入,对该有限个平稳的本征模函数分量和残余分量分别进行网络预测,并将得到各独立的长短期记忆神经网络的预测分量值进行叠加,得到船舶流量预测结果。
可选地,所述步骤s3中的互补集合经验模态分解包含以下步骤:
步骤s31、通过多次在所述非平稳性的船舶流量数据s(t)中加入一对互补白噪声,依次得到已加白噪声的待分解的一对船舶流量数据;
步骤s32、对所述待分解的一对船舶流量数据分别进行经验模态分解,得到对应的本征模函数分量序列和残余分量;
步骤s33、根据本征模函数分量序列,集成平均本征模函数分量;
步骤s34、将分解后得到的所述平均本征模函数分量进行排列熵算法检查,得到伪分量并去除所述伪分量,再将去除伪分量后的剩余分量进行经验模态分解,得到最终的有限个平稳的本征模函数分量和一个残余分量。
可选地,所述步骤s1中,通过不断地分割原始船舶流量数据集x,用以孤立出异常点,并对去除异常点的船舶流量数据进行归一化处理;
分割原始船舶流量数据集是指通过反复随机选取样本特征,不断地分割原始船舶流量数据集,直到每个样本点均为孤立。
可选地,所述步骤s2中进一步包含:采用adf检验方法对去除异常点的船舶流量数据的时间序列进行平稳性校验,当所述去除异常点的船舶流量数据的时间序列平稳,则不存在单位根,反之,则存在单位根。
可选地,所述步骤s31中,进一步包含以下过程:
在非平稳性的船舶流量数据s(t)中分别多次加入一对相反且大小相等的白噪声,分别依次得到已添加白噪声后的一对船舶流量数据
式中,ni(t)为添加的白噪声信号,i=1,2,...,ne,ne表示添加白噪声的对数。
可选地,所述步骤s32中,将已添加白噪声后的船舶流量数据
步骤s32-1、找出待分解的船舶流量数据s’(t)的所有极大值和极小值,用四次hermite插值去拟合上下包络线,上下包络线分别为m1、m2,取这上下两条包络线的平均值m(t)=(m1 m2)/2,得到新序列h1(t)=s’(t)-m(t);当得到的新序列h1(t)存在正的极小值或者负的极大值,则一直重复此步骤s321,直至找到第一个本征模态数imf1,得到新数据s’(t)-imf1;
步骤s32-2、将得到新数据s’(t)-imf1作为下一循环中步骤s32-1的s’(t),循环执行步骤s32-1,直至将待分解的船舶流量数据s’(t)分解为多个本征模函数分量和一个残余的单调分量r(t),得到公式(1):
s'(t)=imf1 imf2 imf3 ··· imfm r(t)(1)
将船舶流量数据
船舶流量数据
可选地,所述步骤s33中,进一步包含:
根据步骤s32-2中的由
其中,n表示原始船舶流量序列的长度。
可选地,所述步骤s34中,进一步包含:
步骤s34-1、对于船舶流量数据s(t)时间序列相空间重构后得到的矩阵,该矩阵的每一行都得到一种符号序列,记为s(l)=(j1,j2,...,jm),式中,l=1,2,...,k且k=m!,m维空间映射m!种符号序列(j1,j2,...,jm);
若每种符号序列s(l)出现的概率分别为p1,p2,...,pk,则船舶流量数据s(t)时间序列的排列熵为:
步骤s34-2、执行步骤s34-1,计算第一个平均本征模函数分量i1(t)的排列熵,将第一个平均本征模函数分量i1(t)与排列熵设定值进行比较,判断第一个平均本征模函数分量i1(t)是否为异常信号:当第一个平均本征模函数分量i1(t)大于排列熵设定值,则第一个平均本征模函数i1(t)是异常信号;若第一个平均本征模函数分量i1(t)小于排列熵设定值,则第一个平均本征模函数分量i1(t)不是异常信号;
当判断结果是第一个平均本征模函数分量i1(t)为异常信号,则循环执行步骤s32和s33,直至判断出第p个平均本征模函数分量ip(t)不是异常信号,p=1,2,...,ne;ip(t)为:
s34-3、将已分解的前p-1个平均本征模函数分量从待分解的船舶流量数据s(t)中分离出来,得到
s34-4、对剩余信号r(t)进行经验模态分解,得到船舶流量数据的最终分解:
可选地,所述步骤s4中,进一步包含:
步骤s41、将分解后的本征模函数
步骤s42、长短期记忆神经网络的输入门it、忘记门ft、输出门ot及记忆单元的输入状态表达式分别如下所示:
式中,xt是t时刻长短期记忆神经网络的输入,包含步骤s34-4中的本征模函数
长短期记忆神经网络的记忆线的t时刻输出ct的表达式为:
式中,ct-1表示长短期记忆神经网络的记忆线的t-1时刻输出;
长短期记忆神经网络的隐藏层的输出ht如下:
ht=ot×tanh(ct-1)
式中,tanh为双曲线正切函数。
步骤s43、长短期记忆神经网络的输出为:y(t)=w2×ht b;
式中,w2为长短期记忆神经网络的输出层和隐藏层之间的权值矩阵;b为长短期记忆神经网络的输出层的偏向;
步骤s44、通过长短期记忆神经网络输出的各预测分量值进行叠加,得到最终预测的结果:
y(t)=y1 y2 y3 ··· ym yr;
式中,y1、y2、y3……ym分别是长短期记忆神经网络预测本征模函数的各预测值,yr是残留分量预测值。
与现有技术相比,本发明的有益效果在于:本发明针对船舶流量数据的非线性非平稳性特点,采用改进互补集合经验模态进行分解(complementaryensembleempiricalmodedecomposition,ceemd),减少了船舶流量数据处理的复杂度,减少了分解后的伪分量,提高了预测时效性;本发明中,由于ceemd(改进互补集合经验模态分解)用到了emd(经验模态分解)算法,对emd算法中采用的三次样条插值改为四次hermite插值,解决了算法存在的过冲和欠冲的问题;用训练好的长短期记忆神经网路模型去预测,预测精度提高,且该模型对不同时间尺度的时间序列具有较好的适应性。
附图说明
图1为本发明的基于改进的if-ceemd-lstm的船舶流量预测方法流程图;
图2为本发明改进的互补集合经验模态分解图;
图3为本发明长短期记忆神经网络记忆单元。
具体实施方式
使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了一种基于改进的if-ceemd-lstm(孤立森林-互补集合经验模态分解-长短期记忆神经网络)的船舶流量预测方法,首先用森林孤立算法去除原始船舶数据中的异常分量后归一化处理;然后在归一化处理后的船舶流量数据中加入一对互补的白噪声后;再对已加入白噪声后的船舶流量数据进行互补集合经验模态分解,得到有限个平稳的本征模函数分量和一个单调的残余分量,并结合排列熵算法去除分解后的伪分量;最后把这些分量送到长短期记忆神经网络单独进行预测,把预测后单独分量的值进行叠加就是最后的预测结果。本发明在深度学习的环境下,建立if-ceemd-lstm的模型,解决了传统方法因素选取不确定及原始数据复杂度影响预测精度问题。
如图1-图3结合所示,具体地,本发明的基于改进的if-ceemd-lstm的船舶流量预测方法包含以下步骤:
步骤s1、数据预处理;
所述步骤s1中进一步包含:采用森林孤立算法(if)去除原始船舶流量数据x(t)的异常点,得到去除异常点的船舶流量数据s(t);所述孤立森林算法是通过不断地分割原始船舶流量数据集x(t),从而把异常点给孤立出来;而分割原始船舶流量数据集x(t)的依据是反复随机选取样本特征,不断地分割数据集x(t),直到每个样本点都是孤立为止。在此情况下,异常点因为具有不同或者特殊的特征值,因此异常点的路径通常很短,也会比较早被分离出来,去除异常点后再对船舶流量数据s(t)进行归一化处理。
步骤s2、对经过数据预处理后的船舶流量数据s(t)进行平稳性验证;
所述步骤s2中进一步包含:采用adf检验方法对船舶流量数据s(t)的时间序列进行平稳性校验,当船舶流量数据s(t)的时间序列平稳,则不存在单位根,反之,则存在单位根。
步骤s3、通过步骤s2校验得到的非平稳性的船舶流量数据s(t)进行改进的互补集合经验模态分解(ceemd),得到有限个平稳的本征模函数分量和一个残余分量。
如图2所示是改进的互补集合经验模态分解图。本发明中的改进的互补集合经验模态分解的算法步骤如下所说;步骤s3中进一步包含以下内容(即改进互补集合经验分解原理如下):
s31、在船舶流量数据s(t)中分别多次加入一对互补(相反且大小相等)的白噪声,则分别得到添加白噪声后的一对船舶流量数据
s32、对已添加白噪声后的一对船舶流量数据
所述步骤s32进一步包含:将船舶流量数据
步骤s32-1、找出待分解的船舶流量数据s’(t)的所有极大值和极小值,用四次hermite插值去拟合其上、下包络线,上、下包络线分别为m1、m2,然后取这上下两条包络线的平均值m(t)=(m1 m2)/2,从而得到新序列h1(t)=s’(t)-m(t);其中,若得到的新序列h1(t)存在正的极小值或者负的极大值,则一直重复此步骤s32-1,直至找到第一本征模态数imf1,从而得到新数据s’(t)-imf1;
步骤s32-2、根据得到的新数据s’(t)-imf1,并将该新数据s’(t)-imf1作为下一循环的步骤s32-1中的s’(t),循环执行步骤s32-1,直至将最初的待分解的船舶流量数据s’(t)分解为有限个(如m个)imf分量(本征模函数分量)和一个残余的单调分量r(t),得到公式(1):
s'(t)=imf1 imf2 imf3 ··· imfm r(t)(1)。
对应地,将船舶流量数据
根据公式(2)和公式(3)可知,加入噪声的船舶流量数据
s33、根据步骤s32-2中的由
其中,n表示原始船舶流量序列的长度。
步骤s34、对步骤s33得到的分解后的平均imf分量做排列熵算法检查,在判断步骤s33得到的平均imf分量是否为异常分量后,去除伪分量后,再对剩下的分量进行emd分解。
所述步骤s34进一步包含以下过程:
s34-1、对于船舶流量数据s(t)时间序列的相空间重构后得到的矩阵,矩阵的每一行都得到一组符号序列,记为s(l)=(j1,j2,...,jm),式中,l=1,2,...,k且k=m!,即m维空间映射m!种符号序列(j1,j2,...,jm);这里表示的s(l)为符号序列,s(l)是这些排列中一种。
若每种s(l)符号序列出现的概率分别为p1,p2,...,pk,则船舶流量数据s(t)时间序列的排列熵为:
进一步地,对排列熵归一化后得到:
0≤hp=hp(m)/ln(m!)≤1(8)。
s34-2、执行步骤s34-1,计算平均imf分量i1(t)的排列熵,检查平均imf分量i1(t)是不是异常信号:设定平稳信号的排列熵的范围为0.55~0.6(本示例选取的是0.6,但本发明并不局限于该范围),将平均imf分量i1(t)的排列熵与设定值0.6比较:若大于设定值0.6,则平均imf分i1(t)是异常信号,若小于设定值0.6,则第一个平均imf分i1(t)不是异常信号。在所述步骤s34-2中,如果判断结果是平均imf分i1(t)为异常信号,则循环执行步骤s32和s33,直至判断出第p个平均imf分量ip(t)不是异常信号,p=1,2,...,ne,则ip(t)为:
s34-3、将已分解的前p-1个平均imf分量从最初的船舶流量数据s(t)中分离出来,得到
s34-4、再对剩余信号r(t)进行emd分解,即一直重复上述步骤s32-1,直至找到第一个本征模态数d1,从而得到新数据r(t)-d1作为为下一循环的步骤s32-1中的s’(t),循环执行步骤s32-1,最终将剩余信号r(t)分解为有限个本征模函数分量dl(t)和一个残余单调分量r”(t)为:
即得到船舶流量的最终分解为:
dl(t)表示最终得到imf分量,它本质上就是本征模数分量,为了与上述本征模数区分,这里用dl(t)表示;r”(t)表示残余分量。
s4、对步骤s34分解后的每个本征模函数和余数分别单独使用长短期记忆神经网络进行预测,将得到各独立的长短期记忆神经网络的预测分量值进行叠加,得到船舶流量预测结果。其中,图3是长短期记忆神经网络的记忆单元示意图。以下进一步阐述长短期记忆神经网路的预测部分。本发明对长短期记忆神经网络(lstm)的数据输入设置timestep、bach_size、epoch,通过大量的数据对长短期记忆神经网络模型进行训练,选取最优的神经网络参数,达到好的预测效果。
所述步骤s4进一步包含以下:
s41、将船舶流量数据s(t)分解后的本征模函数
s42、长短期记忆神经网络有输入门it、忘记门ft、输出门ot及记忆单元,它们的输入状态的表达式分别为:
式中,xt是t时刻长短期记忆神经网络的输入,即上述步骤s344的本征模函数
长短期记忆神经网络的记忆线的t时刻输出ct的表达式为:
式中,ct-1表示lstm记忆线的t-1时刻输出。
长短期记忆神经网络的隐藏层的输出ht如下:
ht=ot×tanh(ct-1)(17);
式中,tanh为双曲线正切函数。
s43、长短期记忆神经网络的输出为:y(t)=w2×ht b(18);
式中,w2为长短期记忆神经网络的输出层和隐藏层之间的权值矩阵;b为长短期记忆神经网络的输出层的偏向。
s44、最后通过长短期记忆神经网络输出的各预测分量值进行叠加就是最后预测的结果:
y(t)=y1 y2 y3 ··· ym yr(19);
式中,y1、y2、y3……ym分别是长短期记忆神经网络预测本征模函数的各预测值,yr是残留分量预测值。
综上所述,本发明根据船舶流量数据具有非线性非平稳性特点,采用森林孤立算法对原始数据去除异常点,提高了数据的精准性,进一步提高预测精度;采用的改进互补集合经验模态分解对原始数据分解为平稳的时间序列,去除了伪分量的可能,提高了预测时效性;由于ceemd用到了emd算法,对emd算法中采用的三次样条插值改为四次hermite插值,解决了算法存在的过冲和欠冲的问题,又提高了imf分量的准确性;再利用长短期记忆神经网络神经元的记忆特性,选择合适的参数学习和训练数据,能够根据时间序列数据之间隐藏的关联性,进行更好的拟合和预测,也规避了循环神经网的梯度消失或爆炸问题。与传统相比,本发明具有更广泛的实用性,且提高了预测精度。
尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。
1.一种基于深度学习的船舶流量预测方法,其特征在于,该方法包含:
步骤s1、采用森林孤立算法去除原始船舶流量数据x(t)的异常点;
步骤s2、对去除异常点的船舶流量数据进行平稳性验证;
步骤s3、对经过步骤s2验证得到的非平稳性的船舶流量数据s(t)进行互补集合经验模态分解,获得有限个平稳的本征模函数分量和一个残余分量;
步骤s4、将步骤s3中得到的所述有限个平稳的本征模函数分量和一个残余分量作为长短期记忆神经网络的输入,对该有限个平稳的本征模函数分量和残余分量分别进行网络预测,并将得到各独立的长短期记忆神经网络的预测分量值进行叠加,得到船舶流量预测结果。
2.如权利要求1所述的船舶流量预测方法,其特征在于,
所述步骤s3中的互补集合经验模态分解包含以下步骤:
步骤s31、通过多次在所述非平稳性的船舶流量数据s(t)中加入一对互补白噪声,依次得到已加白噪声的待分解的一对船舶流量数据;
步骤s32、对所述待分解的一对船舶流量数据分别进行经验模态分解,得到对应的本征模函数分量序列和残余分量;
步骤s33、根据本征模函数分量序列,集成平均本征模函数分量;
步骤s34、将分解后得到的所述平均本征模函数分量进行排列熵算法检查,得到伪分量并去除所述伪分量,再将去除伪分量后的剩余分量进行经验模态分解,得到最终的有限个平稳的本征模函数分量和一个残余分量。
3.如权利要求1所述的船舶流量预测方法,其特征在于,
所述步骤s1中,通过不断地分割原始船舶流量数据集x,用以孤立出异常点,并对去除异常点的船舶流量数据进行归一化处理;
分割原始船舶流量数据集是指通过反复随机选取样本特征,不断地分割原始船舶流量数据集,直到每个样本点均为孤立。
4.如权利要求1所述的船舶流量预测方法,其特征在于,
所述步骤s2中进一步包含:采用adf检验方法对去除异常点的船舶流量数据的时间序列进行平稳性校验,当所述去除异常点的船舶流量数据的时间序列平稳,则不存在单位根,反之,则存在单位根。
5.如权利要求2所述的船舶流量预测方法,其特征在于,
所述步骤s31中,进一步包含以下过程:
在非平稳性的船舶流量数据s(t)中分别多次加入一对相反且大小相等的白噪声,分别依次得到已添加白噪声后的一对船舶流量数据
式中,ni(t)为添加的白噪声信号,i=1,2,...,ne,ne表示添加白噪声的对数。
6.如权利要求5所述的船舶流量预测方法,其特征在于,
所述步骤s32中,将已添加白噪声后的船舶流量数据
步骤s32-1、找出待分解的船舶流量数据s’(t)的所有极大值和极小值,用四次hermite插值去拟合上下包络线,上下包络线分别为m1、m2,取这上下两条包络线的平均值m(t)=(m1 m2)/2,得到新序列h1(t)=s’(t)-m(t);当得到的新序列h1(t)存在正的极小值或者负的极大值,则一直重复此步骤s321,直至找到第一个本征模态数imf1,得到新数据s’(t)-imf1;
步骤s32-2、将得到新数据s’(t)-imf1作为下一循环中步骤s32-1的s’(t),循环执行步骤s32-1,直至将待分解的船舶流量数据s’(t)分解为多个本征模函数分量和一个残余的单调分量r(t),得到公式(1):
s'(t)=imf1 imf2 imf3 … imfm r(t)(1)
将船舶流量数据
船舶流量数据
7.如权利要求6所述的船舶流量预测方法,其特征在于,
所述步骤s33中,进一步包含:
根据步骤s32-2中的由
其中,n表示原始船舶流量序列的长度。
8.如权利要求7所述的船舶流量预测方法,其特征在于,
所述步骤s34中,进一步包含:
步骤s34-1、对于船舶流量数据s(t)时间序列相空间重构后得到的矩阵,该矩阵的每一行都得到一种符号序列,记为s(l)=(j1,j2,...,jm),式中,l=1,2,...,k且k=m!,m维空间映射m!种符号序列(j1,j2,...,jm);
若每种符号序列s(l)出现的概率分别为p1,p2,...,pk,则船舶流量数据s(t)时间序列的排列熵为:
步骤s34-2、执行步骤s34-1,计算第一个平均本征模函数分量i1(t)的排列熵,将第一个平均本征模函数分量i1(t)与排列熵设定值进行比较,判断第一个平均本征模函数分量i1(t)是否为异常信号:当第一个平均本征模函数分量i1(t)大于排列熵设定值,则第一个平均本征模函数i1(t)是异常信号;若第一个平均本征模函数分量i1(t)小于排列熵设定值,则第一个平均本征模函数分量i1(t)不是异常信号;
当判断结果是第一个平均本征模函数分量i1(t)为异常信号,则循环执行步骤s32和s33,直至判断出第p个平均本征模函数分量ip(t)不是异常信号,p=1,2,...,ne;ip(t)为:
s34-3、将已分解的前p-1个平均本征模函数分量从待分解的船舶流量数据s(t)中分离出来,得到
s34-4、对剩余信号r(t)进行经验模态分解,得到船舶流量数据的最终分解:
9.如权利要求8所述的船舶流量预测方法,其特征在于,
所述步骤s4中,进一步包含:
步骤s41、将分解后的本征模函数
步骤s42、长短期记忆神经网络的输入门it、忘记门ft、输出门ot及记忆单元的输入状态表达式分别如下所示:
式中,xt是t时刻长短期记忆神经网络的输入,包含步骤s34-4中的本征模函数
长短期记忆神经网络的记忆线的t时刻输出ct的表达式为:
式中,ct-1表示长短期记忆神经网络的记忆线的t-1时刻输出;
长短期记忆神经网络的隐藏层的输出ht如下:
ht=ot×tanh(ct-1)
式中,tanh为双曲线正切函数。
步骤s43、长短期记忆神经网络的输出为:y(t)=w2×ht b;
式中,w2为长短期记忆神经网络的输出层和隐藏层之间的权值矩阵;b为长短期记忆神经网络的输出层的偏向;
步骤s44、通过长短期记忆神经网络输出的各预测分量值进行叠加,得到最终预测的结果:
y(t)=y1 y2 y3 ··· ym yr;
式中,y1、y2、y3……ym分别是长短期记忆神经网络预测本征模函数的各预测值,yr是残留分量预测值。
技术总结