一种基于道路聚类和双层双向LSTM的交通流量预测方法与流程

文档序号:11235110阅读:3322来源:国知局
一种基于道路聚类和双层双向LSTM的交通流量预测方法与流程
本发明涉及深度学习、交通流量预测、神经网络设计、神经网络模型的集群训练等技术,特别是一种基于道路聚类和双层lstm(longshort-termmemory,长短期记忆)深度神经网络模型的交通流量预测方法,对于提高交通流量预测精度及速度方面有着指导意义。
背景技术
:随着大数据时代的到来,大城市实时的交通网络数据逐渐增加,人工智能交通预测作为当前热门的无人驾驶技术中最关键的应用之一,可以在考虑时空关系后对交通情况作出合理预测,帮助车辆选择最合适的路线,特别是在城市拥堵情况下的路线选择更具有现实意义,提高交通流量预测精度和速度的意义也就不言而喻。为了提高预测准确度,出现了各种复杂的神经网络和预测算法,例如:基于svm(supportvectormachine,支持向量机)道路车流量预测模型,基于lstm(longshort-termmemory,长短期记忆)的交通流量预测方法,基于卷积神经网络的短期交通流量预测方法等,但这些模型忽视了数据本身隐藏的信息:在数据预处理阶段,没有充分挖掘和利用路网的拓扑结构建立空间信息,在设计神经网络方面,也忽视了某些重要信息的复用,比如需要预测某条路某时刻的交通流量,那么该条路在上一时刻的交通流量至关重要,可适当作为多个网络层的输入实现信息的复用,在训练神经网络模型时,大多数的设计都是将所有的数据统统输入到一个神经网络模型中让它去学习数据隐藏的规律和信息,这样的方式直接忽视了道路之间的差异性,默认道路之间数据的规律几乎是一致的,实际上在交通预测的大量数据中,某些道路的交通流量序列差异非常大,而有些序列差异却很小,导致训练出来的模型在预测精度上很难有较大的提高。本发明采用道路聚类的方式很好的解决了上述道路之间的交通流量序列差异大的问题,在设计神经网络时,也充分利用了数据隐含的路网拓扑结构信息,使得本发明的预测精度相对于现有技术的预测精度有较大的提高。为了加快神经网络模型在集群中训练和测试的速度,出现了许多加速的方式,例如通过小输入学习大输入的基于深度神经网络的模型加速方法,通过小网络学习大网络的基于深度神经网络的模型加速方法,shufflenet:anextremelyefficientconvolutionalneuralnetworkformobiledevices,self-normalizingneuralnetworks等,但这些方式都是以改变神经网络模型本身为前提来加速集群训练的速度,而忽视了深度学习框架本身的集群训练时间的限制,而且目前的神经网络集群训练方式大多使用深度学习框架自带的集群训练,但传统的深度学习框架自带的集群训练都需要神经网络模型在节点之间频繁地通信和同步,比如paddlepaddle,这使得集群训练的速度很难有较大的提高。技术实现要素:针对目前神经网络对交通流量预测的精度和速度较难提高的现状以及现有设计存在的一些不足,提出了一种基于道路聚类和双层双向lstm深度神经网络模型的交通流量预测方法,充分利用数据隐藏的信息并实现重要信息的复用,对道路进行相关性聚类,提高了交通流量预测的精度,同时避免了神经网络模型在集群训练时在节点之间的通信和同步,提高了集群训练的速度。本发明技术解决方案:本发明同时提高了深度神经网络在交通流量预测方面的预测速度和精度。在数据处理阶段,对缺失值进行填补来扩充训练数据、同时利用时间和空间信息让神经网络能学到更多数据提供的信息、根据部分历史流量序列对道路计算相关性并根据相关性对道路进行聚类,将道路分成若干类之后单独对每类分开进行训练,进而提高预测精度;在神经网络模型设计方面,利用双层双向lstm的结构,且在每层lstm之后加入两层全连接层,同时对流量数据相关的信息进行复用,提高模型的预测精度;在神经网络模型的训练和测试阶段,利用批处理方式将每类道路的训练任务作为一个作业提交到集群上进行训练和测试,提高了模型的训练和测试速度;最后将不同聚类的模型的预测结果进行融合,提高预测精度。本发明在交通流量预测过程中,提出了填补缺失值、数据信息的复用、双层双向lstm的网络结构、道路聚类以及模型融合等方法,提高了神经网络模型的预测精度,同时抛开了神经网络模型在集群上传统的训练和测试方法,提出了利用批量提交作业的方式进行神经网络模型的集群训练和测试,避免了模型训练和测试过程中频繁的通信和同步问题,提高了神经网络模型的训练和测试速度。本发明的一种基于道路聚类和双层双向lstm的交通流量预测方法,具体包括以下步骤:(1)原始训练数据格式化,训练数据中的交通流量用1到n之间的数字量化,1表示道路非常通畅,n表示道路非常拥堵,道路拥堵情况由1到n递增,0表示缺失值;数据格式可准备成如图1所示,左边表格为道路在相应时刻对应的流量信息,右边表格为路网的拓扑结构。(2)检查训练数据中交通流量是否存在缺失值0,若存在,转到步骤(3),若不存在,跳到步骤(4);(3)对缺失值采取周围平均化的方式填补数据,直至填补完所有缺失值;(4)根据道路的部分历史交通流量序列计算各条道路之间相关性,并根据相关性利用k-means算法进行道路聚类,将道路分为若干类,每类道路包括了若干条道路;(5)利用步骤(4)计算的各条路之间相关性,提取数据的时间和空间信息;(6)设计双层双向的lstm深度神经网络模型对每类道路分别进行训练,神经网络模型如图3所示,其中包括以下部分:对于步骤(5)提取的所有信息,即时间和空间信息通过数据层输入到模型中,数据层的每个输出都接一层嵌入层,嵌入层中除了有关交通流量之和的其余输出作为第一层lstm的输入,第一层lstm的输出结果与嵌入层有关交通流量之和的输出以及相应道路的交通流量合并到一起作为两层全连接层的输入,全连接层的全部输出作为第二层lstm的输入,第二层lstm的输出结果作为另外两层全连接层的输入,两层全连接层的输出再接一个全连接层,最后输出预测结果,其中两层lstm均为双向的lstm;(7)将每类道路需要训练的神经网络模型和数据看成一个作业,利用批处理脚本提交到集群上运行,实现神经网络模型的集群训练,从而得到训练好的神经网络模型;(8)利用步骤(7)训练得到的神经网络模型对需要预测的数据进行预测,预测时将每个预测任务看成一个作业,用批处理脚本提交到集群上进行预测,收集(在步骤4中对道路进行聚类,因此道路会被分为若干类,每类道路里面包括了若干条道路,每条道路指的是某类中的每条道路,而不是所有道路中的每条道路,具体的聚类类别数取值范围在后面的步骤(4-3)中给出了)每类道路的预测结果并合并到一起;(9)选择不同的聚类类别数(聚类的时候可以根据需要聚成不同的类别数,比如第一次可以聚2类,第二次可以聚3类,通俗来讲就是将道路划分成不同的类别数,比如第一次将道路划分成2类,第二次划分成3类),重复步骤(4)到(8)若干次;(10)将若干次的预测结果进行融合得到最终预测结果。(对于不同的聚类类别数,也就、是不同的划分类别数,会得到若干个结果,比如上面的第一次将道路划分成2类,得到一个预测结果,第二次将道路划分成3类,得到一个预测结果,将这两次得到的结果取平均值得到最终的预测结果,最终预测结果才是有意义的)。所述步骤(3)中的填补数据的具体流程为:对于序列{x,0,0,…,0,y},其中x与y之间共有i个连续的缺失值0,则填补方式为:p=random(0,1),即p随机选取0到1之间的某个数i为奇数时,i为偶数时,其中表示下取整,表示上取整,若填补完后序列变成{x,0,…,0,m,0,…,0,y},则对序列{x,0,…,0,m}和序列{m,0,…,0,y}同样以上述方式填补,以此类推直到填补完所有缺失值;p在本行的前5行定义了,p是随机选取的0到1之间的某个数,m是利用上述方式填补好的值。所述步骤(4)包括以下几个子步骤:(4-1)选取训练数据的20-25%,即具体为:对每条道路,选取相同时刻的一段连续的训练数据,即交通流量,该一段连续的训练数据段数据占这条道路总训练数据的20-25%;(4-2)根据选取出来的历史交通流量计算每条道路之间的相关性,得到相关性矩阵;(4-3)根据道路之间的相关性对道路进行k-means聚类,聚类的类数为道路总数的2%-10%,由于每类道路的训练需要在集群上利用批处理脚本进行提交,类数可以设置为集群节点数的整数倍。所述步骤(5)中的提取数据的时间信息包括:星期几weekday;是否为周六或周日is_weekend、;小时hour;分钟minute;空间信息包括:道路的编号road_id;道路在某时刻所对应的交通流量speed;在直接通往某条道路的道路中,即所有入路中,与该条道路最相关的道路在某时刻所对应的交通流量in_speed;在某条道路直接通往的道路中,即所有出路中,与该条道路最相关的道路在某时刻所对应的交通流量out_speed;直接通往某条道路的所有道路,即所有入路,在某时刻所对应的交通流量之和in_spd_sum;某条道路直接通往的所有道路,即所有出路,在某时刻所对应的交通流量之和out_spd_sum;直接通往某条道路的道路总条数,即所有入路总条数in_road_sum;某条道路直接通往的道路总条数,即所有出路总条数out_road_sum;若没有道路直接通往某条道路,即没有入路,或者某条道路没有直接通往的道路,即没有出路,则相应的交通流量或交通流量之和设置为0,比如:若编号为02的道路没有直接通往的道路即出路,则该条道路相应的out_speed、out_spd_sum都设置为0。本发明与现有技术相比的优点在于:(1)本发明通过对训练数据存在缺失值时,对丢失值采取周围平均化的方式填补缺失数据,提高预测精度;(2)本发明通过一种根据历史流量数据对道路进行相关性聚类,将道路分成若干组,并在数据预处理阶段同时利用时间信息和空间信息,进一步提高了预测精度;(3)本发明设计了一种双层双向lstm深度神经网络模型,提高模型的预测精度;(4)本发明提出了一种对网络模型进行批量训练和测试的方法,加快神经网络模型的训练和测试速度;(5)本发明提出了一种多模型融合方法,提高预测精度;(6)本发明的神经网络集群训练方式没有使用深度学习框架自带的集群训练,而是利用批处理的方式将每个训练任务当成作业提交到集群中进行训练,例如:利用htcondor作业提交脚本。本发明避免了神经网络模型在集群节点之间频繁的通信和同步,大大提高了集群训练速度。附图说明图1是训练数据格式样例;图2是本发明神经网络进行交通流量预测时在集群上训练和测试的流程图;图3是本发明双层双向lstm深度神经网络模型的结构图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。本发明的基本思路在于,对缺失数据进行填补,根据道路的部分历史交通流量的相关性进行聚类,充分提取数据的信息输入到神经网络中,并利用批处理脚本(例如htcondor作业提交脚本)实现神经网络模型集群的训练和测试,重复聚类、模型训练和测试等步骤两到三次以得到两到三个不同的预测结果,将预测结果进行融合得到最终预测结果。本发明的应用实例如图2所示。对于训练数据若有缺失值采取周围平均化的方式进行填补,根据每条道路的部分历史交通流量序列计算道路之间的相关性,并根据相关性进行道路聚类将道路分成若干类;同时利用道路的相关性,结合训练数据的时空信息提取出合适的信息作为神经网络的输入;利用设计好的双层双向lstm深度神经网络模型对每类道路分别进行训练,其中神经网络模型的结构如图3所示,将数据预处理时提取的信息经过数据层之后输入到网络中,数据层输出的时间信息和部分空间信息合并在一起后经过第一层双向lstm层,再与数据层输出的其余空间信息合并在一起作为全连接层的输入,经过两层全连接层之后再经过第二层双向lstm,最后经过三层全连接层并输出预测结果;将每类道路的训练任务作为作业,利用批处理脚本提交到集群上执行;利批处理脚本提交每类道路的预测任务到集群中,调用训练好的模型进行预测;将每类道路的预测结果合并在一起;重复执行聚类、模型训练、预测等步骤两到三次,生成两到三个预测结果;对预测结果求平均值作为最终预测结果。如图2所示,本发明神经网络进行交通流量预测时在集群上训练和测试的方法包括以下步骤:(1)原始训练数据格式化。训练数据中的交通流量用1到n之间的数字量化,1表示道路非常通畅,n表示道路非常拥堵,道路拥堵情况由1到n递增,0表示缺失值;训练数据给出了日期和时刻(年-月-日-小时-分钟)、道路编号、某时刻某条路对应的交通流量以及路网的拓扑结构(有向图)。数据格式可准备成如图1所示,在左边的表格中,第一行表示时刻,201603010800表示2016年3月1号8点整;第一列表示道路编号,表格中间的主体部分表示某条道路在某时刻对应的交通流量,比如表格中第二行的2表示道路1在2016年9月2号23点55分时刻的交通流量为2(较通畅),表格中的0表示编号为3998的道路在2016年9月2号23点55分时刻的交通流量缺失。右边的表格表示路网拓扑结构,第一列是路网中有向边的起始道路编号,第二列表示目的道路编号,比如第一行中的1、3998表示从道路1有一个路口可以直接到达道路3998。(2)检查训练数据中交通流量是否存在缺失值0,若存在,转到步骤(3),若不存在,跳到步骤(4)。(3)对缺失值采取周围平均化的方式填补数据。具体流程为:对于序列{x,0,0,…,0,y},其中x与y之间共有i个连续的缺失值0,则填补方式为:p=random(0,1),即p随机选取0到1之间的某个数i为奇数时,i为偶数时,其中表示下取整,表示上取整。若填补完后序列变成{x,0,…,0,m,0,…,0,y},则对序列{x,0,…,0,m}和序列{m,0,…,0,y}同样以上述方式填补。以此类推直到填补完所有缺失值。(4)根据道路的部分历史交通流量序列计算各条路之间相关性,并根据相关性利用k-means算法进行道路聚类。(4-1)选取训练数据的20-25%,以图1所示训练数据为例,选取左侧表格中的连续n列数据,其中n占总列数的20-25%,即对每条道路,选取相同时刻的一段连续的训练数据(交通流量),该段数据占这条道路总训练数据的20-25%。(4-2)根据选取出来的历史交通流量计算每条道路之间的相关性,得到相关性矩阵。(4-3)根据道路之间的相关性对道路进行k-means聚类,聚类的类数一般在道路总数的2%-10%之间,由于每类道路的训练需要在集群上利用批处理脚本进行提交,因此类数可设置为集群节点数的整数倍,具体可根据不同的实验和数据选择不同的类数。(5)利用步骤(4)计算的相关性,提取数据的时间和空间信息如下(训练数据格式以图1所示的为例):(6)设计双层双向的lstm深度神经网络模型对每类道路分别进行训练。神经网络模型如图3所示,其中包括以下部分:对于步骤(5)提取的所有信息通过数据层输入到模型中,数据层的每个输出都接一层嵌入层(embedding层),嵌入层中除了有关交通流量之和的其余输出作为第一层lstm的输入,第一层lstm的输出结果与嵌入层有关交通流量之和的输出以及该条路的交通流量合并到一起作为两层全连接层的输入,全连接层的全部输出作为第二层lstm的输入,第二层lstm的输出结果作为另外两层全连接层的输入,两层全连接层的输出再接一个全连接层,最后输出预测结果,其中两层lstm均为双向的lstm。更详细的设计可参考图2。(7)将每类道路需要训练的神经网络模型和数据看成一个作业,利用批处理脚本(例如htcondor作业提交脚本)提交到集群上运行,实现神经网络模型的集群训练。(8)利用步骤(7)训练得到的神经网络模型对需要预测的数据进行预测,预测时将每个预测任务看成一个作业,用批处理脚本提交到集群上进行预测,收集每类道路的预测结果并合并到一起。(9)重复步骤(4)到(7)若干次,其中步骤(4)聚类时选择的类别数不同于之前聚类的类别数。(10)将若干次的预测结果进行融合得到最终预测结果。具体流程为:预测结果的数据格式与训练数据一致,以图1所示训练数据格式为例,若每次预测结果的数据如下表所示:2017030108002017030108012017030108022017030108031022x1x2x3x41023y1y2y3y4则取每次预测结果中相同道路在相同时刻的预测值求平均值作为最终预测结果。例如取每次预测结果中的x1,对取出来的所有x1求平均值做为道路1022在2017年3月1号8点时刻的最终预测值。以上所述仅为本发明的实施例,并非因此限制本发明的保护范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的
技术领域
,均同理包括在本发明的保护范围内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1