一种基于MF-BiLSTM的城市路网短时交通流预测方法
一种基于nmf-bilstm的城市路网短时交通流预测方法
技术领域
1.本发明属于城市路网交通流数据预测的技术领域,涉及城市路网交通数据的处理和数学建模的方法,尤其涉及一种基于nmf-bilstm的城市路网短时交通流预测方法,。
背景技术:
2.城市路网拥堵严重影响着城市的运行和可持续发展。交通拥堵的本质问题是交通供给能力与交通运行需求的不平衡,从而造成部分区域交通流量过于集中、交通资源浪费的现象。城市路网交通流的预测是进行交通管理和控制的前提,是实现交通流系统诱导、制定交通管控策略的关键。城市路网交通流的预测是实现智能交通和智慧城市的重要组成部分,可预测未来整个路网的交通状态,对缓解交通拥堵、有效利用交通资源和合理优化交通基础设施配置具有重要作用。
3.在已有的交通流预测方法中,基于数理统计的预测方法构建便捷,但是非线性捕捉能力不强,适应性能力较差,预测精度不高;基于机器学习的预测模型虽然具有较好的非线性捕捉能力,但不适用于大数据;而深度学习预测模型虽然具有较好的数据特征捕捉能力,但存在一定的模型过拟合问题且模型构建较为复杂。此外,庞大的城市路网包含海量的交通状态数据,大部分交通流预测研究停留在道路的层面而没有考虑路网的整体运行状态。
4.申请号为201911219004.8的发明专利公开了一种城市路网短期交通运行状态估计与预测方法,包括:(1)获取异构数据并进行预处理,以城市两信号交叉口之间路段为研究单元,利用gasm算法对研究单元的速度场重构;(2)构建城市路网空间权重矩阵,计算各路段间的时空相关性并采用topsis识别并量化脆弱路段;(3)依据重构后的研究单元速度场取速度的平均值及选取合理脆弱路段构建城市路网的时空特征矩阵;(4)根据bi-convlstm对全路网的交通状态进行估计与预测。本发明通过融合异构数据重构研究单元速度场,解决单一数据源导致的预测局限性,同时采用bi-convlstm考虑研究单元上游和下游的交通速度影响,充分挖掘交通流的时空特性,进一步提高了预测的准确率等优点。但是,该方法难以对海量的城市路网交通数据进行快速、有效的处理和分析。
技术实现要素:
5.针对已有交通流预测方法预测精度不高和运行效率低的技术问题,本发明提出一种基于nmf-bilstm的城市路网短时交通流预测方法,通过nmf分解的方式对海量数据进行分解,仅通过对分解后的数据进行bilstm建模实现路网交通流的预测,大大降低了时间复杂度和计算成本,且具有预测精度高、实时性良好的特点。
6.为了达到上述目的,本发明的技术方案是这样实现的:一种基于nmf-bilstm的城市路网短时交通流预测方法,其步骤如下:
7.步骤1):提取城市路网交通流的历史状态数据,基于nmf分解获取历史状态数据的基矩阵和系数矩阵;
8.步骤2):构建bilstm系数矩阵预测模型,将历史状态数据的系数矩阵作为bilstm系数矩阵预测模型的输入,定义bilstm系数矩阵预测模型的损失函数,实现bilstm系数矩阵预测模的训练获得最优的参数,作为训练后bilstm模型;
9.步骤3):提取实时的城市路网交通流序列数据按步骤1)中的历史状态数据的分解结构进行nmf分解,获取实时的路网交通流序列数据的基矩阵和系数矩阵;
10.步骤4):将实时的路网交通流序列数据的系数矩阵作为步骤2)中训练后bilstm模型的输入,并通过历史状态数据的基矩阵完成系数矩阵的预测,即为预测的路网交通流数据。
11.优选地,所述步骤1)中的nmf分解的实现方法为:
12.am×n=wm×
rhr
×n(1)
13.其中,am×n表示路网中交通流历史状态数据,m表示路网中的路段数,n表示前n个时段,且1≤n≤t,t表示总时段数;wm×r表示路网中交通流历史状态数据am×n经nmf分解后的基矩阵,r表示基矩阵wm×r中基向量的个数,且r≤min(m,n);hr×n表示系数矩阵;wm×r和hr×n均为非负矩阵。
14.优选地,所述步骤2)中bilstm系数矩阵预测模型表示为:
15.i
t
=σ(wix
t
+uis
t-1
)(2)
16.f
t
=σ(wfx
t
+ufs
t-1
)(3)
17.o
t
=σ(wox
t
+uos
t-1
)(4)
[0018][0019][0020][0021][0022]
其中,x
t
表示经nmf分解后t时刻的输入路网的系数矩阵hr×n,
⊙
表示hadamard乘积;σ和tanh分别表示sigmoid和tanh激励函数;i
t
、f
t
和o
t
分别表示bilstm的输入门、遗忘门和输出门在t时刻的输出,wi和ui表示bilstm输入门的系数矩阵;wo和uo表示bilstm输出门的系数矩阵;wf和uf表示遗忘门的系数矩阵;和分别表示在t时刻正向和反向的时间序列隐含层的状态;wc和uc表示和的系数矩阵;表示新的隐含层的状态,s
t-1
、s
t
、s
t+1
分别表示模型在t-1、t、t+1时刻最终的输出。
[0023]
优选地,所述bilstm系数矩阵预测模型的训练方法为:
[0024]
将nmf分解后历史状态数据的系数矩阵hr×n作为bilstm系数矩阵预测模型的输入:
[0025]
h'r×
(n+1)
,...,h'r×
(n+p)
=f
bilstm
(hr×
(n-(q-1))
,...,hr×n)(9)
[0026][0027]
其中,h'r×
(n+1)
,...,h'r×
(n+p)
表示预测n时段后的p个时段的预测系数矩阵;hr×
(n-(q-1))
,...,hr×n表示历史n时段前的q个时段的真实系数矩阵;f
bilstm
表示bilstm系数矩阵预测模型的处理函数,即公式(2)~(8)所示;rmse表示预测系数矩阵和真实系数矩阵的
均方根误差,作为bilstm系数矩阵预测模型的损失函数。
[0028]
优选地,所述步骤3)中nmf分解的方法为:
[0029][0030]
其中,bm×v表示实时的城市路网交通流序列数据,m表示路网中路段的个数,v表示前v个时段;表示nmf分解的基矩阵,表示nmf分解的系数矩阵。
[0031]
优选地,所述步骤4)中实时的路网交通流序列数据的系数矩阵输入训练后bilstm模型的方法为:
[0032][0033]
其中,f
bilstm
表示bilstm系数矩阵预测模型的处理函数,表示v时段前q个时段的实时系数矩阵,表示预测v时段后的p个时段的系数矩阵。
[0034]
优选地,所述步骤4)中系数矩阵的预测的方法为:结合nmf分解后历史状态数据的基矩阵,实现路网实时数据的交通流预测为:
[0035][0036]
其中,b'm×
(v+1)
,...,b'm×
(v+p)
表示预测的v时段后p个时段的路网交通流数据,实现了实时数据的短时预测。
[0037]
本发明的有益效果:本发明首先通过nmf分解的方法对已有的城市路网历史数据进行分解,获取非负的基矩阵和系数矩阵,基矩阵很好体现路网交通状态的整体特性;通过历史路网数据的系数矩阵训练bilstm模型,大大降低了原始路网数据的维度;用训练好的bilstm模型对经nmf分解的实时路网数据的系数矩阵进行预测,结合历史数据的基矩阵和预测的实时系数矩阵,最终实现城市路网数据的短时预测。本发明结合历史数据的基矩阵,实现了路网实时数据的交通流预测,降低数据处理量的同时提高了预测精度。
附图说明
[0038]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0039]
图1为本发明的流程图。
具体实施方式
[0040]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0041]
如图1所示,一种基于nmf-bilstm的城市路网短时交通流预测方法,包括如下步
骤:
[0042]
步骤1):提取城市路网交通流历史状态数据,基于nmf分解获取路网交通流数据的基矩阵和系数矩阵。
[0043]
通过敷设在路边的线圈获取每条路段的历史交通流状态数据,城市路网中的多条路段的交通状态数据共同构成了城市路网交通流历史状态数据,该主要包括速度数据和流量数据。
[0044]
nmf分解的一般表达式如下:
[0045]am
×n=wm×
rhr
×n(1)
[0046]
其中,am×n表示路网中交通流历史状态数据,m表示路网中的路段数,n表示前n个时段,且1≤n≤t,t表示总时段数;wm×r表示路网中交通流历史状态数据am×n经nmf分解后的基矩阵,r表示基矩阵wm×r中基向量的个数,且r≤min(m,n);hr×n表示系数矩阵;wm×r和hr×n均为非负矩阵。
[0047]
步骤2):构建bilstm系数矩阵预测模型,将路网交通流历史状态数据分解的系数矩阵hr×n作为bilstm系数矩阵预测模型的输入,定义bilstm系数矩阵预测模型的损失函数,实现系数矩阵的训练,得到训练后bilstm模型。
[0048]
bilstm系数矩阵预测模型的表达式一般如下表示:
[0049]it
=σ(wix
t
+uis
t-1
)(2)
[0050]ft
=σ(wfx
t
+ufs
t-1
)(3)
[0051]ot
=σ(wox
t
+uos
t-1
)(4)
[0052][0053][0054][0055][0056]
其中,x
t
表示经nfm分解后t时刻的输入路网系数矩阵hr×n,
⊙
表示hadamard乘积;σ和tanh分别表示sigmoid和tanh激励函数;i
t
、f
t
和o
t
分别表示bilstm的输入门、遗忘门和输出门在t时刻的输出,wi和ui表示bilstm输入门的系数矩阵;wo和uo表示bilstm输出门的系数矩阵;wf和uf表示遗忘门的系数矩阵;和分别表示在t时刻正向和反向的时间序列隐含层的状态;wc和uc表示和的系数矩阵;表示新的隐含层的状态,s
t-1
、s
t
、s
t+1
分别表示模型在t-1、t、t+1时刻最终的输出。激励函数和hadamard乘积也是已知的,其他参数是训练获得。
[0057]
将路网交通流历史状态数据分解的系数矩阵hr×n作为bilstm系数矩阵预测模型的输入,实现系数矩阵hr×n的训练,其一般表达式如下所述:
[0058]
h'r×
(n+1)
,...,h'r×
(n+p)
=f
bilstm
(hr×
(n-(q-1))
,...,hr×n)(9)
[0059][0060]
其中,h'r×
(n+1)
,...,h'r×
(n+p)
表示预测n时段后的p个时段的预测系数矩阵;hr
×
(n-(q-1))
,...,hr×n表示历史n时段前的q个时段的真实系数矩阵;f
bilstm
表示bilstm系数矩阵预测模型的处理函数,其一般表达式如公式(2)~(8)所示。以历史的数据进行训练,输入输出都是已知的,所以可以训练得到参数,将训练好的参数再应用到后续实时数据当中。rmse表示预测系数矩阵和真实系数矩阵的均方根误差,作为bilstm系数矩阵预测模型的损失函数。公式(10)是计算训练过程中真实的和预测的差距,通过不断训练供水(9)的bilstm模型使得(10)rmse越来越小。
[0061]
步骤3):提取实时的城市路网交通流序列数据按步骤1)中的历史状态数据分解结构进行nmf分解,获取实时的路网交通流序列数据的基矩阵和系数矩阵,其一般步骤如下所示:
[0062][0063]
其中,bm×v表示实时的城市路网交通流序列数据,m表示路网中路段的个数,v表示前v个时段;表示nmf分解的基矩阵,表示nmf分解的系数矩阵。
[0064]
步骤4):将实时的路网交通流序列数据的nmf分解的系数矩阵作为步骤2)中训练后bilstm模型的输入,并通过历史交通流状态数据nmf分解的基矩阵完成系数矩阵的预测,即为预测的路网交通流数据。
[0065]
一般步骤如下所示:
[0066][0067]
其中,f
bilstm
表示bilstm系数矩阵预测模型的处理函数,表示v时段前q个时段的实时系数矩阵,表示预测v时段后的p个时段的系数矩阵。
[0068]
结合历史数据nmf分解的基矩阵,实现路网实时数据的交通流预测,其基本步骤如下:
[0069][0070]
其中,b'm×
(v+1)
,...,b'm×
(v+p)
表示预测的v时段后p个时段的路网交通流数据,实现了实时数据的短时预测。
[0071]
具体实例:一种基于nmf-bilstm的城市路网短时交通流预测方法,包括如下步骤:
[0072]
1)提取城市路网交通流历史状态数据,基于nmf分解获取路网交通流数据的基矩阵和系数矩阵
[0073]
本次试验以北京二环内6条路段作为研究路网,在2011年6月1日~14日(共14天)相同测试点实测的路网速度数据(采样间隔为2分钟)作为样本序列,路段信息表1所示。
[0074]
表1路段信息
[0075][0076]
从道理交通特征参考序列中提取6条路段的道路交通历史数据,每条路段每天的采集数据为720,并将其变换为m
×
n的矩阵,即m为6,n为720,记为:amⅹn,则
[0077]am
×n=wm×
rhr
×n(1)
[0078]
其中,am×n表示路网中的历史交通流状态数据,m表示路网中的路段数,n(1≤n≤t)表示前n个时段,t表示总时段数;wm×r表示路网历史交通状态数据am×n经nmf分解后的基矩阵,其中r表示wm×r中基向量的个数,且r≤min(m,n);hr×n表示系数矩阵;wm×r和hr×n的元素均不小于0。r是在训练的过程中进行选择的,r得到后,基矩阵和系数矩阵的结构也可以得到。
[0079]
2)构建bilstm系数矩阵预测模型,将历史路网交通流数据分解的系数矩阵hr×n作为bilstm系数矩阵预测模型的输入,定义预测模型的损失函数,实现系数矩阵的训练,bilstm的表达式一般如下表示:
[0080]it
=σ(wix
t
+uis
t-1
)(2)
[0081]ft
=σ(wfx
t
+ufs
t-1
)(3)
[0082]ot
=σ(wox
t
+uos
t-1
)(4)
[0083][0084][0085][0086][0087]
其中,
⊙
表示hadamard乘积,i
t
,f
t
和o
t
分别表示bilstm的输入门、遗忘门和输出门在t时刻的输出,wi,wf和wo分别表示对应输入门、遗忘门和输出门的系数矩阵;和分别表示在t时刻正向和反向时间序列隐含层的状态,表示新的隐含层状态,s
t
表示最终bilstm的输出。
[0088]
将历史路网交通流数据分解的系数矩阵hr×n作为bilstm模型的输入,实现系数矩阵的训练,其一般表达式如下所述:
[0089]
h'r×
(n+1)
,...,h'r×
(n+p)
=f
bilstm
(hr×
(n-(q-1))
,...,hr×n)(9)
[0090][0091]
其中,h'r×
(n+1)
,...,h'r×
(n+p)
表示预测n时段后的p个时段的系数矩阵;hr×
(n-(q-1))
,...,hr×n表示历史n时段前的q个时段的系数矩阵;f
bilstm
表示bilstm模型,其一般表达式如公式(2)~(8)。rmse表示预测系数矩阵和真实系数矩阵的均方根误差。
[0092]
3)提取实时的城市路网交通流序列数据按历史数据分解结构进行nmf分解,获取实时数据的基矩阵和系数矩阵,其一般步骤如下所示:
[0093][0094]
其中,bm×v表示实时的路网交通流序列数据,m表示路网中路段个数,v表示前v个时段;表示nmf分解的基矩阵,表示nmf分解的系数矩阵。
[0095]
4)将实时路网数据分解的系数矩阵作为bilstm模型的输入,完成系数矩阵的预测,其一般步骤如下所示:
[0096][0097]
其中,f
bilstm
表示bilstm模型,表示v时段前的q个时段的实时系数矩阵,表示预测v时段后的p个时段的系数矩阵。
[0098]
结合历史数据分解的基矩阵,实现路网实时数据的交通流预测,其基本步骤如下:
[0099][0100]
其中,b'm×
(v+1)
,...,b'm×
(v+p)
表示预测v时段后p个时段的路网交通流数据,实现了实时数据的短时预测。
[0101]
本发明的预测效果主要由m、n、r、p、q等参数决定,即对于不同的参数(m,n,r,p,q),单独分析每个参数对算法精度的影响并不能确保算法的最优,因此在进行分析时应该同时考虑所有参数对该路网交通流预测结果的影响。
[0102]
引入实时数据预测的平均绝对百分比误差(mape)作为路网交通流预测精度的衡量指标,其计算公式分别如下所示:
[0103][0104]
其中,b
t
为测量值,b'
t
为预测值。mape为预测数据的平均绝对百分比误差。
[0105]
即对于不同的参数(m,n,r,p,q),存在与之对应的平均绝对百分比误差mape,故存在如下等式:
[0106]
mape=θ(m,n,r,p,q)(15)
[0107]
即参数(m,n,r,p,q)与mape存在某种分布关系θ,寻mape最小时对应的参数(m,n,r,p,q),即为最优参数设定过程。故可以得到如下模型:
[0108]
minθ(m,n,r,p,q)
[0109]
[0110]
最终(m,n,r,p,q)的取值可以通过道路交通历史数据的训练确定。
[0111]
实验结果:将1~12日的数据作为历史数据,13、14日的数据作为实时数据。基于路网交通历史数据,获取最优参数(m,n,r,p,q);提取路网交通实时数据,基于nmf-bilstm的路网短时交通流预测方法,实现路网交通数据的实时预测。
[0112]
选取均方根误差(rmse)、平均绝对误差(mae)和平均绝对百分比误差(mape)作为路网交通流预测精度的指标。其计算公式分别如下:
[0113][0114][0115][0116]
其中,b
t
和b’t
分别表示t时段实时路网数据的真实值和预测值。
[0117]
2011年6月13、14日路网速度预测误差结果统计,如表2所示。
[0118]
表2预测误差结果统计
[0119]
日期rmsemaemape(%)6月13日11.467.889.956月14日9.478.459.74
[0120]
从表2中的结果可以看出,平均绝对误差mae的值控制在9以下,平均绝对百分比误差mape的值控制在10%以下,说明本发明的误差可以控制在10%以下,是一种行之有效的城市路网短时交通流预测方法。
[0121]
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。