CN106128100B - 一种基于Spark平台的短时交通流量预测方法 - Google Patents

一种基于Spark平台的短时交通流量预测方法 Download PDF

Info

Publication number
CN106128100B
CN106128100B CN201610515512.0A CN201610515512A CN106128100B CN 106128100 B CN106128100 B CN 106128100B CN 201610515512 A CN201610515512 A CN 201610515512A CN 106128100 B CN106128100 B CN 106128100B
Authority
CN
China
Prior art keywords
traffic flow
data
time
spark
section
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610515512.0A
Other languages
English (en)
Other versions
CN106128100A (zh
Inventor
胡斌杰
王腾辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
South China University of Technology SCUT
Original Assignee
South China University of Technology SCUT
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by South China University of Technology SCUT filed Critical South China University of Technology SCUT
Priority to CN201610515512.0A priority Critical patent/CN106128100B/zh
Publication of CN106128100A publication Critical patent/CN106128100A/zh
Application granted granted Critical
Publication of CN106128100B publication Critical patent/CN106128100B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G08SIGNALLING
    • G08GTRAFFIC CONTROL SYSTEMS
    • G08G1/00Traffic control systems for road vehicles
    • G08G1/01Detecting movement of traffic to be counted or controlled
    • G08G1/0104Measuring and analyzing of parameters relative to traffic conditions
    • G08G1/0125Traffic data processing
    • G08G1/0129Traffic data processing for creating historical data or processing based on historical data

Landscapes

  • Chemical & Material Sciences (AREA)
  • Analytical Chemistry (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Traffic Control Systems (AREA)

Abstract

本发明在一种基于Spark平台的短时交通流量预测方法,将并行化的KNN算法应用于短时交通流预测领域。相比基于单机计算的传统KNN算法而言,该方法解决了在单台物理机上进行数据计算时,系统存储容量小、计算速度慢的问题,也解决了KNN算法近邻查找过程中近邻匹配效率过低的问题。该方法在保证预测精度的前提下,提高了算法的计算效率,有效的改善了KNN预测算法的实用性,并且系统具有良好的扩展性和加速比。本发明对于其他需要对大规模数据进行处理的应用也具有参考意。

Description

一种基于Spark平台的短时交通流量预测方法
技术领域
本发明属于云计算和数据挖掘领域,具体涉及基于Spark平台的短时交通流量预测方法。
背景技术
短时交通流量预测是指对特定路段未来几分钟的车流量做出预测。短时交通流量预测是解决城市交通拥堵的重要途径,而随着城市汽车数量的增加,交通流量的数据量急剧增加。单机进行基于位置数据的短时交通流量预测面临着数据量大存储困难、计算时间长等问题。而云计算平台在海量数据存储和大规模并行实时处理方面具有强大的技术优势,可以在保证预测精度的前提下,有效的提高短时交通流量预测的计算效率。
在众多分类算法中,KNN算法是一种最简单常用的算法,KNN算法预测精度很高,但由于在相似度计算过程中,每一个待分类的样本都要计算它到所有已知样本的距离,以确定它的K个最近邻点。随着数据量的增大,会造成相似度计算量过大、从而导致计算效率较低的问题,这样严重限制了KNN算法在数据挖掘工作中的应用。而在Spark平台上将KNN算法进行分布式实现,有效的解决了KNN算法近邻查找过程中搜索历史数据库效率过低的问题,提高了算法的计算效率,有效的改善了KNN预测算法的实用性。
Spark是一个通用的大规模数据快速处理引擎,它是由UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架。Spark是基于内存的迭代计算框架,它使用了RDD的理念,可以在内存中存储数据,只在需要时才持久化到磁盘中。这样做可以在很大程度上减少了数据处理过程中磁盘的读写,大幅度的降低了任务执行所需时间,因此Spark能更好的适用于数据挖掘和机器学习等需要反复迭代的算法。Spark还支持SQL查询、流式查询及图计算等。在分布式数据集计算时,Spark可以通过checkpoint机制来实现容错。
目前,国内的阿里巴巴、优酷土豆、百度、腾讯、网易、搜狐等互联网公司已经将Spark技术应用到了自己的商业生产系统中。百度拥有国内最大的Spark集群,已应用于凤巢、大搜索、直达号、百度大数据等业务中;阿里巴巴将Spark运用于淘宝的推荐相关算法上,同时还利用Spark图计算解决了许多实际生产问题。对于短时交通流量预测,随着交通数据量的成倍增加,传统的单机数据挖掘模式已经很难满足实际应用要求。将Spark大数据平台与短时交通流量预测相结合,可以使这一应用更加满足实际需要,同时对其他应用的研究也非常有借鉴价值。
发明内容
本发明的目的在于提供一种基于Spark大数据平台的短时交通流量预测方法,在Spark集群上,对KNN算法进行并行化实现,通过并行化的对交通流量数据进行处理,加速数据处理过程,预测待测路段下一时刻的交通流量。
本发明的目的通过如下技术方案实现。
一种基于Spark平台的短时交通流量预测方法,包括以下步骤:
数据预处理:处理源交通流量数据,剔除与交通流量预测无关的数据字段。
基于时空关系的流量预测:利用与待测路段在时间和空间相关联路段的交通流量共同生成KNN算法的交通流特征向量。
实时流处理:利用Spark流计算解决了交通流量预测的实时性问题。
并行化KNN算法实现:对传统KNN算法进行并行化实现,使得KNN算法能够在分布式集群Spark上运行。
数据分析:利用并行化KNN算法,对基于时空关系生成的交通流特征向量进行处理,得到待测路段下一时刻交通流量的预测结果。
进一步地,数据预处理是对由道路传感器收集到的源交通流数据进行处理,得到与预测路段相关的字段数据以及与待测路段在时间和空间相关联路段的交通流数据,包括如下步骤:
将传感器收集到的交通流量数据存储到Hadoop的HDFS文件系统中。
利用textFile()函数将存储到HDFS文件系统中的交通流量数据读入到Spark中,并生成一个Spark中特有的数据类型MappedRDD。
利用map()函数,读取每一行交通流量数据,并利用Spark中的split()函数对每一行数据按照分隔符进行分割,最后将需要的交通流字段数据进行提取。
进一步地,基于时空关系的特征向量是对交通流数据进行时空特性分析,确定最佳的时间和空间维度,以此形成最佳的交通流输入向量,包括如下步骤:
确定最佳时间维度为2,即选取相关路段当前时刻和前一时刻的交通流量,时间间隔为5分钟
确定最佳空间维度为4,即选取待测路段、两个上游路段和一个下游路段的交通流量数据。
进一步地,实时流处理是利用Spark流计算时刻检测输入数据是否有更新,当数据有更新时,系统自动进行下一次的交通流量预测工作,以满足短时交通流量预测对于实时性的要求,包括如下步骤:
设置Spark Streaming的窗口时间为5分钟。
利用StreamingContext创建一个Spark Streaming Context对象。
利用socketTextStream()获得一个Dstream对象负责连接监听端口。
进一步地,并行化KNN算法实现是指对传统的基于单机运行的KNN算法重新进行实现,使并行化的KNN算法能够在由多台物理机组成的集群上运行,包括如下步骤:
利用mapPartitions()函数将已经处理好的交通流量数据分成几个分区,其中每个分区的数据在Spark集群中会在一个物理机上进行计算。
定义一个函数,这个函数的功能是获得待测路段及与待测路段在时间和空间相关联路段的交通流量所组成的特征向量。
将定义的这个函数作为mapPartitions()函数的参数。
数据分析是指在Spark集群上运行实现的并行化KNN算法,预测待测路段下一时刻的交通流量,包括如下步骤:
从历史数据库中利用欧式距离匹配到与当前待测路段交通流量最接近的K个交通流量数据。
取当前该K个交通流量向量的下一时刻交通流量的加权平均值作为预测路段下一时刻的交通流量。
与现有技术相比,本发明具有以下优点:
本发明通过数据预处理对原始数据的高维特征集进行了删减,除去了特征集中的冗余信息,减少了数据量。
本发明通过在Spark平台上对KNN算法进行并行化的实现,使KNN算法能够并行的进行特征向量相似度的计算工作,解决了KNN算法在相似度计算过程中计算效率较低的问题。
利用Spark强大的流处理功能,时刻检测输入数据的变化情况,当数据发生更新时系统能够自动的进行下一次的预测工作。因此可以满足短时交通流量预测对于实时性的要求。
将Spark平台与短时交通流量预测这一应用相结合,可以大幅度缩减进行交通流量的预测时间,使这一应用更加满足实际环境的要求。
附图说明
图1为本发明一种基于Spark平台的短时交通流量预测方法的流程图。
图2为数据预处理流程图。
图3为基于时空特性的交通流量预测示意图。
图4是基于时空特性与基于时间特性交通流量预测结果对比图。
图5为基于时空特性与基于时间特性MRE指标对比图。
图6为并行化KNN算法实现流程图。
图7为传统KNN算法与在Spark平台上并行化的KNN算法的预测时间对比图。
图8为在Spark平台上并行化的KNN算法扩展性示意图。
图9为在Spark平台上并行化的KNN算法加速比示意图。
具体实施方式
以下结合附图对本发明的具体实施作进一步说明,但本发明的实施和保护不限于此,需指出的是,以下若有未特别详细说明之处均是本领域技术人员可根据现有技术理解或编程实现的。
本发明是一种基于Spark平台的短时交通流量预测方法,如图1所示,包括如下步骤:
本实施例选择某高速公路2012年7月至2015年7月的交通流数据作为实验数据,其中选择2012年7月至2015年6月的交通流数据作为历史数据库,2015年7月的数据作为测试数据库。
分别对历史数据和测试数据进行数据预处理,如图2所示,包括如下步骤
利用textFile()读取存入到HDFS文件系统的原始数据,利用map()函数读取文件系统中的每一行数据,并利用split()函数对该行数据按照分割符进行分割,最后再次使用map()函数将需要的字段进行提取,形成一个MappedRDD类型的数据集。
交通流量的时空关系是指,城市某路段车流量与该路段上下游路段的车流量有关。城市某路段车流量还与该路段上一时刻的车流量有关。
我们采用平均相对误差作为并行化KNN算法预测精度的评价指标:
平均相对误差公式为:
当预测间隔为5分钟时,时间维度为2,空间维度为4时,预测结果的MRE值最小。
所以本发明选择测试路段上游两个邻近路段和下游两个邻近路段同一时刻与上一时刻的交通流量组成一个交通流特征向量。
由图3基于时空特性的交通流量预测示意图可得到:
输入分布式KNN算法的交通流特征向量为:
X=(x(p-2,t0),x(p-1,t0),x(p,t0),x(p+1,t0),x(p-2,t0-Δt),
x(p-1,t0-Δt),x(p,t0-Δt),x(p+1,t0-Δt))
预测的交通流量为Y=x(p,t0+Δt)
由图4和图5可以看出基于时空关系交通流特征向量的预测结果明显好于基于时间关系交通流特征向量的预测结果。
利用Spark Streaming时刻检测输入数据是否有更新,当在设置的窗口时间内输入数据有所变化,系统会自动进行下一次的交通流量预测工作。具体包括如下步骤:
设置Spark Streaming的窗口时间为5分钟。
利用StreamingContext创建一个Spark Streaming Context对象。
利用socketTextStream()获得一个Dstream对象负责连接监听端口。
5分钟内若输入数据有更新则重新运行预测程序。
KNN算法的近邻搜索是指计算历史数据库交通流特征向量与测试数据库交通流特征向量之间的欧氏距离或者指数权重距离,进而从交通流历史数据库中找出测试数据的K个最近邻数据集合。
KNN算法的预测精度与K个近邻的选取个数有关,本数据集中当K值选择为20左右时其平均相对误差最小,所以本发明在近邻匹配时选取了20个近邻。
并行化KNN算法能有效解决传统KNN算法在近邻查找过程中搜索历史数据库效率过低的问题,提高算法的计算效率,有效的改善了KNN预测算法的实用性。
如图6所示,并行化KNN算法的实现包括如下步骤:
数据分区:数据分区的目的是将大规模数据集分成几个分区,每个分区的数据会在Spark集群中的一个物理机上进行计算,这样在每台物理机上进行计算的数据量会成倍减少,从而减少数据的处理时间。
数据分区的具体实现包括如下步骤:
对输入数据调用mapPartitions()函数,该函数可以将输入数据分成用户指定个数的分区数,该函数的输入为一个自定义函数。
mapPartitions()函数的具体代码如下:
将我们定义的subArrFunf()和subArrFunh()函数作为参数传入到mapPartitions()函数中,这样就完成了输入数据的分区以及获得输入交通流特征向量的工作。
获得测试和历史交通流特征向量的具体代码如下:
val testNodes=testData.mapPartitions(subArrFunf).collect()
val historyNodes=historyData.mapPartitions(subArrFunh).collect()
数据分析阶段是指从历史数据库中找到与预测路段交通流特征向量最接近的20个近邻数据集合。
具体实现过程包括如下步骤:
通过map()函数将KNN算法特征向量相似度计算的任务进行并行化处理。
map()函数的具体代码如下:
def map取出历史数据交通流特征向量和测试数据交通流特征向量对应位置的数据,计算它们之间的欧式距离。
计算欧式距离的具体代码如下:
val distance=Math.sqrt(Math.pow(a1-b1,2)+Math.pow(a2-b2,2)+
Math.pow(a3-b3,2)+Math.pow(a4-b4,2)+Math.pow(a5-b5,2))+…
将集群各个节点的计算结果集中到集群的一台机器中,并进行排序,根据排序结果加权求出待测路段下一时刻的交通流量。
val sortList=list.sortBy(item=>item._1)
for(i<-0to 20){flows+=sortList(i)._2}
我们采用扩展性和加速比作为并行化KNN算法预测时间的评价指标。
扩展性是衡量系统是否具有处理更大规模问题能力的重要指标。可扩展性意味着通过扩展系统资源,系统可以应对数据规模增长时的数据处理需求。
加速比是衡量并行化算法与分布式平台性能的重要指标,其公式如下:
其中Ts为串行算法的运行时间,Tp为并行算法的运行时间,加速比描述的是将算法并行化后的运行速度比串行算法快多少倍,通过加速比指标可以直观的反应分布式系统的性能。
从图7中可以看出基于Spark的并行KNN模型在数据规模增大时表现出很好的计算能力,相比传统KNN模型,并行KNN模型的计算效率有明显提高。
从图8和图9可以看出基于Spark的并行KNN模型具有良好的扩展性和加速比。

Claims (2)

1.一种基于Spark平台的短时交通流量预测方法,其特征在于包括如下步骤:
(1)数据预处理:处理源交通流量数据,剔除与交通流量预测无关的数据字段;所述的数据预处理是对由道路传感器收集到的源交通流数据进行处理,得到与预测路段相关的字段数据以及与待测路段在时间和空间相关联路段的交通流数据,包括如下步骤:
(1.1)将传感器收集到的交通流量数据存储到Hadoop的HDFS文件系统中;
(1.2)利用Spark中的textFile()函数将存储到HDFS文件系统中的交通流量数据读入到Spark中,并生成一个Spark中特有的数据类型MappedRDD;
(1.3)利用Spark中的map()函数,读取MappedRDD中每一行交通流量数据,并利用Spark中的split()函数对每一行数据按照分隔符进行分割,最后将需要的交通流字段数据进行提取;
(2)基于时空关系的特征向量:利用与待测路段在时间和空间相关联路段的交通流量共同生成KNN算法的交通流特征向量;所述的基于时空关系的特征向量是对交通流数据进行时空特性分析,确定最佳的时间和空间维度,以此形成最佳的交通流输入向量;预测时间间隔为5分钟,该特征向量的时间维度为2,空间维度为4,即取待测路段当前时刻和前一时刻的交通数据,即取待测路段以及待测路段的两个上游和一个下游路段的交通流量数据组成基于时空关系的特征向量;
(3) 实时流处理:利用Spark 流计算解决交通流量预测的实时性问题;
(4)并行化KNN算法实现:对传统KNN算法进行并行化实现,使得KNN算法能够在Spark分布式集群上运行;所述的并行化KNN算法实现是对传统的基于单机运行的KNN算法重新进行实现,使KNN算法能够在由多台物理机组成的Spark分布式集群上并行运行,主要包括如下步骤:
(4.1)利用mapPartitions()函数将已经处理好的交通流量数据分成若干分区,其中每个分区的数据在Spark集群中会在一个物理机上进行计算;
(4.2)定义一个函数,这个函数的功能是获得待测路段及与待测路段在时间和空间相关联路段的交通流量所组成的特征向量;
(4.3)将定义的这个函数作为mapPartitions()函数的输入参数;
(5)数据分析:利用并行化KNN算法,对基于时空关系生成的交通流特征向量进行处理,得到待测路段下一时刻交通流量的预测结果;所述的数据分析是指在Spark集群上运行并行化实现的KNN算法,得到待测路段下一时刻的预测流量,主要包括如下步骤:
(5.1)从历史数据库中根据欧式距离匹配到与当前待测路段交通流量最接近的K个交通流量向量;
(5.2)取当前该K个交通流量向量的下一时刻交通流量的加权平均值作为预测路段下一时刻的交通流量。
2.根据权利要求1所述的一种基于Spark平台的短时交通流量预测方法,其特征在于:
所述的实时流处理是利用SparkStreaming时刻检测输入数据是否有更新;我们将Spark Streaming的窗口时间设置为5分钟,在5分钟内一旦输入数据有所改变,系统便会自动进行下一次的交通流量预测。
CN201610515512.0A 2016-06-30 2016-06-30 一种基于Spark平台的短时交通流量预测方法 Active CN106128100B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610515512.0A CN106128100B (zh) 2016-06-30 2016-06-30 一种基于Spark平台的短时交通流量预测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610515512.0A CN106128100B (zh) 2016-06-30 2016-06-30 一种基于Spark平台的短时交通流量预测方法

Publications (2)

Publication Number Publication Date
CN106128100A CN106128100A (zh) 2016-11-16
CN106128100B true CN106128100B (zh) 2019-01-15

Family

ID=57468179

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610515512.0A Active CN106128100B (zh) 2016-06-30 2016-06-30 一种基于Spark平台的短时交通流量预测方法

Country Status (1)

Country Link
CN (1) CN106128100B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106781508B (zh) * 2017-02-28 2019-01-25 杭州电子科技大学 一种Spark环境下基于多重相空间的短时交通流预测方法
CN110517479B (zh) * 2018-05-22 2020-11-03 杭州海康威视系统技术有限公司 一种城市道路交通预测方法、装置及电子设备
CN109598936B (zh) * 2018-12-18 2020-01-10 中国科学院地理科学与资源研究所 一种基于动态stknn模型的短时交通预测方法
CN109448381A (zh) * 2018-12-19 2019-03-08 安徽江淮汽车集团股份有限公司 一种基于车联网大数据的交通路况预测方法
CN111382890B (zh) * 2018-12-27 2022-04-12 珠海格力电器股份有限公司 一种家电安装量预测方法、系统及存储介质
CN110211375A (zh) * 2019-05-23 2019-09-06 浙江大学 基于改进时空关联knn算法的交通流量预测方法
CN111680075A (zh) * 2020-04-16 2020-09-18 兰州理工大学 一种基于离线分析和在线预测结合的Hadoop+Spark交通预测系统及方法
CN111860621B (zh) * 2020-06-30 2024-05-03 贵州民族大学 一种数据驱动的分布式交通流量预测方法及系统
CN112216104A (zh) * 2020-09-17 2021-01-12 广东新时空科技股份有限公司 一种基于多源数据融合的城市路口交通流预测方法
CN112907969B (zh) * 2021-02-02 2022-04-22 中国科学院计算技术研究所 一种预测道路交通流量的方法及系统
CN113420414B (zh) * 2021-05-27 2022-08-30 四川大学 一种基于动态时空分析的短时交通流预测模型
CN114255591A (zh) * 2021-12-17 2022-03-29 重庆中信科信息技术有限公司 考虑时空相关性的短时交通流预测方法、装置及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050222751A1 (en) * 2004-04-06 2005-10-06 Honda Motor Co., Ltd Method for refining traffic flow data
CN102915347A (zh) * 2012-09-26 2013-02-06 中国信息安全测评中心 一种分布式数据流聚类方法及系统
CN103871246A (zh) * 2014-02-10 2014-06-18 南京大学 基于路网空间关系约束Lasso的短时交通流预测方法
CN104573331A (zh) * 2014-12-19 2015-04-29 西安工程大学 一种基于MapReduce的K近邻数据预测方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050222751A1 (en) * 2004-04-06 2005-10-06 Honda Motor Co., Ltd Method for refining traffic flow data
CN102915347A (zh) * 2012-09-26 2013-02-06 中国信息安全测评中心 一种分布式数据流聚类方法及系统
CN103871246A (zh) * 2014-02-10 2014-06-18 南京大学 基于路网空间关系约束Lasso的短时交通流预测方法
CN104573331A (zh) * 2014-12-19 2015-04-29 西安工程大学 一种基于MapReduce的K近邻数据预测方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于浮动车数据的城市快速路短时交通状态预测的研究;张菁菁;《中国优秀硕士学位论文全文数据库》;20121015;9-40页 *

Also Published As

Publication number Publication date
CN106128100A (zh) 2016-11-16

Similar Documents

Publication Publication Date Title
CN106128100B (zh) 一种基于Spark平台的短时交通流量预测方法
Neelakandan et al. RETRACTED ARTICLE: An automated exploring and learning model for data prediction using balanced CA-SVM
Guo et al. Learning to route with sparse trajectory sets
Zhu et al. Time-dependent popular routes based trajectory outlier detection
Wang et al. A visual reasoning approach for data-driven transport assessment on urban roads
Guo et al. Learning multi-granularity consecutive user intent unit for session-based recommendation
CN104281652B (zh) 度量空间中逐个支撑点数据划分方法
Zhang et al. Deep representation learning of activity trajectory similarity computation
CN108536813B (zh) 轨迹查询方法、电子设备及存储介质
CN103761286B (zh) 一种基于用户兴趣的服务资源检索方法
CN101526366B (zh) 地图数据处理方法及导航设备
CN105843907A (zh) 一种内存索引结构-距离树的构建及基于距离树的相似性连接算法
Abbasifard et al. Efficient indexing for past and current position of moving objects on road networks
Jiang et al. A feature based method for trajectory dataset segmentation and profiling
CN113344128A (zh) 一种基于微簇的工业物联网自适应流聚类方法及装置
CN110008994A (zh) 基于Spark平台运行的P-CFSFDP密度聚类方法
Feng et al. AGCN‐T: A Traffic Flow Prediction Model for Spatial‐Temporal Network Dynamics
CN106372127B (zh) 基于Spark的大规模图数据的多样性图排序方法
Sun et al. Parallel computing of KNN Query in road network based on MapReduce
Zhang et al. Interactive mining of user-preferred co-location patterns based on SVM
Petrozziello et al. Data analytics for online travelling recommendation system: a case study
Al Rahat et al. Maximizing reverse k-nearest neighbors for trajectories
Chen et al. Disatra: A real-time distributed abstract trajectory clustering
Fernande et al. TRAJEDI: Trajectory Dissimilarity
Li et al. Trajectory representation learning based on road network partition for similarity computation

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant