交通预见未来 (5)基于深度学习的短时道路交通流预测
1、文章信息
《Short-Term Traffic Flow Prediction with Conv-LSTM》。
这篇文章是一篇会议论文,2017第九届无线通信与信号处理国际会议(WCSP),福州大学物理与信息工程学院的几位老师,被引10次。
2、主体内容
本文提出了一种基于深度学习的短时交通流预测方法。交通流数据包含三个主要特征:时间特征、空间特征和周期性特征。我们把CNN和LSTM结合起来生成一个ConvLSTM模块,用于提取交通流的时空特征,然后使用Bi-LSTM(双向LSTM,Keras中有相应模块)提取交通流的周期特征。
利用ConvLSTM模块对相邻区域的短时交通流数据进行处理,提取时空特征;利用双向LSTM对预测点历史交通数据进行处理,提取交通流数据的周期特征。提出了一种无需数据预处理和数据特征提取的端到端深度学习短时交通流预测体系结构。最后,集中时空特征和周期特征对交通流进行预测。
3、创新点
既使用了ConvLSTM,又使用了Bi-LSTM, 结构新颖。
4、大家比较关注的算法实现
我们将交通流数据映射到一维向量。我们将预测点的交通流数据放入向量中心,根据与预测点的距离,将其他点的交通流数据依距离放在该向量中心(预测点)两侧。
将不同时刻的一维空间信息向量组合成矩阵如下:
其中s表示预测点(一列代表一个预测点),t表示时间。
周期数据可以表示为以下矩阵:
其中d代表昨天的相同时刻,w代表上周的相同时刻。
上述数据矩阵即为本文提出的深度神经网络结构的输入数据。其中,损失函数为MSE,优化器为RMSprop。
4.1 ConvLSTM的结构
ConvLSTM的输入数据既为公式3.1。一行作为一个向量,代表着一个time step所有预测点之间的空间信息,我们使用一维Conv(Conv1D)对公式3.1中的每一行进行处理,自然也是利用一维卷积核滤波器(kernal size=1),通过滑动滤波器获取每个time step局部感知域的卷积信息(空间信息)。然后,将局部特征聚合成全局特征。
紧接着加池化层,不同之处在于池化滤波器不进行复杂的卷积运算。本文中使用一维平均池化层(AveragePooling1D)。通过池化将生成的特征序列C缩减到原维度的一半大小。这两种特征提取使得深度神经网络在处理交通流数据时具有更高的失真容忍度。
分别对时间序列向量(式3.1中的每一行)的各个元素进行卷积和池化处理后,输出结果变为时间序列向量Ct = (C1, C2, C3,…,Ct)。向量中的每个元素都是区域内各点间交通流的空间相关性。(该表达式中每个元素代表着一个行向量,行向量的维度比式3.1中行向量的维度要小,因为经过了池化)
上面得到的时间序列向量Ct即为LSTM的输入数据。
4.2 双向LSTM的结构(Bi-directional LSTM)
交通流也具有很强的周期性特征。本文将增加交通流的周期性特征作为补充信息来预测短期交通流。在提取交通流数据的周期性特征时,我们会同时处理前一天的同一时间和上一周的同一时间的交通流信息。在处理了历史信息后,得到了全时间序列数据(我想应该是将上一周的数据和前一天的数据放到预测当天数据的前面,组成全时间序列数据以获取周期性信息。)。
双向LSTM的结构由上下堆叠的两个单向LSTM组成。因此,Bi-LSTM输入包含预测时间前后的时间序列,在每个T时刻,输入序列被输入给两个方向相反LSTM,输出由两个LSTM决定。每个反向LSTM的误差传播与正向LSTM传播算法相同。Bi-LSTM结构如下图所示,其中xi为LSTM的输入,Of为正向LSTM的输出,Ob表示反向LSTM的输出。
简单来说,就是再Keras中将LSTM换成Bidirectional(LSTM)即可。一些细节信息例如使用了多少个timestep, 历史数据如何处理输入到Bi-LSTM中,池化前后的维度变化 等,文章交代的并不清楚,毕竟会议论文。
关注微信公众号《当交通遇上机器学习》,后台回复“数据”即可获取高达175G的四个月的滴滴GPS数据和滴滴订单数据的获取方式,以及从数据处理(Oracle数据库)、模型构建(机器学习)、编程实现(python)到可视化(ArcGIS)等一系列视频教程。
公众号以交通大数据为主线,专注于人工智能、机器学习、深度学习在道路交通和轨道交通领域内的科研前沿与应用,在交通大数据与机器学习的道路上越走越远!