公交车到站时间预测算法的研究与实现

公交车到站时间预测算法的研究与实现

ID:20803618

大小:2.10 MB

页数:85页

时间:2018-10-16

上传者:文档小小白
公交车到站时间预测算法的研究与实现_第1页
公交车到站时间预测算法的研究与实现_第2页
公交车到站时间预测算法的研究与实现_第3页
公交车到站时间预测算法的研究与实现_第4页
公交车到站时间预测算法的研究与实现_第5页
资源描述:

《公交车到站时间预测算法的研究与实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

中文图书分类号:TP311密级:公开UDC:004学校代码:10005硕士学位论文MASTERALDISSERTATION论文题目:公交车到站时间预测算法的研究与实现论文作者:李健学科:软件工程指导教师:侯义斌教授论文提交日期:2017年5月 UDC:004学校代码:10005中文图书分类号:TP311学号:S201425005密级:公开北京工业大学工学硕士学位论文(全日制)题目:公交车到站时间预测算法的研究与实现英文题目:RESEARCHANDIMPLEMENTATIONOFBUSARRIVALTIMEPREDICTIONALGORITHM论文作者:李健学科:软件工程研究方向:物联网技术与应用申请学位:工学硕士学位指导教师:侯义斌教授所在单位:软件学院答辩日期:2017年5月授予学位单位:北京工业大学 独创性声明本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得北京工业大学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。签名:李健日期:2017年5月31日关于论文使用授权的说明本人完全了解北京工业大学有关保留、使用学位论文的规定,即:学校有权保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部分内容,可以采用影印、缩印或其他复制手段保存论文。(保密的论文在解密后应遵守此规定)签名:李健日期:2017年5月31日导师签名:侯义斌日期:2017年5月31日 摘要摘要公共交通是城市化发展中的重要一环,发达的交通体系是解决由于经济发展、科技进步带来的车辆增多、交通拥堵等一系列问题的必要基础。公共交通系统结合嵌入式技术、互联网技术和人工智能技术等,为市民出行提供有力保障,显著提升公共交通的服务质量。公交车到站时间预测服务系统是公共交通系统的重要组成,其帮助出行者合理规划出行方案,吸引更多的市民选择公共交通出行,从而缓解交通压力,降低由交通阻塞带来的能源消耗等问题。本文首先分析了公交车到站时间预测服务系统的设计背景,同时研究了当前公交车到站时间预测算法方面的研究成果。之后对本课题的前置项目,公共安全监控系统的架构设计进行了简要分析。同时对课题使用的机器学习算法和分布式计算技术进行了研究。随后以北京市607路公交车的行驶数据为例,为降低GPS的采集误差,设计了坐标转换、投影等数据预处理流程。根据数据统计结果,结合北京市特殊的交通环境,提取了6种影响公交车行驶的主要因素。并且为解决大规模数据集的预处理计算问题,设计了公交车行驶数据预处理的分布式计算系统。在分析了公交车的行驶特点,提取出影响因素之后,课题针对这6种影响因素,提出了一种基于随机森林的公交车到站时间预测算法。设计相关实验,以模型中回归树数量的不同作横向对比实验,以算法模型的不同将该算法与历史平均模型、神经网络模型等算法作了纵向对比。实验结果显示,基于随机森林的公交车到站时间预测算法具有较低的误差。最后为解决大规模样本集的训练与预估问题,设计了随机森林算法的分布式训练与预估系统。最后将公交车到站时间算法应用于实际中,设计了公交车到站时间服务系统,为市民出行提供线路查询、车辆位置查询和到站时间预估查询三种服务。关键词:智能交通;到站时间预测;机器学习;随机森林;-I- AbstractAbstractPublictransportisanimportantpartofthedevelopmentofurbanization.Thedevelopedtransportationsystemistheindispensablebasisforsolvingaseriesofproblemssuchastheincreaseofvehiclesbroughtaboutbyeconomicdevelopment,scientificandtechnologicalprogress.Publictransportsystemcombinedwithembeddedtechnology,Internettechnologyandartificialintelligencetechnology,cansignificantlyimprovethequalityofpublictransportservices.Thebustimepredictionservicesystemisanimportantcomponentofthepublictransportsystem.Ithelpsthepublictoplantraveltimeandattractmorepeopletochoosepublictransport.Thusalleviatingtrafficpressureandreducingtheenergyconsumptioncausedbytrafficcongestion.Firstly,thispaperintroducestheresearchbackgroundofthebusarrivaltimepredictionservicesystem,andexpoundstheresearchresultsofbusarrivaltimepredictionalgorithm.Abriefoverviewofthepre-project,publicsafetymonitoringsystemisgiven.Secondly,thispagerintroducesthemachinelearningalgorithmanddistributedcomputingtechnologywhichusedinthisresearch.Takingthedrivingdataofbus607inBeijingasanexample,thispaperdesignthedatapreprocessingprocessinordertoreducetheGPSacquisitionerrorAccordingtothestatisticalresultsofthedata,combinedwiththespecialtrafficenvironmentinBeijing,sixkindsofthemainfactorsinfluencingthebusdrivingwereextracted.Andtoaddresstheproblemofpreprocessingcomputationoflarge-scaledataset,adistributedsystemofbusdatapreprocessingisdesigned.Afteranalyzingthedrivingcharacteristicsofthebusandextractingtheinfluencingfactors,thispaperproposesabusarrivaltimepredictionalgorithmbasedonRandomForestforthesixinfluencingfactors.Thispapershowsthehorizontalcomparisonofdifferentnumberofrandomtreesinthemodel.Atthesametimethealgorithmiscomparedwiththehistoricalaveragemodelandtheneuralnetworkmodel.TheexperimentalresultsshowthatthearrivaltimepredictionalgorithmbasedonRandomForesthasalowerror.Inordertosolvethetrainingandpredictionproblemoflarge-scalesampleset,adistributedtrainingandestimationsystemofrandomforestalgorithmaredesigned.Finally,thebusarrivaltimepredictionalgorithmmodelisappliedtotheactual-III- 北京工业大学工学硕士学位论文designofthebusarrivaltimeservicesystem,forthepublictraveltoprovidelineinquiries,vehiclelocationqueryandarrivaltimepredictionquerythreeservices.Keywords:intelligenttransportationsystem,busarrivaltimeprediction,machinelearning,randomforest-IV- 目录目录摘要.........................................................................................................................IABSTRACT.................................................................................................................III第1章绪论.................................................................................................................11.1研究背景............................................................................................................11.2国内外研究现状................................................................................................21.2.1历史平均模型.............................................................................................21.2.2线性回归模型.............................................................................................21.2.3卡尔曼滤波模型.........................................................................................31.2.4神经网络模型.............................................................................................31.2.5支持向量回归机模型.................................................................................31.3现有条件及研究基础........................................................................................31.4研究内容............................................................................................................41.5论文结构............................................................................................................4第2章相关理论技术研究.........................................................................................72.1到站时间预测算法............................................................................................72.1.1回归问题数学描述.....................................................................................72.1.2线性回归.....................................................................................................82.1.3人工神经网络(Artificialneuralnetworks).................................................92.1.4支持向量回归机(Supportvectorregressionmachine)............................112.2分布式计算技术..............................................................................................132.2.1MapReduce...............................................................................................132.2.2参数服务器(ParamaterServer)................................................................142.3本章小结..........................................................................................................14第3章公交车行驶时间计算与影响因素分析.......................................................153.1公交安全监控系统设计分析..........................................................................153.2公交车行驶时间计算......................................................................................173.2.1数据预处理...............................................................................................173.2.2公交车行驶时间计算...............................................................................253.3公交车行驶时间影响因素分析......................................................................263.4公交车行驶数据相关计算的分布式处理......................................................293.4.1公交车行驶时间的分布式计算...............................................................293.4.2对比实验...................................................................................................303.5本章小结..........................................................................................................31第4章公交车到站时间预测算法...........................................................................33I 北京工业大学工学硕士学位论文4.1算法研究与分析..............................................................................................334.1.1决策树.......................................................................................................334.1.2随机森林...................................................................................................364.2基于随机森林的公交车到站时间预测算法..................................................374.3公交车到站时间预测算法的分布式训练与预估..........................................404.3.1到站时间预测算法训练的分布式训练...................................................404.3.2到站时间预测算法的分布式预估...........................................................414.3.3对比实验...................................................................................................424.4本章小结..........................................................................................................43第5章公交车到站时间预测服务系统的设计与实现...........................................455.1公交车到站时间预测服务系统需求分析......................................................455.1.1场景描述...................................................................................................455.1.2功能需求...................................................................................................455.1.3非功能需求...............................................................................................465.2公交车到站时间预测服务系统架构设计......................................................465.3应用服务器详细设计......................................................................................475.3.1数据模块...................................................................................................475.3.2服务模块...................................................................................................495.3.3公交车到站时间查询服务.......................................................................555.4移动应用程序详细设计..................................................................................625.4.1服务请求...................................................................................................635.4.2结果展示...................................................................................................655.5相关演示..........................................................................................................665.5.1登入服务...................................................................................................675.5.2公交线路查询...........................................................................................675.5.3车辆位置查询...........................................................................................685.5.4到站时间查询...........................................................................................685.6本章小结..........................................................................................................68结论......................................................................................................................69参考文献................................................................................................................71攻读硕士学位期间取得的研究成果..........................................................................75致谢......................................................................................................................77-II- 第1章绪论第1章绪论1.1研究背景随着社会的发展与科技的不断进步,人民的生活水平不断提高,生活设施不断完善,机动车也逐步走进每个人的家庭。据北京市公安局公安交通管理局统计,截止至2014年底,北京市机动车保有量为559.1万辆,与2000年底比较,增加了401.3万辆[1]。在城市化建设蓬勃发展的同时,北京市也面临着一系列因交通发展带来的难题。由于公共交通服务能力不足、质量不高,交通基础设施建设等原因,导致了公共交通出行所占比例较低,中国大城市公共交通的出行分担率平均不足20%[2]。市民过于依赖私家车的出行方式,导致了交通拥堵、交通能耗过高等难题[3][4]。交通阻塞问题已严重影响市民出行的舒适与快捷性,约束了城市发展的速度与进程[5][6][7]。交通拥堵会降低车辆行车效率,不仅增加车辆的行车时间,还会增长公交乘客的等车时间,影响出行时间的稳定性,降低出行效率。不仅如此,由交通拥堵带来的交通安全、环境污染,燃油消耗等问题也日益受到人们的重视[8]。造成城市交通同拥堵的根本原因是交通供给与需求的不平衡[9]。私人交通和公共交通一直以来处于相互竞争,相互吸引的状态。当公共交通不能满足市民的出行需求时,转向私人交通的人就会增长,私家车的数量也会随之增加[10]。在公共交通的服务质量没有提高的情况下,出行需求增大会造成私家车承担的交通流量增加[11][12]。因此智能交通系统(IntelligentTrafficSystem,ITS)的发展得到越来越多的关注[13]。公共交通系统使用网络通信、计算机、物联网、GIS等技术,搭建了现代化的公共交通管理系统,作为智能交通系统的子系统,为市民的出行提供快捷方便的公共交通服务[14][15]。公交车到站时间预测服务系统是智能交通系统的重要组成部分,该系统为市民精准预测公交车的到站时间,为市民的出行规划提供可靠的保障,降低出行时间的不稳定性。现如今,随着互联网、物联网科技的发展,手机已成为人人的必需品,一些智慧出行的手机应用可以为用户提供公交线路查询、到站时间查询等服务。但由于现阶段中国城市化发展不完善,公共交通服务较发达国家相比还有许多不足:缺乏公交车优先行驶特权等。导致了公交车到站时间预测服务系统仍存在许多缺陷,其中公交车到站时间算法的准确性过低是当下最亟待解决的问题。-1- 北京工业大学工学硕士学位论文1.2国内外研究现状公交车到站时间预测算法是到站时间预测服务系统的核心部分,直接关系到服务系统的服务质量。由于公交车在行驶、驻留过程中的突发事件过多,车辆的到站时间无法通过简单的找规律来建立模型。因此研究一个可以自适应复杂交通环境的到站时间预测算法需要考虑多方面的影响因素。目前主流的算法模型分为以下4种:历史平均模型、线性回归、卡尔曼滤波模型、神经网络模型以及支持向量回归模型。1.2.1历史平均模型历史平均模型的基本思想是采用GPS技术,收集车辆的行驶数据。通过统计车辆的历史行驶数据,计算车辆于各个路段的平均行驶时间。ZhangMin等人将待预测路段分隔成若干段,利用历史行驶数据分别计算各子路段的平均行驶时间,最后求得最终的预测时间[16][17],该算法仅仅统计了行驶时间一种信息,而对交通路口的等待等因素未作考虑,在实际应用上是否具备良好的泛化能力缺乏理论依据。JunGong等人引入平均驻留时间,通过计算历史平均行驶时间和驻留时间来预测[18],该算法细分了公交车的行驶过程,削减了仅仅统计行驶时间来预测结果的噪声,但仍仅以历史数据为基础,算法模型上过于简单。TongyuZhu等人将历史数据与实时数据相结合,将预测模型分为两部分:当预测点距离当前位置较近时,使用实时速度预测到站时间;当预测点距离当前位置较远时,使用历史平均行驶时间、驻留时间以及交通路口延迟时间的累积求和来预测公交车全程的行驶时间[19],DihuaSun等人则从另一方面,使用当前时段的历史平均速度来预测到站时间,不仅如此他们还引入了有限状态机来完成他们的预测模型[20]。历史平均模型具备结构简单、运算量低等优点,但由于其仅适用历史平均数据,准确性严重依赖于交通状况的稳定性,在车辆行驶时间的方差较低的情况下具有良好的性能,适合车流量较小的环境,不适合交通状况复杂多变的路段。1.2.2线性回归模型线性回归(Linearregression)是一种用于回归分析的典型工具。对于到站时间时间预测问题,线性回归通过计算公交车行驶影响因素与最终行驶时间的函数关系完成数据建模。文献[21]利用该算法考虑了行驶路段长度和行驶时段两个影响因素,构建了到站时间预测模型。虽然该算法考虑了路段长度和时段两种因素,但对于非线性问题,线性回归算法需要对输入特征进行特征组合,组合的方式只能根据模型构建人员的经验进行选择,缺乏理论依据。-2- 第1章绪论1.2.3卡尔曼滤波模型卡尔曼滤波模型是一种递归估计算法,利用估计值与观测值来更新对状态变量的估计[22]。Vanajakshi等人将此算法应用到了到站时间预测模型中[23][24][25],通过上一辆公交车的行驶的时间来预估当前车辆在当前路段的行驶时间。卡尔曼滤波模型引入了实时因素,实际应用的泛化能力强于历史平均模型,具备了一定的动态预测的能力,但仅仅以上一车辆的行驶时间作为预测依据,在噪声的干扰下易受波动,稳定性不足。1.2.4神经网络模型历史平均模型和卡尔曼滤波模型都只考虑了行驶路段一种影响因素。Steven等人将行驶距离、时段以及日期作为影响因素,使用神经网络算法提出一种基于混合交通信息的预测算法[26][27]。该算法不仅考虑了历史行驶数据(驻留时间、行驶时间),并且将实时速度作为影响因素之一,同时依托神经网络算法强大的拟合能力,该预测算法在样本集上的误差较低。神经网络算法需要以大量的数据为基础进行训练,训练成本高。并且网络结构的选择需要算法构建人员具备较强的实践经验,若隐藏层数量、学习速率等参数配置不当会产生过拟合或欠拟合等现象,而导致实际应用效果不理想。1.2.5支持向量回归机模型YuBin等人提出一种基于支持向量回归机的预测算法[28]。该模型将历史GPS数据按时间段、天气进行分类(高峰时段且晴天、高峰时段且雨天、非高峰时段且晴天、非高峰时段且雨天)。分别就这四种情况以当前车辆的上一路段的速度、前一车辆下一路段的速度和当前车辆的实时速度作为输入向量对支持向量回归机进行训练。该算法不仅考虑了车辆的行驶内部因素(速度),并且融入了天气、时段等外部因素,具备较强的稳定性与突发情况的应对能力。同时支持向量回归机算法可以通过选择合适的核函数将输入参数映射到高维空间,解决该类非线性问题[29][30]。但支持向量回归机的基本运算是输入向量的加权运算,不适合解决像天气等非数值型数据的建模问题。该预测算法通过人工地对数据集进行分类,以规避对天气、时段等非数值型数据的运算,但分类依据过于主观,缺乏对数据的统计与分析。1.3现有条件及研究基础笔者于2014年5月加入了公共安全监控系统项目组,该项目使用实时流媒-3- 北京工业大学工学硕士学位论文体传输技术、网络通信技术、GPS定位技术和嵌入式等技术实现了具有视频监控、车辆定位、报警等安全控制功能的公共安全监控系统。对该系统的深入研究,将在第3章节展开。笔者在该项目组中逐步了解系统的研发进展,学习了系统的设计理念和运作方式,主要完成了流媒体传输质量控制服务功能和系统运行状态检测维护程序。通过在项目组中的研究学习,笔者对本课题研究的数据(公交车行驶数据)的来源、构成、解析方式具有深刻的了解。1.4研究内容为实现具备高准确率、高实时性的到站时间预测服务系统,本课题主要研究以下几方面内容:(1)影响公交车行驶时间的主要因素本课题以北京市607路公交车为数据基础,采集了该线路的车辆行驶数据。结合北京市特殊的交通环境,根据统计结果提取了多种影响公交车行驶时间的因素。(2)研究实现公交车到站时间预测算法公交车到站时间预测算法是服务系统的核心部分。本课题针对研究内容(1)提取的影响因素,以降低预测误差为前提,建立算法模型对公交车行驶数据进行建模,最终得到到站时间算法模型。(3)设计并实现公交车到站时间预测服务系统本课题将研究内容(2)得出的算法应用于实际中,研究如何实现一个具备高实时性、低误差率的到站时间预测服务系统。1.5论文结构本论文共分6章,对公交车到站时间预测服务系统的方方面面进行描述。第1章为绪论部分,主要分析本课题的背景、相关算法的国内外发展现状、对主流的公交车到站时间预测算法的优缺点进行了简要的概括分析。针对当前主流算法的缺陷,引出了本课题的主要研究内容并描述了现有条件与相关研究基础。第2章为相关技术及理论研究,深入研究了当前可用于公交车到站时间预测模型的算法,为下文的对比实验打下理论基础。其次研究了分布式计算技术,解决在算法模型的建模、训练的过程中,计算量过大的问题。第3章为公交车行驶时间计算与影响因素分析章节,该章节的主要内容为公交车行驶时间的计算方式以及统计分析影响公交车行驶时间的因素。该章首先描-4- 第1章绪论述本课题的前置项目,公共安全监控系统的基本框架。该项目为本课题提供了公交车的原始行驶数据,包括车辆的地理位置信息、加速度信息等。其次设计了公交车行驶时间的计算方式,并且为解决大规模数据集的运算问题,设计了行驶数据分布式处理系统,为下文的公交车行驶影响因素分析以及对数据建模部分提供数据基础。最后根据得出的公交车行驶时间计算统计信息,结合北京市实际的交通环境,提取出影响公交车行驶的6种影响因素。第4章为公交车到站时间预测算法的研究与实现,该章节详细研究了本课题使用的建模算法:随机森林算法的基本理论。之后针对第3章得出的影响因素,使用随机森林算法对北京市607路公交车的行驶数据建模,得出基于随机森林算法的公交车到站时间预测算法模型。最后以模型中随机树数量的不同作纵向对比,以算法模型的不同作横向对比,证明该算法的有效性。最后设计了该算法模型的分布式训练与预估流程,解决大规模数据集训练任务繁重的问题。第5章为公交车到站时间预测服务系统的实现,本章整合第3章设计的公交车行驶时间分布式预处理系统与第4章设计的公交车到站时间预测算法分布式训练系统,结合网络通信技术设计了具备可拓展性、高实时性、可分布式的公共交通服务系统。并设计实现了移动应用程序,帮助市民合理规划出行时间。-5- 北京工业大学工学硕士学位论文-6- 第2章相关理论技术研究第2章相关理论技术研究本章将对本系统所涉及的多项技术与理论进行研究与分析,分为机器学习算法与分布式计算技术两部分。公交车到站时间预测算法是课题研究的核心内容,到站时间预测是一种回归问题,该类问题可以通过使用机器学习算法对大数据建模来解决。本课题研究了多种解决回归问题的机器学习算法,并深入研究了几种典型算法。其次研究了分布式计算的设计框架,为课题中大规模数据集的训练提供计算基础。2.1到站时间预测算法假设自变量x与因变量y之间存在某种关系,即当x确定时,y的取值可以通过函数f(x)表示。求解自变量x与因变量y关系的过程,即求解f(x)的过程被称为回归问题。在本课题中,公交车的行驶距离、天气、时段等变量可以被称为自变量,而行驶时间可以被称为因变量。如何选取合适的函数使得输入变量x(行驶距离、时段、天气)经函数f(x)映射后与实际输出y(行驶时间)最接近,是本课题的重点研究内容。本课题研究了现阶段经典的算法,深入分析了各种算法的优缺点。2.1.1回归问题数学描述给定样本集:Dxy11,,,xyi,i,,xym,m;1imm;为样本数量(2-1)1jnxxxxn,,,,;位样本特征数量(2-2)iiii公式(2-1)中xy,代表第i个样本,x代表自变量的取值,可以包含1个iiij或多个自变量,通常用特征向量的方式表示,见公式(2-2)。本课题中,x可以对应为行驶距离、天气、时段等影响公交车行驶状态的因素。y代表在自变量取i值为x时,与之相关的因变量的取值。本课题中即为公交车的行驶时间。回归问i题即在确定的函数空间F上寻找决策函数fx(),能较好的预测其他点上的函数值。决策函数的预测能力通常采用预测值与实际值的误差来衡量,误差越小,决策函数的预测能力(拟合能力)就越强。误差的计算方式有多种形式,通常用误差函数或称损失函数来表示。公式(2-3)(2-4)列举了两种常用于衡量回归问题的损失函数:-7- 北京工业大学工学硕士学位论文Lfxy((),)fx()y;绝对值损失函数(2-3)2Lfxy((),)fx()y;平方损失函数(2-4)决策函数fx()的求解方式为在函数空间F上最小化损失函数Lfxy((),):fx()Lfxyargmin((),)(2-5)fx()F2.1.2线性回归线性回归算法通过对输入特征的线性组合来进行对实际值的预估:将每个特征赋予相应的权重并累积求和,最后加上偏置项得到预估结果,数学形式见公式(2-6)。njjfx()w*xb(2-6)j1线性回归的求解过程即为求解权重w和偏置项b的过程,以最小化平方损失函数为最优化目标,见公式(2-7)(2-8)。m12Jwb(,)fx()yii(2-7)mi1wb,argmin(,)Jwb(2-8)wb,求解方法有梯度下降(Gradientdescent)和标准方程(Normalequation)两种方式。由于梯度下降法是求解无约束最优化的一般方法,所以本课题深入研究k了该方法。梯度下降法的基本思想是沿着函数梯度下降的方向求解极小值。以w为例,该参数的梯度计算方式见公式(2-9)-(2-12)。m21kkJwb(,)fx()yii(2-9)wwm2i1m1fx()iyiifxi*(()y)k(2-10)mi1w1mnjjkkfx()iiii*i*y*wxwkxby(2-11)mij11,jkwm1kfx()iyi*xi(2-12)mi11对二次函数计算梯度,通常在最优化函数中加入常数项使得结果不变,但2可简化计算,见公式(2-9)。之后沿着梯度方向,更新权重w,见公式(2-13)。kkw:wJwb(,)(2-13)kw-8- 第2章相关理论技术研究是梯度下降的幅度,被称为学习速率。需要经多次试验选取适当的值,若设置过大则会在最优化过程中产生震荡现象,过小则会拖慢求解进程,以至求得非最优解。解得特征权重w和偏执型b后,对于新的输入特征向量x,使用公式(2-6)计算预估值。对于非线性问题,需要对输入特征进行特征组合映射到高维空间进行求解。特征组合的方式需要根据经验制定,文献[21]在应用线性回归算法时,以行驶距离和行驶时段作为输入的特征,选择了多种特征组合的形式见公式(2-14),依据实验得出的误差结果,选择了最优的表达形式。线性回归算法在求解和数值预估方面计算简单、复杂度低。但在特征组合方面,若特征组合后维度过高,则会产生过拟合现象,影响实际应用的准确率。维度过低则泛化能力不强,以至误差过高。因此特征组合需要经过大量的实验验证,缺乏理论上的依据。012TwwLwP**01232TwwLwPw***L01232TwwLwPw***P(2-14)0123422TwwLwPw****LwPL:公交车行驶距离P:公交车行驶路段T:公交车在行驶距离L,时段P时的行驶时间w:输入特征的权重2.1.3人工神经网络(Artificialneuralnetworks)人工神经网络是一种模仿生物大脑神经元互连结构的数学模型。神经元是神经网络的基本组成,包含一个激活函数(activationfunction)。在人工神经网络中,一个神经元接收n个其他神经元传递而来的信号并将信号进行求和运算,最后通过激活函数得到该神经元的输出值。一个具有3个输入信号的神经元示意图如图2-1所示。该神经元的输出计算方式见公式(2-15)。x11w22outxw33wx图2-1神经元示意图Figure2-1neurondiagram-9- 北京工业大学工学硕士学位论文3iioutfwx*(2-15)i1其中f为激活函数,具有多种形式,公式(2-16)(2-17)列举了两种常用的激活函数。1fx();Sigmoid函数(2-16)x1efx()max(0,)x;ReLu函数(2-17)神经网络模型可以看作是一种有向无环图,神经元作为图中的节点按一定的结构相互连接形成网络。一个三层神经网络如图2-2所示。偏置项1x1x2x3输入特征10,11,12,13,w1w1w1w111234bbbb隐藏层10,11,12,13,14,w2w2w2w2w2y输出值图2-2神经网络结构图Figure2-2neuralnetwork第i层隐藏层的第j个神经元的计算方式见公式(2-18)(2-19):OutijfIn,,ij(2-18)Pjp,,0jInijw,1,iOutipiw*1*(2-19)p1Out:第i层隐藏层的第j个神经元的输出值ij,In:第i层隐藏层的第j个神经元的输入值ij,P:第i-1层隐藏层具有的神经元数量jp,w:第i-1层的第p个神经元的输出对应于第i层第j个神经元的权重ij,0w:第i-1层的偏置项对应于第i层第j个神经元的权重ifx():激活函数神经网络的最典型学习算法为误差逆传播算法(errorBackPropagation,BP),-10- 第2章相关理论技术研究以图2-2所描述3层神经网络为例,网络输出为yˆ,即Out,以最小化平方损3,1失函数为最优目标,见公式(2-20)。计算第2层到第3层权重的偏导,见公式(2-21)。根据链式求导法则求解第1层到第2层权重的偏导,见公式(2-22)(2-23)。其中f为激活函数的倒数,x为输入特征向量。最后根据梯度更新权重,见公式(2-24)(2-25)。求得最优权重后,使用公式(2-18)(2-19)计算预估值。m12min()Jwyminyiiˆ(2-20)w2wi1mJw()y-y(Out)*iiˆ2(2-21)w2i1mJw()y-y(Out)**Out*iiInˆ211(2-22)w1Out111Inwi1m-()**y*iiywfˆx2(2-23)i1ww:Jw()(2-24)22w2ww:()Jw(2-25)11w1神经网络算法通过激活函数对神经元的输入做变换映射,以此解决非线性问题。除此以外,由于加入了隐藏层的结构,需求解的权重数量有所增长。文献[26]以行驶距离、时段和日期作为神经网络的输入特征,以行驶时间为输出值,构建了一个具备1输入层、1隐藏层、1输出层的3层神经网络。其中输入层具有3个输入单元对应于3个输入特征,隐藏层具有13个神经元,输出层具有1个输出单元对应于1个输出值。在该网络条件下需要计算66个权重(52个隐藏层权重+14个输出层权重)。权重数量的增加不仅使得训练计算复杂度增长,并且容易产生过拟合的现象,即实际应用效果可能不理想。对比于线性回归的特征组合方式的选择,神经网络的网络层数、隐藏层的神经元数量的配置和激活函数的选择同样需要大量的实验作为选择依据,增加了计算复杂度。并且神经网络算法在对非数值特征计算时需要提前为此类特征赋予特定的数值。例如,日期特征分为工作日和休息日,没有特定的数值作为衡量方式。为使神经网络可以对该类数据进行计算,而对工作日、休息日分别赋予了0和1的数值,但数值与特征本身代表的含义不相符,从而导致了该算法不适合计算非数值型特征。2.1.4支持向量回归机(Supportvectorregressionmachine)支持向量回归机是支持向量机(Supportvectormachine)用于求解回归问题的-11- 北京工业大学工学硕士学位论文变种。传统回归模型(线性回归、神经网络)在计算损失值时,当且仅当模型输出值f(x)与实际值y相同时,损失值才为0。而支持向量回归机允许模型输出与实际值之间存在一定的偏差,在偏差之内损失值为0;偏差之外才计算损失值。如图2-3所示。yˆ0x图2-3支持向量回归机Figure2-3Supportvectorregressionmachine其中每个圆代表每个样本,三个纯黑色圆确定了通过支持向量回归机算法得到的模型(超平面,图中黑色实线)。ε代表了该模型允许的偏差范围,由此划定了一条偏差为0的管道(图中虚线),在此管道内,样本误差为0。管道外部使用损失函数计算误差。,ˆ表示了位于管道上下方样本的误差值。该算法的数学形式见公式(2-26)mmin||||1*()wC2ˆwb,,,ˆ2iii1fx()yiiiyifxii()ˆ(2-26)0iˆ0ifx()wxb*求解带约束最优化问题的通用解法是拉格朗日乘子法,引入拉格朗日乘子,得出拉格朗日函数,见公式(2-27)。并将最小化问题转换为公式(2-28)。最后将公式(2-28)转换为对偶问题,并用序列最小最优化算法求解。Lwb,,,,,,,ˆˆˆmmm1wC2(ˆ)*ˆ*ˆ(2-27)iiiiii2i1iimm*(()fxy)ˆ*(()fxyˆ)iiiiiiiiii11minmaxˆLwb,,,,,,,ˆˆˆ(2-28)wb,,,,,,ˆˆ-12- 第2章相关理论技术研究文献[28]考虑了距离、时段、天气和速度4种影响因素,利用支持向量回归机对数据进行建模。与神经网络算法不同的是基于支持向量回归的算法对数据集按照高峰时段、低峰时段、晴天、雨天4种情况分类,分别对这4类数据集进行训练,从而规避了对时段、天气这两类非数值特征的计算。但是该方法的分类依据过于主观,仅仅依赖经验划分高低峰时段和天气,缺乏对数据的统计与分析。2.2分布式计算技术分布式计算是一种计算任务的处理方式,研究如何把一个无法通过单计算资源解决的问题,分解成若干子部分,将子部分按某种特定分配方式分配给其他计算资源进行计算处理,最后将每个计算资源得出的计算结果按一定规则合并起来得出最终任务结果[31]。它的基本思想是通过一个主控节点,将计算问题分成若干部分,再将计算任务通过进程间通信技术或网络通信技术分配给其余计算节点。计算完成后,计算节点通知主控节点合并计算结果。通过分布式计算技术可以降低在大规模数据预处理时的时间成本,加快计算进程。本课题分析了MapReduce和ParamaterServer两种基于分布式计算的编程模型,研究其设计思想,为解决大规模数据集处理提供技术方案。2.2.1MapReduceMapReduce是由JeffreyDean等人提出的一种的一种编程模型[32][33],主要应用于对大规模数据的并行计算。计算流程首先将计算任务分片,每个子计算任务通过Map函数对待计算数据进行处理映射,产生中间键值,最终通过Reduce函数对具备相同键值的数据进行合并,最终输出计算结果。数据流如图2-4所示:主控节点分配任务分配任务子计算任务1子计算任务2MapReduce计算结果计算分任片务Reduce计算结果Map子计算任务n图2-4MapReduce数据流Figure2-4DataflowofMapReduce-13- 北京工业大学工学硕士学位论文2.2.2参数服务器(ParamaterServer)在机器学习领域,随着算法模型越来越复杂(深度学习),单计算资源已解决不了目前快速增长的数据和特征参数,分布式训练变得越来越普及。参数服务器(ParamaterServer)是一种分布式并行程序的编程框架,重点是大规模参数的分布式存储与更新[34][35]。参数服务器集群中包括计算节点和参数服务节点,其中计算节点负责对分配到本地的训练数据计算梯度,并用梯度对参数服务节点进行更新。参数服务节点负责存储模型参数,每一个节点保存部分参数,同时接收来自计算节点的参数查询和更新请求。框架如图2-5所示:ServerServerServer分配任务主控节点WorkerWorkerWorker图2-5参数服务器Figure2-5ParamaterServer2.3本章小结本章,主要分析了公交车到站时间预测系统所涉及的多项技术与理论:首先对所涉及的各种适用于公交车到站时间预测算法的理论基础进行研究,为到站时间预测算法的选型与提出打下理论基础。其次分析了分布式计算技术,为解决公交车行驶数据的大规模数据集的预处理与训练提供技术基础。-14- 第3章公交车行驶时间计算与影响因素分析第3章公交车行驶时间计算与影响因素分析本课题所使用的的公交车行驶数据是由安装在公交车上的安控终端实时采集而来,由于原始数据仅包含车辆位置、时间等信息,而对于公交车行驶时间这类数据需要从原始数据中计算提取。本章根据公交车行驶轨迹固定等性质设计了公交车行驶时间的计算方法。其次根据计算统计的公交车到达各个站点的时间,结合北京市特殊的交通状况,分析归纳出交通路口数量、路段长度、时段、日期类型、降水量和能见度6种影响公交车行驶状态的特征。最后为解决大规模数据集的计算问题,结合分布式计算技术,对公交车行驶时间计算流程进行了分布式拓展。3.1公交安全监控系统设计分析公交安全监控系统是本课题的前置项目,该系统利用安置在公交车上的安控终端设备实时采集时间、地理位置等安控数据,通过互联网技术将数据传输至服务器数据库进行存储。监控应用方面,利用GIS、实时视频转播等技术完成公交车实时、历史地理位置以及视频监控的显示。系统整体结构和技术架构如图3-1图3-2所示。网络基站安控数据视频采集设备GPS设备音频采集设备加速度传感器安控终端报警设备温度传感器监控应用程序安控服务器集群图3-1公交安全控制系统结构图Figure3-1Busmonitoringsystemstructure-15- 北京工业大学工学硕士学位论文监控应用层视频监控位置监控数据交互模块网络通信监控服务应用层控制服务数据服务视频服务网络通信安控终端应用层操作系统传感器驱动安控数据传输模组硬件设备统一定制安控终端硬件层Zynq各类传感器图3-2公交安全控制系统设计图Figure3-2Busmonitoringsystemdesign安控终端硬件部分由xilinx提供的可拓展处理平台zynq作为核心,在其上拓展了多种传感器设备。采用linux作为终端的运行系统,搭载各类传感器读取模块,使用TCP/IP协议向服务器传输数据。服务器应用层由控制服务、数据服务、视频服务三部分组成。控制服务主要负责安控终端系统的认证、备份和升级。数据服务主要接收并转存来自安控终端传输的数据。视频服务主要负责将来自安控终端的流媒体转播给监控应用进行展示。监控应用层负责对监控数据的处理和展示。通过网络通信技术向安控服务器索取安控数据;通过GIS技术将车辆位置信息等数据进行界面级别的展示;通过流媒体播放技术发布实时监控视频。公共安全监控系统在公交车的行驶过程中,每1秒采集一次安控数据,包括公交车地理位置(经纬度方式表示)、加速度信息、温度和采集时间。目前有多辆公交线路在该系统上注册,本课题主要研究的是北京市607路公交车的行驶数据。该线路全程26公里,上行线路(和平东桥-宏福苑小区西)共38个站点,下行线路(宏福苑小区西-和平东桥)共39个站点。线路如图3-3所示。图3-3北京市607路公交车线路图Figure3-3BusroutemapofNo.607inBeijing-16- 第3章公交车行驶时间计算与影响因素分析3.2公交车行驶时间计算公交车到站时间预测算法的构建需要以行驶时间为样本输出值的样本集和与之对应的特征因素。本节研究的是如何通过公交车的行驶过程中产生的位置信息(经纬度)计算出公交车在某特定路段的行驶时间,即公交车从站点a到站点b的行驶时间计算方法。主要包含数据预处理和行驶时间计算两部分。3.2.1数据预处理公交车到站时间预测算法需要精准的数据集作为样本支撑,但由于GPS设备在采集过程中存在误差,直接使用原始位置数据作运算会导致结果的偏差。本节针对GPS设备采集过程中产生的坐标偏移等现象,结合公交车行驶路线的固定性设计了数据预处理算法,为行驶时间计算提供精确的数据支持。数据预处理流程如图3-4所示。公经近坐交纬似标数坐车度无系据标行输入坐输出偏统过投驶标差转滤影数解数换据析据图3-4数据预处理流程图Figure3-4Datapreprocessingflowchart公交车安控数据包含经纬度、时间、加速度、温度等信息,以字符串形式存储于数据库中,经纬度坐标解析模块负责从原始数据中解析出经纬度坐标信息,作为数据预处理的基本操作单元。由于公交车行驶时间计算的基本操作是距离计算,而GPS采集的经纬度坐标系统是一种以地球质心为原点的椭球型坐标系统。虽然在极小范围内可近似成平面,但直接在该坐标系下作距离运算仍会产生一定的误差[36][37][38]。为解决这一问题,设计了坐标系统转换模块,将原始经大地坐标系统转换为高斯投影坐标系统。最后为尽可能减少公交车行驶位置的误差,设计了数据过滤与坐标投影模块以输出近似无偏差数据。1、经纬度坐标解析经纬度坐标解析模块从原始公交安控数据中解析出经度、纬度和时间信息。安控数据的存储以字节为单位,存储格式见图3-5。-17- 北京工业大学工学硕士学位论文1-67-2829-3536-4142-5556-5960-63UTC时间位置信息运动信息日期信息系统时间信息温度信息车辆状态78-910-161718-2021-272842-4546-4748-4950-5152-5354-55定位状态纬度标识经度标识纬度纬度经度经度度A:定位状态N:北纬E:东京年月日小时分钟秒单位:度单位:分单位:度单位:分V:非定位状态S:南纬W:西经图3-5安控数据存储格式Figure3-5Securitycontroldataformat本课题所使用的数据为位置信息和系统时间信息,其中系统时间采用UTC时间,需要在此时间的基础上加北京时区差(+8小时)将其转换为北京时间。以数据为例,经数据解析后得出:005953A4006.9411N11621.5269E000.00001011520150101005951-2680000是否包含合法定位数据:是纬度:北纬40度6.9411分经度:东经116度21.5269分采集时间:2015年1月1日8点59分51秒2、坐标系统转换GPS设备采集的坐标数据采用大地坐标系,是一种椭球型坐标系统,为降低距离计算产生的误差,需要将大地坐标系转换为平面坐标。本课题采用的平面坐标系统为高斯投影坐标系统。坐标投影转换即将椭球面的坐标经投影公式投影到平面。高斯投影的基本思想是将子午线(轴子午线)两侧一定范围内的地图投影到椭圆柱面上,再将此柱面展开为投影平面,如图3-6所示。Nx中央子午线OyS图3-6坐标转换示意图Figure3-6Coordinatetransformation坐标转换公式(,)XYhBL(,)见公式(3-1)至(3-9)。-18- 第3章公交车行驶时间计算与影响因素分析24AA2XMNBTCCtan594224(3-1)62A6158TT270330CTC72035AA2YFENATCTT1C518TC1458(3-2)61202Tbtan(3-3)22CeBcos(3-4)ALLB0cos(3-5)246246eeeee3e53354MaBB(1sin24642568321024(3-6)46615e45ee35sin4sin6BB)25610243072aN(3-7)221*sineB22abe(3-8)a22abe(3-9)bBL,:大地经度,大地纬度XY,:对应于BL,经坐标转换后的新坐标ab,:椭球长短半径ee,:椭球第一偏心率和第二偏心率L:经度L所对应的子午线0本课题所采用的各项参数为WGS-84椭球体的参数值,见表3-1。表3-1椭球体参数值设置Table3-1Ellipsoidparameters参数名参数值a(长轴半径)6,378,137米b(短轴半径)6,356,752.3142米L(子午线)0117度3、数据过滤-19- 北京工业大学工学硕士学位论文GPS设备采集过程中偶尔会发生错误,具体现象如图3-7所示。黑色线条代表车辆的行驶过程,黑色点代表错误时产生的位置坐标。ab图3-7GPS采集错误示意图Figure3-7GPScollectionerror图3-7-a展示了采集的位置数据完全偏离行驶轨迹的现象。由于公交车的行驶路线固定,不会出现车辆完全偏离路线的情况,根据这一性质,设计过滤算法,排除错误数据。北京市607路公交车行驶函数图44440004442000444000044380004436000442225.9762,4435727.6454434000线路拐点y=-1.7324x+5201849.7298544320004430000445682.3156,4429739.806442800044260004424000441000442000443000444000445000446000447000448000449000450000451000图3-8公交线路函数图Figure3-8Busroutemapfunction公交车的行驶路线可以用分段函数表示,图3-8展示了北京市607路公交车行驶路线的函数图。合法数据会在该函数上存在小幅波动现象,而非法错误的数据则会远离该函数。借鉴章节2.1.4研究的支持向量回归机的设计思想,设计了基于管道的过滤算法:在公交车行驶路线抽象出的数学函数上,定义了宽为2ε的合法管道,如图3-9所示。-20- 第3章公交车行驶时间计算与影响因素分析y公交线路合法管道边界合法车辆位置非法车辆位置车辆行驶轨迹2x图3-9管道过滤算法Figure3-9Tubefilteralgorithm在管道内部的坐标点为合法位置数据,管道外部坐标点为错误位置数据。对于某个待过滤样本(x,y),首先遍历所有线路分段函数,找出距离样本点(x,y)最近的一条。其次在该分段函数上构建宽为2的合法管道。最后判断样本点(x,y)是否在管道内。管道的构建方式可以看作分段函数向上和向下平移了d个单位,如图3-10所示。yykxbd+公交线路合法管道边界ykxbdykxbdx图3-10管道构建图Figure3-10Tubeconstruct当斜率k时,分段函数ykxb构建宽为的管道上界为ykxbd,下界为ykxbd。当斜率k=时,分段函数xn构建宽的管道上界为xn,下界为xn。具体计算方式见公式(3-10)(3-11)。-21- 北京工业大学工学硕士学位论文ykxbd管道上界kykxbd管道下界(3-10)xn管道上界k=xn管道下界222dk(3-11)对于给定的坐标(x,y),根据公式(3-10)计算管道上下界,判断坐标是否处于管道内。计算方式见公式(3-12)。kxbdykxbdxy(,)处于管道内k其他(,)xy不处于管道内(3-12)nxnxy(,)处于管道内k其他(,)xy不处于管道内管道过滤的整体流程,见算法3-1。算法3-1管道过滤算法输入:公交车地理位置数据样本集D;公交线路L;合法管道宽度W;输出:合法地理位置坐标集D1D=;2for(x,y)inD:3在线路L上搜索距离(x,y)最近的分段函数l;4根据公式(3-10)(3-11)在分段函数l上构建宽为W的管道T;5根据公式(3-10)判断坐标(x,y)是否在管道T内;6if(x,y)在管道T内:7D=D(,)xy;8returnD;经数据管道过滤后的行驶路线如图3-11所示图3-11管道过滤结果Figure3-11Resultofthetubefilteralgorithm图3-7-b展示了采集的位置数据虽在公交车行驶的路线范围内,但在行驶轨迹上不合法:车辆于相邻时间tt,的地理位置距离过大,而在较短时间间隔内,ii1-22- 第3章公交车行驶时间计算与影响因素分析车辆的地理位置数据应小幅波动。为过滤这种错误情况,设计了以车辆行驶轨迹为基本的过滤算法:定义车辆行驶半径r,车辆于t时刻的位置为(,xy),车辆ittii于下一时刻t的合法位置(,xy)的范围计算见公式(3-13)。若(,xy)处于合i1ttii11ttii法范围内,则该坐标为合法坐标,否则为非法坐标,如图3-12所示。222()x(x)yyr(3-13)tititi11tiy公交线路t行驶半径ti-1ir合法车辆位置非法车辆位置车辆行驶轨迹ti+1x图3-12行驶轨迹过滤算法Figure3-12Travelingtrackfilteralgorithm对于待过滤样本(,)xy,首先按照行驶轨迹,取得其前一时刻的坐标(,)xy。其次根据设定的行驶半径r,判断(,)xy是否在以(,)xy为圆心半径为r的园内。算法3-2描述了行驶轨迹过滤算法的详细步骤。算法3-2行驶轨迹过滤算法输入:公交车地理位置数据样本集D;行驶半径R;输出:合法地理位置坐标集D1D=;2for(x,y)inD:3搜寻坐标(x,y)的前驱坐标(pre_x,pre_y);4根据公式(3-13)判断坐标(x,y)是否合法;5if(x,y)合法:6D=D(,)xy7returnD经行驶轨迹过滤算法后的行驶路线如图3-13所示:-23- 北京工业大学工学硕士学位论文图3-13行驶轨迹过滤结果Figure3-13ResultoftheTravelingtrackfilteralgorithm4、坐标投影GPS设备在采集过程中会存在误差,产生坐标位置偏离行驶线路的现象,车辆静止时尤其明显。图3-14展示了车辆行驶时的采集误差,图中较细线条为GPS采集的行驶轨迹,粗线为公交线路实际路线。可见采集坐标点在行驶线路小幅抖动。为尽可能消除该误差,最大程度还原车辆行驶路径,利用公交车行驶路线固定不变的特点添加了坐标投影处理。图3-14坐标偏移Figure3-14Coordinateoffset图3-15展示了坐标投影的处理方法,对于给定的坐标(,)xy和分段函数y=kx+b。投影后坐标(,)xy按公式(3-14)计算。算法3-3描述了坐标投影的详细步骤。xxk0ybky**xkb(3-14)xk0kk*1ykx*b-24- 第3章公交车行驶时间计算与影响因素分析y公交线路GPS采集坐标点投影后坐标y=kx+bx图3-15坐标投影Figure3-15Coordinateprojection算法3-3坐标投影输入:公交车地理位置数据样本集D;公交车行驶路线L;输出:坐标投影后的数据样本集D1D=;2for(x,y)inD:3在线路L上搜索距离(,)xy最近的分段函数l;4根据公式(3-14)计算投影坐标(,)xy5D=D(,)xy6returnD经坐标投影后的行驶路线如图3-16所示。图3-16坐标投影结果Figure3-16Resuleofthecoordinateprojection3.2.2公交车行驶时间计算为统计分析影响公交车行驶的影响因素,首先需要通过公交车历史行驶数据计算公交车到达各个站点的时间。本节将使用经3.2.1节处理得到的公交车行驶数据,计算行驶时间。具体的线路如图3-8所示。-25- 北京工业大学工学硕士学位论文本课题以最近距离为原则,计算车辆在行驶过程中与站点的距离变化。当距离变化至波谷且小于一定阈值时,认为该车辆已到达某站。以607路7号站点(民族园路)为例,图3-17记录了该线路某辆车在行驶过程中与7号站点的距离变化。通过图表可以得出,该车辆与站点的距离于13:45:18时变化至波谷,且距离为2.56小于阈值(10),则认定该车辆于13:45:18时抵达7号站点。同理得出车辆抵达8号站点的时间,两时间相减,得出该车辆从7号站点到8号站点的行驶时间。算法3-4描述了行驶时间计算的详细流程。车辆行驶过程与7号站点距离变化900800700600500400300200100013:42:5913:43:0913:43:1713:43:2713:43:3713:43:4613:43:5513:44:0613:44:1513:44:2413:44:3213:44:4213:44:5213:45:0313:45:1113:45:2013:45:2913:45:3813:45:4913:45:5713:46:0713:46:1713:46:2613:46:3413:46:4413:46:5213:47:0213:47:1013:47:1913:47:3013:47:3813:47:4713:47:59图3-17车辆行驶距离变化Figure3-17variationsofvehicletraveldistance算法3-4行驶时间计算输入:公交车地理位置数据样本集D;待求行驶路段起点坐标A;待求行驶路段终点坐标B;距离阈值V;输出:公交车行驶于A点至B点的行驶时间1在数据集D上寻找与坐标A,B距离最小且距离阈值小于V的样本;2if未找到:3return-1;4returnTTba3.3公交车行驶时间影响因素分析公交车行驶时间主要依赖于交通状况和交通路段的长度,而交通状况又依赖于时间、天气等因素。本节统计分析了3.2节计算得出的公交车行驶时间数据,结合北京市的实际交通状况,提取了交通路口数、路段距离、日期类型(工作日、休息日等)、时段、降水量和能见度6种影响因素。1、交通路口数和路段距离-26- 第3章公交车行驶时间计算与影响因素分析60006048625000504221513626)400040s43303930003530交通路口数230729交通路口数平均行驶时间1614平均行驶时间(20002024112220100010114845003691215182124行驶距离(千米)图3-18不同距离、交通路口数的平均行驶时间Figure3-18Theaveragetraveltimeofthedifferenttrafficjunctionnumberandtraveldistance本课题统计了不同交通路口数、不同路段距离条件下北京市607路公交车的平均行驶时间,如图3-18所示。当交通路口数为5个,行驶距离为3千米,公交车平均行驶时间为484秒。当交通路口数为51个,行驶距离为24千米,公交车平均行驶时间为4862秒。在此条件下,车辆的行驶距离每增长1千米,平均行驶时间平均增长201秒。统计结果显示公交车平均行驶时间会随着行驶的路段距离和交通路口数的增加而递增。2、日期类型5000486249004800470046044600451845004400平均行驶时间427143004200平均行驶时间(秒)410040003900日期类型工作日休息日节假日特殊日期图3-19不同日期类型条件下的平均行驶时间(距离26千米)Figure3-19Theaveragetraveltimeofthebusunderdifferentdatatypes由于北京市交通状况的特殊性:为有效降低机动车污染物排放,持续改善首都空气质量,在工作日的交通高峰时段的特殊区域内北京市市政府实施交通限行管理。该措施主要体现机动车车牌尾号限行规定上,导致了工作日和节假日北京市交通路况条件的不同。本课题针对这一问题提取了日期类型作为影响因素之一,-27- 北京工业大学工学硕士学位论文将日期类型分为工作日、休息日、节假日、特殊日期4种。其中特殊日期代表诸如单双号限行日(雾霾强烈预警期间、APEC会议期间)和春节等车流量小的日期。统计了607路在全程距离(26千米)的条件下的不同日其类型的平均行驶时间,如图3-19所示。统计结果显示由于特殊日期的车流量较小,交通压力不大,行驶条件优良,所以公交车的平均行驶时间较短。而由于市民休息日出行的频率较大、周末不限行等原因,造成休息日时的平均行驶时间较长。3、时段160015001496.451433.68140013001196.62120012661107.7212661100平均行驶时间959.361000885.889001030.66平均行驶时间(秒)969.52800900.8964941.6874.8857.53835.270060078910111213141516171819202122时段图3-20不同时段下的平均行驶时间(距离5km)Figure3-20Theaveragetraveltimeofthebusunderdifferenttimeperiod上下班高峰期的路况与闲时路况大不相同,课题统计了车辆在不同时段条件下的平均行驶时间。由于统计行驶全程距离可能出现跨时段情况,所以这里统计的是某一路段5km的平均行驶时间,如图3-20所示。结果显示该路公交车在7时-9时和16时-19时的平均行驶时间呈增长趋势。可见时段也是影响交通状况的因素之一。4、降水量、能见度11801170.71157.681160114011201102.74平均行驶时间1100平均行驶时间(秒)10801060晴天中雨暴雨天气图3-21不同天气下的平均行驶时间(距离5km)Figure3-21Theaveragetraveltimeofthebusunderdifferentweather天气好坏同样影响交通状况。本课题抽象出降水量和能见度两种度量方式描-28- 第3章公交车行驶时间计算与影响因素分析述天气状态。统计结果显示,在天气晴朗的条件下,车辆行驶较为顺畅,行驶5千米的平均行驶时间为1102秒。而暴雨导致导致了交通环境恶劣,同样在行驶5千米的条件下,平均行驶时间增长为1170秒。此外本节为方便描述天气状态对公交车行驶时间的影响使用了晴天、中雨、暴雨三种条件。而在下文对公交车到站时间预测模型的构建中,为使天气条件量化,使用降水量和能见度作为衡量指标。3.4公交车行驶数据相关计算的分布式处理公共安全监控系统注册的公交车辆在行驶过程中每隔1秒采集一次数据,以607路公交车为例,该线路全程平均行驶时间约4800秒,一次上下行行驶作为一趟行驶,行驶时间约为9600秒,采集9600条行驶数据。以一辆车为计算单位,假设车辆每天行驶两趟,则每天采集约19200条数据。在此数据量的前提下,使用单计算资源的计算方式对所有车辆一年的行驶数据作运算是一个非常庞大的计算任务。而对于车辆的行驶数据,不同车辆之间、同一车辆不同日期之间的行驶数据相互独立。因此以天为单位,使用分布式计算技术对该计算任务进行划分不影响最终的计算结果。本节根据这一性质,对公交车行驶时间的计算流程做了分布式拓展。最后将该分布式计算流程与单计算资源计算流程做出对比,证明本节设计的分布式处理加速了公交车行驶时间计算的流程。3.4.1公交车行驶时间的分布式计算公交车行驶数据的相关计算相对简单,使用Hadoop的编程架构过于冗余。本节设计了一套精简版分布式计算结构,帮助加速数据样本集的预处理。系统包括主控节点和计算节点,主控节点负责对公交车行驶数据总集以天为单位进行划分,并将划分好的任务通过网络通信技术传输给计算节点。计算节点按3.2节设计的计算流程计算公交车在各个路段的行驶时间。结构设计如图3-22所示。主控节点计算节点计算节点计算节点图3-22行驶时间计算的分布式处理结构Figure3-22Distributedprocessingoftravelingtimecomputing主控节点负责三个任务:计算任务的划分、计算任务的分配和计算结果的合-29- 北京工业大学工学硕士学位论文并。计算任务的划分首先从公交车行驶数据的本地文件中读取原始行驶数据,其次以天为划分单位对数据样本集进行划分,将划分好的数据块存储于缓存队列中。计算任务的分配按照先进先出原则从缓存队列中读取划分好的数据块,通过数据发送端口将数据内容发送给计算节点。当计算任务全部完成划分与分配后,发送结束标志位给计算节点。计算结果的合并监听数据接收端口,等待接收来自计算节点的计算结果,并将结果存储于本地文件中。计算节点负责数据计算与结果发送两部分。计算节点首先启动计算进程,监听数据端口,接收来自主控节点发送的计算任务并存储于本地文件中。随后按3.2节设计数据预处理与行驶时间计算流程完成该数据块的公交车行驶时间计算任务,并将计算结果存储于本地文件。同时为应对计算节点在执行计算任务发生的内存不足等突发情况,添加了守护进程,监控计算任务的执行情况。当异常发生时,重启计算进程并从本地文件中恢复数据。当计算任务接收到结束标志位时,即代表所有计算任务已分配完毕,此时启动计算结果发送进程。计算结果的发送从本地文件中读取计算结果,并通过数据端口发送给主控节点,进行计算结果的合并。该数据流图如图3-23所示。公交车行驶数据本地文件计算结果本地文件读取存储计计计算数据块数据读取算缓存算任读取数据缓存任结主控节点务务果队列分存储划合配分并数据划分数据端口线数据端口线线程程程发送发送计数据端口数据端口算守计结护守护算启动程果进进计算节点程数据块程发预处理行驶时间计算缓存送进存储存储数据本地存储计算结果本地读取存储图3-23行驶时间分布式计算的数据流图Figure3-23Dataflowoftravelingtimecomputing3.4.2对比实验为对比分布式处理的效果,本节设计了分布式处理与单机处理在运算时间方面的实验对比。实验数据采用607路公交12辆车一年的行驶数据,约6千万条。分布式处理采用1主控节点,2计算节点的结构,其中2个计算节点同机部署的方式。完-30- 第3章公交车行驶时间计算与影响因素分析成此数据集的计算任务所花费的时间见表3-2。结果显示分布式处理流程加速了数据样本的处理速度,提升约1.6倍。表3-2行驶时间计算的单机处理与分布式处理耗时对比Table3-2Timeconsumingcomparisonofsinglemachineprocessinganddistributedprocessing处理方式耗时(秒)单机处理20,523分布式处理12,6273.5本章小结本章设计了公交车于两站间的行驶时间的计算方式,包括了为降低误差的数据预处理部分与行驶时间计算部分。数据预处理方面,为精确地计算公交车地理位置距离等数据,采用高斯平面坐标系代替原始GPS的大地坐标系统,对公交车地理位置信息做了坐标系统转换、数据过滤和坐标投影三步操作,尽可能降低公交车行驶位置的误差。采用最近距离匹配的原则,设计了公交车到达公交站点时间的计算方式,得出了站点间车辆行驶时间计算的方法。之后结合北京市特殊的交通状况,抽取了交通路口数、路段距离、日期类型、时段、降水量和能见度6种主要影响车辆行驶状态的因素。最后进一步对计算流程进行了分布式拓展,在采用1主控节点、2计算节点的分布式结构下,分布式行驶数据计算比单机处理在运算速度方面提升约1.6倍。-31- 北京工业大学工学硕士学位论文-32- 第4章公交车到站时间预测算法第4章公交车到站时间预测算法公交车到站时间预测算法的准确性直接关系到公共交通服务系统的服务质量。针对现有算法泛化能力低、数据分类过于主观缺乏理论依据等问题,本章将对公交车到站时间预测算法的研究与实现进行详细描述。针对3.4节抽取出的交通路口数、路段距离、日期类型、时段、降水量和能见度6种影响因素,提出了基于随机森林的到公交车站时间预测算法。4.1算法研究与分析现有公交车到站时间预测算法大部分以神经网络、支持向量回归机为主,该类算法的本质是对输入特征(影响因素)的加权运算,适合对路段长度、交通路口数等数值型特征的学习。但该类算法不能较好的拟合非数值型特征(时段、日期类型等)与输出(公交车行驶时间)的关系。文献[28]为避免这种情况,人为地将数据按照高峰时段、低峰时段、晴天和雨天分为四类,再使用支持向量回归机分别学习。该算法分类准则主要依据经验,对天气的划分过于笼统,缺乏对历史数据的分析与评估。针对这种问题,本课题使用随机森林森林算法对影响因素进行建模。随机森林是一种Bagging算法,决策树是该算法的基本单元。其基本学习思想是在特征上对特征值的划分,而非加权运算,适合对非数值型数据的学习建模。本节将对随机森林算法的理论部分进行详细描述。4.1.1决策树决策树是一种树形结构,是随机森林算法的基学习器。结点分为内部结点和叶子结点。用决策树做分类,从根结点开始,对样本的某一属性进行测试,根据测试结果,将样本分配到其子结点,每一个子结点对应着该属性的一个取值或范围。如此递归地对样本进行测试分配,直至到达叶子结点,最后将样本分到叶子结点的类中[39][40][41]。公交行驶时间预测问题是一种回归问题,所以本课题所采用的决策树是可用于分类和回归问题ClassificationAndRegressionTree(CART树)。该算法用于回归问题的回归树描述如下:样本数据集定义见公式(4-1):Dxy11,;;xyi,i;;xym,m;m为数据样本集样本数量(4-1)其中xy,代表第i个样本,x代表第i个样本的特征向量,包含输入属性iii-33- 北京工业大学工学硕士学位论文特征和该样本在属性特征上的值,y代表第i个样本的输出。i样本的特征集定义见公式(4-2),本课题中具体的表现形式见公式(4-3),其中a(交通路口数),a(路段距离),a(降水量),a(能见度)为数值型1256特征。a(日期类型),a(时段)为非数值型特征。34Aaaan1,,,,;jn为属性集中属性数量(4-2)A交通路口数,路段距离,日期类型,时段,降水量,能见度(4-3)样本xy,,1im定义见公式(4-4):ii1jnxixi,,xi,,xi,yiR(4-4)j其中x代表第i个样本的第j个特征值,本课题中共有6个特征,相应的取i值范围见公式(4-5)。123456SSSSSSS,,,,,1S:交通路口数:正整数。2S:路段距离:正实数3S:日期类型:工作日、周末、节假日、特殊日期(4-5)4S::1,2,时段23,245S:降水量:正实数6S::能见度正实数结点值求解方式:以平方损失函数(公式(2-4))为原则,在属性集A上搜寻属性a(a∈A),以及属性a上的切分点s(s∈S),使得公式(4-6)的值最小。具体的数学表述见公式(4-7)至(4-10)。22yyiRas12(,)iRas(,)(4-6)(,)xyiiRas1(,)(,xyii)Ras2(,)22as,argminyyiRasiRas12(,)(,)(4-7)as,(,)xyRas(,)xy(,(,)Rasiiii1)2aRas1(,)=(,)|(,)xyixyiiiiDx,sa为非数值型特征(4-8)aRas2(,)=(,)|(,)xyixyiiiiDx,saRas1(,)=(,)|(,)xyiixyiiDx,isa为数值型特征(4-9)aRas2(,)=(,)|(,)xyiixyiiDx,is1Riy(4-10)R(,xy)ii将最优属性a,划分值s作为该结点的值。若集合Ras(,)或Ras(,)为空集12-34- 第4章公交车到站时间预测算法合,则该结点为叶子结点,该结点上样本输出的均值作为该节点的输出值。回归树Tx(;)的递归构建算法见算法4-1。回归树T(x;θ)的递归生成算法伪代码如下:算法4-1回归树递归生成算法输入:数据样本集D;样本属性集A;输出:以node为根结点的一棵回归树;过程:函数BuildTree(D,A);1生成结点node;2根据公式(4-7)搜寻最优特征a和最优分割值s3根据公式(4-8)(4-9)生成集合Ras(,),Ras(,)124ifRas(,)=Ras(,)=或:125将node标记为叶子结点,根据公式(4-10)计算该结点的输出值;6returnnode;7以BuildTree(Ras(,),A)作为node的左子树;18以BuildTree(Ras(,),A)作为node的右子树;29以特征a和分割值s作为node结点的分割属性;10returnnode;回归树算法的预估流程则是按照当前结点的划分特征a和划分值s对输入特征向量x进行分配。分配规则见公式(4-11)。按此流程分配直到叶子结点,将叶子结点的输出值作为该回归树模型对输入特征x的预估值。具体的算法流程见算法4-2。axs:将x分配到当前结点的左子树a为非数值型属性axs:x将分配到当前结点的右子树(4-11)axs:将x分配到当前结点的左子树a为数值型属性axs:x将分配到当前结点的右子树算法4-2回归树递归预估算法输入:待预估样本特征向量X;回归树根结点node;输出:该回归树对特征样本X的预估值;过程:函数Predict(node,X);1ifnode为叶子结点:2returnnode的输出值;3提取当前结点node的划分特征a和划分值s;4ifa为非数值型特征:-35- 北京工业大学工学硕士学位论文算法4-2回归树递归预估算法输入:待预估样本特征向量X;回归树根结点node;输出:该回归树对特征样本X的预估值;过程:函数Predict(node,X);a5ifxs:6returnPredict(node.left,X);7else:8returnPredict(node.right,X);9else:a10ifxs:11returnPredict(node.left,X);12else:13returnPredict(node.right,X);4.1.2随机森林随机森林(RandomForest)由L.Brieman提出,是一种具有强大性能的多用途分类与回归算法[42][43][44]。随机森林由多棵随机树构成,以多棵随机树输出的平均值作为预测结果。随机树是决策树的一种变体,即在决策树构建过程中,引入随机性质:1、输入特征向量的随机性原决策树的学习算法的输入特征向量为样本特征属性的全集A,而随机树的输入特征向量从全集A中随机选择n个特征(n≪N,N=|A|)。2、训练样本的随机性用于决策树的训练样本通过对原始样本集D的自助采样(bootstrapsampling)得到。随机森林算法提出者建议随机选择的属性子集的大小为logA,自助采样2法采集的样本数量为D。由于本课题在第3章提取出6种影响特征,固此处的属性子集大小选择为3(log62.58)。2随机森林算法详细流程和自助采样流程见算法(4-3)(4-4)。算法4-3随机森林生成算法输入:样本集X;样本属性集A;随机树数量N;输出:随机森林模型F1F2foriin1:N:-36- 第4章公交车到站时间预测算法算法4-3随机森林生成算法输入:样本集X;样本属性集A;随机树数量N;输出:随机森林模型F3DBootstrapSampling(D)4ARandomSelect(A)5根据算法4-1构建回归树tree6F=Ftree7returnF随机森林的预估流程则是使用模型下的所有随机树对输入特征向量x进行预估,最后将所有随机树的预估结果的平均值作为该随机森林对输入特征向量x的预估值。具体的算法按流程见算法4-4。算法4-4随机森林预估算法输入:样本特征向量X;随机森林模型F;输出:该随机森林对特征向量X的预估值;1result=02fortreeinF:3根据算法4-2计算随机树tree对特征向量x的预估值v;4result=result+v5returnresult/|F|4.2基于随机森林的公交车到站时间预测算法回归树是随机森林的基本组成,在损失函数的选择上具有多种形式,由于本文解决的是到站时间预估问题,即回归问题,所以本课题选择了适用于回归问题1的平方损失函数。到站时间预测算法的输入由以下6种组成:交通路口数(x)、23456路段长度(x)、日期类型(x)、时段(x)、降水量(x)、能见度(x)。算法输出为公交车在该路段上的行驶时间的预估值。实验数据采用经第3章行驶数据计算得出的数据样本24万余条,每条包括上述的6种特征值和在该特征值条件下的行驶时间。实验从总数据样本集中随机采集了18万余条作为公交车到站时间预测算法的训练数据,剩余6万余条作为衡量算法质量的测试数据。公交车到站时间预测算法的基本单元随机树的输入特征数量设置为3个。分别构建了包含50、100、200、400、800棵回归树的4种随机森林模型作为实验对比。具体的算法参数设置见表4-1。-37- 北京工业大学工学硕士学位论文表4-1公交车到站时间预测算法参数设置Table4-1Busarrivalpredictionparamaters随机树数量(棵)随机树输入特征数量自助采样样本数量50100200318万400800课题除了以基于随机森林的到站时间预测算法中随机树数量的不同作纵向对比以外,同时将该算法与历史平均算法、神经网络算法、决策树算法、支持向量回归机算法作横向对比。神经网络算法所用的结构为3层神经网络,其中输入层包含6个输入特征,隐藏层包含10个神经元,输出层为1个输出单元,激活函数选用ReLu函数,见公式(2-17)。支持向量回归机的核函数选用径向和函数(RadialBasisFunction,RBF),见公式(4-12)。xy222kxy(,)e(4-12)算法质量的衡量标准采用平均绝对百分比误差(MeanAbsolutePercentageError,MAPE)。误差越低代表算法的泛化能力越强。误差计算方式见公式(4-13)。myy1iiMAPE*100%myi1im:测试样本数量(4-13)y:第i个测试样本的公交车行驶时间的实际值iy:第i个测试样本的公交车行驶时间的预估值i实验结果见表4-2,4-3。表4-2基于随机森林的公交车到站时间预测算法误差对比Table4-2ErrorcomparisonofBusarrivaltimepredictionalgorithmbasedonRandomForest使用原始GPS大地坐标系作数据预处理条件下使用高斯平面坐标系作数据预处理条件随机树数量的预估误差(%)下的预测误差(%)5024.3123.8910023.2422.3720021.1720.7340020.8520.6180020.7320.43表4-2记录了随机森林中随机树数量的不同对预测效果的影响。实验结果表明,随着随机树数量的增加,随机森林的预测误差呈现降低趋势。以使用高斯平面坐标系作数据预处理条件为例,随机树数量每次翻倍后,预测误差平均下降0.87%,其中当随机树数量由100提升到200时,预测误差下降最快,降低1.64%。但当随机树数量达到一定程度时(本文实验为200棵随机树),误差将降低缓慢,同时过大的随机树数量也加重了训练任务。虽然可以采用分布式计算的方式加速-38- 第4章公交车到站时间预测算法训练,但同样会占用计算资源,实际应用中对随机树数量的选择采取折中的方式。实验结果也表明相对于使用原始GPS大地坐标系作数据预处理,使用高斯平面坐标系作数据预处理的预测误差平均降低0.454%,当随机树数量为200时,误差差距最大:0.87%。证明了使用高斯平面坐标系作数据预处理的预测效果优于使用原始GPS大地坐标系作数据预处理。表4-3不同算法的预测误差对比Table4-3Errorcomparisonofpredictunderdifferentalgorithm算法名称平均绝对百分比误差(%)历史平均模型24.83神经网络23.65决策树23.57支持向量回归机21.67随机森林(高斯平面坐标系,随机树数量=800)20.43表4-3记录了不同算法的公交车到站时间预测误差,采用了效果最好的高斯平面坐标系作数据预处理同时随机树数量为800的随机森林模型,实验结果显示基于随机森林的公交车到站时间预测算法比算法对比中效果最差的历史平均模型的预测误差低4.4%,比支持向量回归机的预测误差低1.24%。此外由随机森林算法性质可知,其基本单元(随机树)之间相互独立,因此使用分布式计算的方法对随机森林模型进行训练对模型结果不会产生影响,在分布式训练过程上优于神经网络等其他使用梯度下降为基本求解方式的算法。同时由于基本单元(随机树)训练的基本思想是对特征值的划分,所以相较于其他基于特征值权重组合的算法,随机森林算法更适合对诸如日期类型等非数值型数据进行建模。并且在每一棵随机树的训练过程中融入了特征选择,即当特征数量过多时,可以过滤掉对输出结果影响较小的特征,以此避免算法过拟合的现象。例如在本实验中的具有800棵随机树的随机森林模型中,选择对路段距离进行划分的节点数量最多,占40.8%,而对能见度划分的节点数量最小,仅占3%。可见基于随机森林的预测算法重点关注了路段距离这一特征,与笔者认为距离对行驶时间的影响最大的观点相同。具体的特征划分比例见表4-4。表4-4特征划分比例Table4-4Ratiooffeatures特征名称所占比(%)路段距离40.8时段28.9交通路口数13.8日期类型8.8降水量4.8能见度3-39- 北京工业大学工学硕士学位论文4.3公交车到站时间预测算法的分布式训练与预估随机森林作为一种Bagging算法,其基学习器之间相互独立,基学习器之间的训练与预估互不影响。根据这一性质,设计了基于随机森林的公交车到站时间预测算法模型的分布式训练与预估系统,解决大规模数据集训练度高的问题。4.3.1到站时间预测算法训练的分布式训练交车到站时间预测算法模型的分布式训练结构与公交车行驶数据的分布式处理结构相同:一主控节点负责分配任务,多个计算节点分布式计算,如图3-18。主控节点包含任务划分、任务分配、结果合并三个部分。与数据预处理的分布式计算相比较,由于计算任务划分需要对样本集进行自助采样,当采样数量与样本数量相同时会占用大量内存,因此主控节点的计算任务划分和计算任务分配进程间的通信由共享内存(数据缓存队列)改为共享内存(文件缓存队列)与共享本地文件相结合的方式。划分进程首先从本地的样本文件中读取数据,通过自助采样得到训练样本集,再将训练样本存储于本地文件中,将文件信息,包括文件路径、文件大小、样本条数等信息存储于文件缓存队列中。任务分配进程首先从文件缓存队列中按先入先出原则读取文件信息,按照文件信息从本地磁盘的指定位置读取样本数据,最后通过数据发送端口将训练样本发送给计算节点。计算结果合并进程监听数据接收端口,接收来自计算节点的模型训练的结果,并将结果存储于本地文件中。计算节点负责模型训练与模型结果发送两部分。模型训练进程与3.3节设计的数据接收与备份的处理方式类似。监听数据端口,接收来自主控节点发送的训练任务,并备份于本地文件中。到站时间预测算法训练方面,按4.1-4.2节研究的回归树生成步骤,以一棵回归树为生成单位,使用接收的训练样本集生成回归树。并且由于回归树生成过程中的左子树与右子树生成流程相同,因此在训练任务对回归树根结点完成特征选择与特征值划分后,可开启两个子线程,分别完成左子树和右子树的构建。在计算资源充裕的条件下,可按照此思路继续拓展子线程,充分利用计算机多核的优势。在完成当前训练样本集的回归树的生成任务后,将模型的数据内容存储于本地文件中。具体的数据流图如图4-1所示。-40- 第4章公交车到站时间预测算法模型训练样本文件计算结果本地文件读取读取计计计算数据块读取文件缓存队列数据读取算缓存算任任结主控节点务务果读取存储分划合配分并本地文件存储自助采样数据端口线数据端口线线程程程发送发送回归树根结点左计数据端口数据端口算守子树训练线程计结护算守护启动启动程果进进计算节点程数据块回归树根结点启动回归根根结点右程缓存发划分子树训练线程送进存储存储存储数据本地存储计算结果本地读取存储图4-1到站时间预测算法的分布式训练Figure4-1Dataflowofbusarrivaltimepredictiontraining4.3.2到站时间预测算法的分布式预估基于随机森林算法的公交车到站时间预估过程的基本计算单位是回归树的预估,由于回归树之间的预估过程相互独立,因此设计了整个随机森林的分布式预估结构。包括到站时间预估模型的加载(模型派发)和预估任务的计算两部分。模型的加载即将组成随机森林的多棵回归树均匀地派发给各个计算节点,每个计算节点持有部分回归树。例如若随机森林中包含600棵回归树,分布式预估系统包含3个计算节点,则每个计算节点持有200棵回归树的数据。首先主控节点从训练好的模型文件中读取随机森林的数据,将数据以回归树为单位进行划分,将划分好的回归树发送给计算节点。计算节点接收回归树数据后,将其还原成可调用的内存程序,存储于回归树列表中。预估任务的计算即对新的待预估数据:给定输入特征和相应的数值(交通路口数、时段等),求出在该数值下的公交车行驶时间的预估值。主控任务读取预估任务后,将其派发给所有计算节点。计算节点针对接收的特征向量,使用回归树列表中的回归树集,对特征向量进行预估,最后将预估结构发送给主控节点。主控节点汇总来自计算节点的预估结果并求解预估结果的均值得出到站时间预测算法的最终解。除此之外,当计算节点的守护进程检测到预估任务崩溃后,会首先从本地模型文件中还原回归树,再启动回归树的预估进程。在此期间由于计算节点的崩溃,主控节点无法收到来自该计算节点的预估结果,导致最终的预估结果无法快速得到。而公交车到站时间的预估一般为在线服务,需要实时地提供服务数据给用户。-41- 北京工业大学工学硕士学位论文为解决这一问题,在主控节点汇总计算结果时添加超时设置。在预估任务派发和汇总中启动定时任务,超出规定时间还未得出结果时,结束这一计算节点的等待。虽然这一做法变向减少了到站时间预测模型中的回归树数量,降低了一些预测精度,但提升了整个预估系统的稳定性。具体的数据流图如图4-2所示。随机森林模型文件预估任务预估结果读取预模数据端口回归树数据数据读取模估读取缓存求均值主控节点型缓存队列型结分读果存储配取合线进并回归树数据数据端口结果缓存程程进程发送发送回回数据端口归数据端口归守树树护守护构启动预进计算节点造构造回归树估程数据块回归树还原进预估进输入数据程程存储存储本地文件回归树列表图4-2到站时间预测算法的分布式预估Figure4-2Dataflowofbusarrivaltimepredict4.3.3对比实验为对比分布式处理的效果,本节设计了分布式处理与单机处理的实验对比。分布式处理采用1主控节点,2计算节点,2计算节点同机部署的结构。分别设计了到站时间预测算法训练与预估的两种实验。预测算法训练实验采用的训练数据为第3章得出的行驶时间数据约18万条,到站时间预测算法参数设置为200棵回归树。表4-5展示了算法训练方面单机处理与分布式处理的耗时结果。结果显示使用分布式训练结构加速了预测算法对数据的学习建模速度,提升约1.69倍。表4-5到站时间预测算法训练的单机处理与分布式处理耗时对比Table4-5Timeconsumingcomparisonofbusarrivaltimepredictiontraining处理方式耗时(秒)单机处理114,375分布式处理67,535到站时间预估实验采用1000条样本作为测试数据,耗时结果见表4-6。-42- 第4章公交车到站时间预测算法表4-6到站时间预测算法预估的单机处理与分布式处理耗时对比Timeconsumingcomparisonofbusarrivaltimepredict处理方式耗时(秒)单机处理637分布式处理458实验结果显示,使用分布式处理预估流程,速度较单线程模型提升约1.39倍。单线程模式下,处理每条样本时间约为637毫秒。分布式模式下,处理每条样本时间约458毫秒。经分析,分布式预估的加速程度低于分布式训练的加速程度的主要原因在于网络通信方面。预估处理对每条样本的计算任务派发都需要建立网络连接,而对于预估计算来讲,每一棵随机树的预估计算时间约3毫秒,所以对于分布式预估来讲分布式处理中有大部分时间花在了建立网络连接上。4.4本章小结本章简要分析了现有公交车到站时间预测算法对于非数值型特征缺乏学习能力的缺陷。其次针对第3章提取出的影响因素,特别是时段等非数值型数据,使用随机森林算法完成公交车到站时间预测模型,并将模型结果进行了比对。实验结果表明随机森林算法具有较低的误差,在回归树数量800的条件下,误差为20.43%,证明了该算法的有效性。最后为加速公交车到站时间预测模型的训练与预估过程,设计了分布式训练预估系统,为大数据集的学习提供了技术方案-43- 北京工业大学工学硕士学位论文-44- 第5章公交车到站时间预测服务系统的设计与实现第5章公交车到站时间预测服务系统的设计与实现为满足市民对公共出行的需求,减轻城市交通压力,本课题设计实现公交车到站时间预测服务系统,为用户出行提供公交线路查询服务、公交车实时位置查询服务和到站时间预测服务三种服务。5.1公交车到站时间预测服务系统需求分析本课题基于随机森林算法,提出了一种以交通路口数、时段、路段距离、日期类型、降水量、能见度6种特征为输入的到站时间预测算法,并将该算法应用于实际中。除到站时间预测服务以外,课题还设计了公交线路查询服务和公交车辆实时位置查询服务。5.1.1场景描述(1)用户通过安装有公交车到站时间查询服务应用的手机,选择具体的服务业务(线路查询、位置查询、到站时间查询)。(2)用户输入待查询信息(线路编号、车辆信息、目的站点等),点击查询。(3)等待服务系统服务响应后,在移动应用上显示服务结果。(4)用户得到服务结果后,规划出行方案。5.1.2功能需求(1)安装于公交车上的安控终端设备每隔1秒采集一次行驶数据(地理位置信息、时间、加速度等),每隔10秒将采集到的数据上传于安控服务器。(2)安控服务器接收行驶数据,将数据存储于数据库中。(3)移动应用接收用户的服务需求。对于线路查询服务,以待线路编号作为请求内容;对于车辆位置服务,将待查询车辆作为请求内容;对于到站时间查询服务,将待查询车辆、目的站点作为请求内容。(4)移动应用将具体的服务请求发送给服务系统。(5)服务系统接收服务请求后,做出相应的处理判断。对于线路查询服务,以线路的坐标集作为服务结果;对于车辆位置查询服务,将车辆的地理位置信息作为服务结果;对于到站时间预测服务,将待预测车辆到-45- 北京工业大学工学硕士学位论文达目的站点的预估时间作为服务结果。(6)服务系统将服务结果响应给移动应用。(7)移动应用将得到的服务结果通过文本、地图等方式展现给用户。安安服移控数控务动用服据设系应户务库备统用器图5-1服务系统数据流图Figure5-1Dataflowofservicesystem5.1.3非功能需求(1)实时性:由于车辆实时位置信息和到站时间预测信息具有时效性,为保证用户得到的服务结果尽量可靠,需要服务系统可以及时地响应服务请求。(2)可拓展性:现阶段研究的服务系统提供线路查询、位置查询和到站时间查询三种服务。为保证未来可以方便快捷地接入更多的交通服务信息,需要设计一个具备高扩展性的服务系统。(3)稳定性:服务系统作为在线系统,直接面向用户,需要保证系统的稳定性以面对用户的服务请求。5.2公交车到站时间预测服务系统架构设计本课题依托公共安全监控系统,以该系统为基础架构,在其上设计了一套服务系统。监控系统为服务系统提供车辆的数据支持,服务系统利用提供的数据,为市民的出行提供公交线路查询、公交车辆实时位置查询和到站时间查询三种服务。服务系统包括应用服务器和移动应用软件两部分。应用服务器通过统一的数据交互模块与监控服务应用进行数据交互,获取公交车的行驶数据。通过具体的服务模块对数据进行加工计算得到服务结果。移动应用软件通过网络通信向服务应用层发送服务请求,得到请求结果后在移动应用程序上进行展示。技术架构如图5-2所示。-46- 第5章公交车到站时间预测服务系统的设计与实现应用服务器移动应用数据模块服务请求网络公共安全监控系统网络通信通信服务模块结果展示图5-2公交服务系统设计图Figure5-2Busservicesystemdesign5.3应用服务器详细设计应用服务器主要负责向移动应用软件提供服务接口。当移动应用提交服务请求时,服务应用首先解析请求类别(线路查询服务、到站时间预测服务),根据请求类别从数据库或监控应用服务方读取相应的数据,并对其作相应的运算,最终将计算结果作为服务结果响应给服务调用方(移动应用)。根据这一流程将服务应用层分为数据模块和具体服务模块两部分,将数据与具体服务隔离,提升服务系统的可维护性和可拓展性。5.3.1数据模块数据模块负责为具体的服务业务提供与数据库的交互接口。公交线路服务业务在交互接口上进行二次封装,使用接口中的表查询,表内容查询等方法完成各自的需求,如图5-3所示。公交线路数据接口数服数据库务据交公交车辆实时位置数据接口业模块互务接调口用到站时间预测数据接口数据库图5-3数据模块设计Figure5-3Datamodeldesign数据库交互接口(DatabaseOperator)包含数据库ip地址、表名等数据,封装了数据库连接、数值查询等基本操作。此外由于服务系统的服务业务以数据查询为主,没有数据删改的需求,所以为保证数据库的安全性,该接口未封装对数据的删改操作。3个服务业务数据相关接口在数据库交互接口的基础上,进行二次封装。使用数据库接口提供的操作完成各自的数据查询需求。-47- 北京工业大学工学硕士学位论文公交线路数据接口(BusLineDataProvider)以待查询公交线路编号为输入,从数据库中公交线路表中查询该路线路的信息。线路信息通过公交车行驶路线中的路口拐点坐标、站点坐标和全程距离来表达。公交车辆实时位置数据接口(BusPositionDataProvider)以待查询公交线路编号为输入,从数据库中查找当前时间正在运营的公交车辆,并读取车辆的安控数据,从中解析出地理位置信息(经纬度),将其作为接口的调用结果。到站时间预测数据接口(ArrivalTimeFeatureProvider)以带预测车辆编号为输入,从数据库中查找当前时间的降水量,能见度(输入特征之一),并根据当前日期从数据库中匹配该日期具体的日期类型(工作日、周末、节假日、特殊日期),同时查找带预测编号车辆的实时地理位置。最后将车辆地理位置、降水量、能见度和日期类型作为接口的调用结果。4个模块具体的类关系见图5-4。DatabaseOperator-ip:string-port:string-database_name:string-table_name:string-user_name:string-password:string+connect():bool+disconnect():bool+select():List>BusLineDataProviderBusPositionDataProviderArrivalTimeFeatureProvider-operator:DatabaseOperator-operator:DatabaseOperator-operator:DatabaseOperator-bus_line_no:string-bus_no:string-bus_line_no:string+get_bus_position(string):List-time:date_time+get_bus_line_info():BusLine+get_feature():ArrivalTimeFeatureBusLineArrivalTimeFeature-distance:int-traffic_junction:int-inflection_coordinates:List-distance:double-stations:List-date_type:DateType+get_distance():int-period:int+get_inflection_coordinate(int):Point-precipitation:double+get_station(int):Station-visibility:double-position:PointStation<<枚举>>-coordinate:PointDateType-station_name:string+get_coordinate():PointPoint-WORKDAY+get_station_name():string-WEEKEND-x:double-HOLIDAY-y:double-SPECIAL+get_x():double+get_y():double图5-4数据模块的类图关系Figure5-4Classdiagramofdatamodel-48- 第5章公交车到站时间预测服务系统的设计与实现5.3.2服务模块服务模块直接面向用户,使用数据模块提供的数据,为移动应用程序提供公交线路查询、公交车实时位置查询和公交车到站时间查询三种服务业务。为了做到服务与服务间的低耦合,同时也为了方便未来新的服务业务的接入,为服务模块设计了服务注册与查找的功能。每一种服务定义唯一的服务id和与之相关的服务操作,使用哈希表的数据结构对所有服务进行管理。当移动应用发起服务请求时,服务模块首先解析请求中的服务id字段,通过服务id字段访问服务注册表(哈希表数据结构),查找与之相关的服务提供者,并将服务请求分发给该服务业务。服务提供者使用相应服务操作响应服务请求,得出服务结果。最后将服务结果发送回移动应用。服务请求由移动应用发出,包括请求服务id,请求内容两种字段。为方便完成数据的解析工作,课题采用json数据格式对服务请求数据进行封装。每一个请求为一个json词典对象,词典中存储服务id和请求内容相应的键值对。具体定义格式见表5-1。以下列展示的请求数据为例,经解析后,该请求的服务id为serviceid,请求内容为空。表5-1服务请求数据格式Table5-1Dataformatofservicerequest参数名称数据类型说明id字符串标记请求服务的idcontentJsondict请求内容服务请求数据样例{“id”:”serviceid”,“content”:{}}对于具体的服务业务,当有新的服务需要接入时,通过动态的类加载机制,将服务程序加载进服务系统中。从设定的服务信息中,读取服务id,通过哈希映射,存入服务注册表中。服务模块的具体设计如图5-5所示。-49- 北京工业大学工学硕士学位论文服务模块服务端口移动应用服务请求分发调用服务数据应线路信息查询服务车辆实时位置查询服务到站时间查询服务访问用注册服务注册表控制端口管理员图5-5服务模块设计Figure5-5Servicemodeldisign为使服务注册表可以使用统一的方法管理各类服务,设计了基本的服务接口(ServiceInterface)。接口中包含服务编号(id)、服务名称(service_name)、存活标记位(is_alive)和服务操作的抽象函数(process)。服务编号是具体服务的唯一标识符,服务管理器(ServiceManager)以服务编号作为key值,映射到服务注册表中的服务具体位置,从而完成服务的注册、删除、调用等管理操作。服务名称用于简要描述服务内容。存活标记位指示该服务是否可以调用。服务操作则为服务响应函数,处理服务请求(ServiceRequest),完成服务流程最终得出服务响应(ServiceResponse)。每个具体的服务继承服务接口,实现具体的服务操作(process)。通过高级程序语言的多态设计,通过操作具体服务的基类,完成对各个具体服务的管理。基本服务接口类设计如图5-6所示。ServiceRequestServiceResponseServiceManagerServiceInterface-service_registry:Map-id:string+get_service_number():int-service_name:string+get_service():ServiceInterface-is_alive:bool+regist_service():bool+process():ServiceResponse+delete_service():bool图5-6服务接口类设计Figure5-6Classdiagramofserviceinterface本课题根据实际出行需求,设计了公交线路查询、公交车辆实时位置查询和到站时间查询三种服务。每种服务继承上述的服务接口,实现具体的服务操作。1、公交线路查询服务公交线路查询服务为移动应用提供公交线路数据。服务以待查询线路编号为-50- 第5章公交车到站时间预测服务系统的设计与实现输入,以线路数据,包括线路中拐点坐标和站点坐标为输出。当请求来临时,从请求内容中解析待查询线路编号,从数据库中读取该线路的相关坐标信息(拐点、站点)。最后将坐标集组成列表并序列化成字符串,作为服务结果响应服务请求方。该请求的请求内容为一个jsondict,包含待查询线路编号和待查询上下行两个内容相应的键值对,具体格式见表5-2。以下列展示的请求内容为例,待查询公交线路编号为607路,待查询行驶方向为上行。表5-2公交线路查询请求内容数据格式Table5-2Dataformatofcontentofbuslinerequest参数名称数据类型说明line_no字符串待查询线路编号direction字符串待查询上下行公交线路查询请求内容样例“content”:{“bus_no”:”607”,“direction”:”upward”}请求结果是对线路各个拐点坐标和站点坐标的封装,由于该坐标数据为坐标集形式,所以具体采用jsonarray的封装格式。请求结果的数据为jsondict,包含拐点坐标(line_position),站点坐标(station_position)两内容相应的键值对,见表5-3。键拐点坐标对应值为jsonarray,数组中每一个元素为jsondict,包含拐点坐标经度(lng)、纬度(lat)相应的键值对见表5-4。键站点坐标对应值为jsonaraay,数据中每一个元素为jsondict,包含站点坐标经度(lng)、纬度(lat)、站点名称(name)、站点编号(id)4种信息,见表5-5。表5-3公交线路查询请求结果内容数据格式Table5-3Dataformatofcontentofbuslineresponse参数名称数据类型说明line_positionJsonArray线路拐点坐标集station_positionJsonArray线路站点坐标集表5-4线路拐点坐标集数据格式Table5-4Dataformatofcontentoflineposition参数名称数据类型说明lng浮点型拐点经度lat浮点型拐点纬度表5-5线路站点坐标集数据格式Table5-5Dataformatofcontentoflinestation参数名称数据类型说明lng浮点型站点经度-51- 北京工业大学工学硕士学位论文lat浮点型站点纬度name字符串站点名称id整型站点编号实际应用中由于数据库的连接查询操作较为耗时,所以课题在数据库与服务应用方之间添加了线路数据缓存机制。当出现线路查询需求时,首先访问线路数据缓存,若缓存没有该线路数据,则向数据库发出连接查询请求,并将查询到的线路数据存储于缓存中。若缓存中存在该线路数据,则直接从缓存中读取。缓存中线路数据的容量根据机器内存大小而定,当缓存填满时,采用近期最少使用原则(LeastRecentlyUsed,LRU),即置换出最近最久未访问的线路数据,将新访问的数据填入到缓存中。该部分的处理流程图和类设计图如图5-7,5-8所示。开始解析请求提取线路编号缓存中是否否访问数据库更新缓存存在数据是读取线路数据响应请求方结束图5-7线路查询处理流程Figure5-7buslineserviceflowchartServiceInterfaceServiceResponseLRUCacheBusLineService-data_map:Map-cache:LRUCacheServiceRequest-data_list:List+process():ServiceResponse图5-8公交线路查询类设计Figure5-8Classdiagramofbuslineservice2、车辆实时位置查询服务车辆实时位置查询服务为移动应用提供对在线公交车地理位置信息的查询。服务以待查询公交线路为输入,以当前时间所有正在运营的车辆地理位置数据(经纬度)为输出。当请求来临时,从请求内容中解析待查询线路,和行驶方向,从数据库中读取该线路所有正在运营的车辆,并从筛选出所有行驶方向符合的车辆地理位置数据。最后将多辆车的地理位置数据作为请求结果,响应请求方。该服务的请求具体内容同线路查询服务请求,见表5-2。-52- 第5章公交车到站时间预测服务系统的设计与实现请求结果为待查询线路上正在运营的车辆的位置数据集,同样采用jsonarray对各个车辆数据进行封装。请求结果顶层为jsondict,包含车辆数据集(bus_position),当前时间(time)两种键值对见表5-6。车辆数据集为jsonarray,每个元素代表每一个车辆的信息,包含经度(lng),纬度(lat),车辆编号(id)见表5-7。表5-6车辆位置查询请求结果数据格式Table5-6Dataformatofcontentofbuspositionresponse参数名称数据类型说明bus_positionJsonArray车辆位置坐标集time字符串查询时间表5-7车辆位置数据格式Table5-7Dataformatofcontentofbuspositiondata参数名称数据类型说明lng浮点型经度lat浮点型纬度id整型车辆编号通常用户在查询车辆实时位置时,主要关心与自己同向的公交车,所以如何从车辆的行驶数据中提取中该车辆的行驶方向是本节需要解决的问题。问题的解决思路为通过将当前时刻的车辆位置坐标与前一时刻的位置坐标相比较,设定上行行驶为标准行驶方向,若当前位置超前则为上行行驶,若当前位置落后则为下行行驶,如图5-9所示。yy上行方向路段i-1路段i-1公交线路t时刻车辆位置t-1时刻车辆位置拐点坐标m路段i路段i拐点坐标n路段i+1路段i+1axxb图5-9行驶方向判断图示Figure5-9Traveldistancecompute对于待评估车辆k,首先查找该车辆当前时刻t和前一时刻t-1时的坐标点P,P(本文设定为前4分钟)。根据最近距离原则判断P,P所处的路段编号,tt-1tt-1路段用拐点坐标表示。若P,P处于同一路段,如图5-9-a所示,设定好标准上行tt-1方向后,拐点坐标m为路段i的起始坐标,拐点坐标n为路段i的终点坐标。通过计算P,P与起始坐标m的距离D,判断车辆的行驶进程,若DD则tt-1P,mP,mtP,mt-1-53- 北京工业大学工学硕士学位论文表示当前车辆正远离拐点坐标m,行驶方向为上行行驶。否则为下行行驶。若P,P处于不同路段,其中P所处路段超前于P所处路段,如图5-9-b所示,则tt-1tt-1表示当前车辆正从路段i-1驶向路段i+1,为上行行驶。具体流程见算法5-1。算法5-1车辆行驶方向判断算法输入:车辆编号No;输出:该车辆的行驶方向Direction;1获取系统当前时间T;2从数据库中读取车辆编号为No,采集时间为T和T-1的两条安控数据3从安控数据中解析车辆地理位置信息P,Ptt-14在公交上行线路上搜寻P,P所处的路段L,Ltt-1tt-15ifLL超前于:tt-16Direction=上行7elseifLL落后于:tt-18Direction=下行9else:/**所处路段相同**/10计算P,P与路段L起始坐标m的距离D,Dtt-1P,mtt-1P,m11ifD>D:P,mtt-1P,m12Direction=上行13else:14Direction=下行15returnDirection此外不同于安控应用对公交车辆原始安控数据的需求,服务应用的用户只关心车辆在线路上的位置,所以在获取了相应车辆的坐标信息后,使用坐标预处理工具(DataPreprocessor)对坐标信息进行过滤与投影(3.2.1节),最终得出贴合于公交线路行驶的公交车地理位置数据。公交车实时位置服务的整体流程与相关类设计如图5-10,5-11所示。访问数据库解析待查询线路开始得出在线车辆坐编号与行驶方向标信息计算行驶方向结束响应请求方坐标过滤与投影过滤不符的坐标图5-10车辆位置查询处理流程Figure5-10Buspositionserviceflowchart-54- 第5章公交车到站时间预测服务系统的设计与实现ServiceInterfaceServiceResponseDataPreprocessorBusPositionService+wgs84_to_gauss():Point-data_processor:DataPreprocessorServiceRequest+gauss_to_wgs84():Point+process():ServiceResponse+projection():Point图5-11车辆位置查询类设计Figure5-11Classdiagramofbuspositionservice5.3.3公交车到站时间查询服务公交车到站时间查询服务是本课题重点研究内容,该服务为移动应用提供对在线公交车的到站时间预测查询。服务以待查询公交车编号、目的站点为输入,以公交车到站时间的预估值作为服务结果。该请求的请求内容为一个jsondict,包含待查询车辆编号和待查询目的站点两个内容相应的键值对,具体格式见表5-8。以下列展示的请求内容为例,待查询车辆编号为13037号,待查询目的站点编号为13号车站。表5-8到站时间查询请求内容数据格式Table5-8Dataformatofcontentofarrivaltimerequest参数名称数据类型说明id字符串待查询车辆编号station_no字符串待查询目的站点编号公交线路查询请求内容样例“content”:{“id”:”13037”,“station_no”:”13”}服务请求结果为待查询车辆到达目的站点的时间,包含车辆id、到站时间两种信息,见表5-9。表5-9到站时间查询请求结果数据格式Table5-9Dataformatofcontentofarrivaltimerequest参数名称数据类型说明id整型车辆编号time字符串到站时间该服务为本课题提出的基于随机森林的公交车到站时间预测算法的应用部分。根据第4章研究设计的到站时间预测算法,将该服务分为离线训练系统和在线预估系统两部分。离线训练系统为到站时间预测模型的生成系统,该系统从数据库中读取公交车行驶数据,对数据进行预处理(第3章节)得出训练样本,最后通过训练程序得出到站时间预测的模型文件。在线预估系统直接面向移动应用,在启动时加载模型文件,将文件还原为模型内存程序。当有请求接入时,使用模型预估完成请求的处理,将到站时间的预估结果作为服务结果响应给服务请求方。-55- 北京工业大学工学硕士学位论文如图5-12所示。到站时间预测服务离线训练系统在线预估系统模型模型训练模型加载文件到站时数据预处理间预估数据读取请求接口外部请求数据库图5-12到站时间预测服务结构设计Figure5-12BusArrivaltimeservicestructure1、到站时间预测算法的分布式训练系统实现离线训练系统采用4.3.1节设计的到站时间预测的分布式预估方案。根据该节设计的分布式处理流程将分布式训练与预估分为主控节点(任务划分、分配、汇总)和计算节点(任务计算、结果发送)。公交车到站时间预测的分布式训练处理流程见节4.3.1,具体实现上,主控节点中任务划分模块分为划分线程(TaskPartition)、采样模块(BoostrapSampling)、文件系统(FileSystem)和文件缓存队列(FileQueue)四部分,如图5-13。任务划分线程执行划分逻辑,调用自助采样模块,采样训练样本,将样本存于本地文件系统的文件形式中,并将采样样本文件信息(FileInfo):包括存储路径(path)、大小(size)、样本数量(num)存于文件缓存队列中。待任务划分完毕后(每棵回归树的构建需要一份样本,划分回归树数量的样本文件即划分完毕),将结束标志位置入文件缓存队列中。任务划分线程自助采样模块文件系统文件缓存队列TaskPartitionBootstrapSamplingFileSystemFileQueue自助采样循环[回归树数量]循环随机读取数据[采样数量]数据采样结果存储采样样本存储样本文件信息存储结果置入结束标志位置入结果图5-13主控节点任务划分模块时序图Figure5-13Sequencediagramoftaskpartition任务分配线程则时刻监听数据端口,等待计算节点的访问。当访问来临时从文件缓存队列中读取文件信息,根据文件信息中的路径从文件系统中相应的文件-56- 第5章公交车到站时间预测服务系统的设计与实现位置读取样本数据,最后将样本数据通过网络通信发送给计算节点。任务分配线程文件缓存队列文件系统计算节点TaskDistributionFileQueueFileSystem循环监听计算节点的访问读取样本文件信息文件信息读取样本数据数据发送样本数据图5-14主控节点任务分配模块时序图Figure5-14Sequencediagramoftaskdistribution计算结果合并模块同样监听数据端口,等待计算节点发送训练结果(回归树),将回归树序列化为字符串形式,存于本地文件中。此外由于可能出现多个计算节点同时完成训练并发送训练结果的情况,此时往一个文件中写数据会产生冲突,所以在实际进行计算结果的存储时,每个计算结果单独存储于一个文件中,等待所有训练任务训练完毕后,再将所有结果文件(回归树)合并成整体形式(随机森林)。计算结果合并线程文件系统TaskMergenceFileSystem循环监听计算节点的访问接收回归树数据创建新文件存储回归树读取所有回归树文件整合回归树为随机森林存储随机森林图5-15主控节点计算结果合并模块时序图Figure5-15Sequencediagramoftaskmergence到站时间预测算法的分布式训练系统的计算节点负责使用请求得到的训练根据4.1.2研究的回归树生成算法生成相应的回归树,并将回归树的训练结果发-57- 北京工业大学工学硕士学位论文送给主控节点进行结果的汇总。计算进程回归树构建模块文件系统主控节点ModelTrainingRegressionTreeBuilderFileSystem请求训练样本训练样本样本文件存储备份设置训练样本集生成回归树回归树模型数据存储回归树发送训练结果图5-16计算节点模型训练时序图Figure5-16Sequencediagramofmodeltraining回归树作为到站时间预测算法的基本单元,采用二叉树父结点标记法进行存储:对每一个结点,添加结点序号、父结点序号、结点位置三种属性。结点序号指示该结点的编号,编排原则为序号从1开始,从树的根结点出发,从上到下,从左到右依次编排。父结点序号指示当前结点的父结点编号。结点位置指示该结点是父结点的左子树还是右子树。整体回归树采用jsonarray结构进行存储,array中每一个元素为一个结点,具结点数据格式见表5-10。以下列内部结点内容为例,该结点编号为1,父结点编号为0(根节点没有父结点),划分特征为2号特征(路段距离),特征类型:数值型,划分数值:652。以叶子结点内容为例,结点编号为126,父结点编号64,位于父结点的右子树(position=1),由于为叶子结点,所以没有划分特征(feature=NaN),结点输出值为126。表5-10回归树结点数据格式Table5-10Dataformatofregressiontreenode参数名称数据类型说明index整型结点编号parent整型父结点编号position整型结点位置(0:左子树;1:右子树)feature字符串结点划分特征type整型特征类别(0:非数值型;1:数值型)split_value字符串结点划分特征的特征值val浮点型结点输出值-58- 第5章公交车到站时间预测服务系统的设计与实现内部结点样例叶子结点样例{{"val":70.046803,"val":126,"feature":"2","feature":"NaN","split_val":"652.000000","splitVal":"NaN","nodeType":1,"nodeType":0,"parent":0,"parent":64,"index":1,"index":72,"position":0"position":1}}公交车到站时间预测算法的分布式训练系统的具体类设计如图5-17所示。到站时间预测算法分布式训练--主控节点FileInfo-path:string-file_name:string-size:int-num:intTaskPartitionTaskDistributionTaskMergenceBootstrapSampling-file_queue:FileQueue-file_queue:FileQueue-sampling_model:BootstrapSamplingFileQueue-socket:Socket-socket:Socket-file_name:string-file_system:FileSystem-file_system:FileSystem-file_system:FileSystem-flag:bool//是否划分结束-file_system:FileSystem+start()-file_list:List+start()+start()+sampling()-sampling()+listen()+listen()-push_file_info()+send_data()+recv_data()-save_sample_fileFileSystem+write()+read()+exist()+delete()ModelTraining-socket:SocketRegressionTreeBuilder-model_builder:RegressionTreeBuilder+start()-data_set:ListArrivalTimeFeature-request_training_data()-model:RegressionTree-save_data()+set_sample_data()-build_model()+train()TreeNode-save_model()-send_model_result()-index:intRegressionTree-parent:int-position:int-root:TreeNode-feature:String-type:int-split_value:String到站时间预测算法分布式训练--计算节点-val:float图5-17到站时间预测算法的分布式训练系统类设计Figure5-17Classdiagramofdistributedtrainingsystem2、到站时间预测算法的分布式预估系统实现到站时间预测算法的分布式预估系统采用4.3.2节设计的分布式预估方案,分为预测模型的分配与预测任务的派发。预测模型的分配是把随机森林中回归树集合平均分成n份(n为计算节点数量),再将划分好的回归树子集合发配给计算节点。该流程仅把计算任务分配出去,不包含计算结果合并部分。计算节点模型分配方面在接收到回归树数据(字符串形式,存储每个节点的数据)后,将其还原成回归树的内存对象,存储于内存中,以供预估任务的使用。预测任务派发则将待预测的数据分配给所有计算节点,计算节点使用分配的回归树集合预测到站时间,最后将预估结果发送给主控节点,主控节点接收所有-59- 北京工业大学工学硕士学位论文可接收的结果后,对其求平均值得到最终的公交车到站时间的预估值。具体的时序图与分布式训练时序图类似,此处不再重复给出。详细的类设计见图5-18。到站时间预测算法分布式预估--主控节点RandomForestDistributionRandomForestPartitionRandomForestDistributionModelDataCache-tree_data:String-data_cache:Data-socket:Socket+predict()-file_system:FileSystem-tree_datas:List-file_system:FileSystem-send_data()+start()+start()RegressionTreeRecoveryPredictorRegreesionTreeSet-socket:Socket-socket:Socket-trees:RegressionTreeSet-trees:List-trees:RegressionTreeSet+start()+predict()+start()-recovery()+predict()RegressionTree到站时间预测算法分布式预估--计算节点图5-18到站时间预测算法的分布式预估系统类设计Figure5-18Classdiagramofdistributedpredictionsystem3、到站时间查询服务设计与实现到站时间预测算法以交通路口数、路段距离、日期类型、时段、降水量和能见度(3.4节)为输入,以到站时间的预估值为输出。预估系统通过特征生成器(FeatureGenerator)生成6种输入特征。其中日期类型通过检索数据库,提取当天的日期类型来获取;时段则为请求接收的时间;降水量、能见度可通过第三方天气API来提供。而行驶距离(路段距离)、交通路口数则需要通过对待预测车辆和目的站点的计算来获取。待预测行驶距离由车辆所处路段的剩余距离、车辆向目的站点行进过程中完整通过路段的距离和目的站点所处路段的起始点至站点间的距离三部分组成,如图5-13所示。因此可以通过路段累加的方式计算。首先获取待预测车辆当前位置坐标P和目的站点位置坐标P。根据坐标值计算车辆和站点所处的路段编号bsL,L(由于站点坐标固定不变,站点所处路段可提前计算结果并存于数据库bs中,使用时直接检索获取)。计算P与当前路段终点坐标m的距离作为当前路段b剩余距离;计算P与站点所处路段起点坐标n的距离作为目的站点至路段起始点s距离;计算车辆行进过程中通过的完成路段(L->L)的距离。最后将3个结bs果相加得到完整的行驶距离。若车辆与目的站点处于同一路段,则可直接将两坐标间距离作为行驶距离。-60- 第5章公交车到站时间预测服务系统的设计与实现行驶方向当前路段剩余距离Pyb完成通过路段距离路段i-1目的站点至路段起始点距离车辆位置拐点坐标m目的站点路段iPs拐点坐标n路段i+1x图5-19行驶距离示意图Figure5-19Traveldistance交通路口数的计算与行驶距离计算类似,分为当前路段剩余路口数、完整通过路段路口数和目的站点至站点起始点间的路口数3个部分。完整通过路段的路口数可直接从数据库中读取该路段包含的路口数获取。而剩余路段剩余路口数则通过坐标点的排序获得,如图5-20。对于同一路段的所有坐标点(车辆坐标、交通路口坐标、站点坐标)的坐标向量(图中线路上箭头表示),向量长度越长,表示该坐标点在该行驶方向上,越接近路段尾端。因此将该路段上所有坐标点向量化(P-P),比较向量的大小,从而得出未通过的交通路口坐标,最终未通过tm的交通路口数。yP坐标向量化拐点坐标mtP车辆位置b交通路口路段拐点坐标nx图5-20交通路口数示意图Figure5-20Trafficjunctionnumber完整的公交车到站时间查询服务流程和类设计见图5-21,5-22。解析待查询车辆访问数据库使用天气API获计算到达目的站开始编号和目的站点获取日期类型取降水量能见度点的行驶距离计算到达目的站预测算法预估将6种数据组成结束响应请求方点通过的交通路到站时间输入特征口数图5-21到站时间查询服务流程Figure5-21Busarrivaltimeserviceflowchart-61- 北京工业大学工学硕士学位论文RandomForestDistributionModelServiceInterfaceArrivalTimeFeatureProviderBusArrivalTimeModelServiceResponseBusArrivalTimeServiceArrivalTimeFeature-feature_gen:ArrivalTimeFeatureProvider-model:BusArrivalTimeModel-model:RandomForestDistributionModelServiceRequest+process():ServiceResponse+predict()图5-22到站时间查询类设计Figure5-22Classdiagramofbusarrivaltimeservice5.4移动应用程序详细设计移动应用程序直接面向用户,通过选择具体的服务业务,输入具体服务内容,等待服务器响应后,将服务结果展示给用户。移动应用分为服务请求和结果展示两部分。服务请求负责服务请求内容的封装和请求结果的解析。该模块接收用户输入的具体服务内容,将其封装成请求内容,发送给服务器。在接收服务器的请求处理结果后,从结果中解析出具体的服务内容。例如在线路查询服务中,用户通过移动应用输入待查询线路编号,移动应用将线路编号按节5.3.2中设计的请求数据格式封装成公交线路查询请求,之后将请求通过网络通信技术发送给服务器,等待服务器的公交线路查询服务模块的处理结果。在接收到线路查询结果后,从结果中解析中该线路各个拐点和站点的坐标信息。结果展示负责将无法直观展示的服务请求结果通过GIS(GeographicInformationSystem)等技术展现给用户。例如线路查询服务中,服务结果由站点、线路拐点坐标组成,用户无法直观理解该组数据。结果展示模块则通过地图展示将每个坐标点在地图上标记出来,通过线段连接,形成线路的直观展现,便于用户查看。具体应对于服务器提供的3种服务,服务请求包含了线路查询、车辆位置查询、公交车到站时间查询3种服务内容的封装与结果解析。结果展示方面,使用地图展示形式对公交线路数据、公交车辆位置数据进行展示。使用纯文字形式对公交车到站时间的预估结果进行展示,如图5-23。-62- 第5章公交车到站时间预测服务系统的设计与实现移动应用服务请求结果展示请求内容封装请求结果解析地图展示数据展示车到到线车车到线辆站车站路辆辆站路位时线辆时站位当时查置间路位间点置前间询查查信置预地地站预请询询息信估图图点估求请请息结展展名结求求果示示称果图5-23移动应用结构设计Figure5-23Applicationstructure5.4.1服务请求面对不同的服务需求,移动应用需要向服务器发送不同的请求内容。为了增强移动应用的可拓展性(方便接入更多的服务),从三类服务请求中抽象出基本请求类。该基本请求类包含了不同请求的共有方法和属性,例如请求发起方的id(用户id)等。对于共有方法的不同实现,例如请求内容的封装方式,基本请求类提供封装的方法接口(Enveloped),每一种具体的请求分别实现该接口,以达到不同请求封装不同内容的目的。基本请求类设计如图5-24所示。RequesterUserResponser-src_ip:string-id:string-src_ip:string-dst_ip:string-nickname:string-dst_ip:string-request_time:Time-phone:string-response_time:Time-request_id:string-email:string-reponse_id:stringServiceRequestServiceResponse-requester:Requester-content:JsonDict-responser:Responser-type:string-result:JsonDict+enveloped():JsonDict+parse:JsonDict图5-24基本请求类设计Figure5-24Classdiagramofbaserequest成功构造服务请求后,移动应用通过网络通信技术将请求发往服务器,待服务器处理完请求,得到请求结果后,对结果进行解析,将解析结果通过地图或纯文本方式展示给用户。在移动应用发送服务请求时,为保障异步传输,在构造完服务请求(ServiceRequest)后,启动ServiceThread线程,专门处理请求的发送与请求结果的接收。时序图设计见图5-25。-63- 北京工业大学工学硕士学位论文ServiceServer用户MainActivityServiceThread输入请求内容构造BusLineRequest启动线程,传递BusLineRequest发送请求处理请求请求结果解析请求服务内容地图、文本展示结果展示图5-25服务请求与结果展示时序图Figure5-25Sequencediagramofservicerequestandresponse线路查询请求需要获知用户想要获取线路的编号(5.3.2节),根据线路编号反馈相关信息。因此该请求模块需要等待用户输入待查询线路号、待查询行驶方向(上下行)两种信息,将信息封装成请求内容(表5-2),通过网络通信技术将请求数据发送给服务器。请求的具体实现继承自ServiceRequest,实现enveloped方法,对待查询线路编号、待查询行驶方向进行封装。等待服务器处理请求后,接收请求结果。从请求结果中解析线路拐点坐标集(line_position)和车辆站点坐标坐标集(station_position)。坐标包含其经纬度信息,除此之外,站点坐标还包含该站点的名称、站点编号两种信息。具体的类设计如图5-26所示。ServiceRequestServiceResponsePointBusLineRequestBusLineResponseStation-line_no:string-line_position:List-name:string-direction:string-station_position:List-id:int+enveloped():JsonDict+parse():void图5-26线路查询请求类设计Figure5-26Classdiagramofbuslinerequest车辆位置查询请求需接收的参数与线路查询相同:待查询线路编号与行驶方向。与之不同的是该服务的请求结果仅包含车辆位置坐标(bus_position)和查询时间(time)(表5-6,5-7)。具体的类设计如图5-27所示-64- 第5章公交车到站时间预测服务系统的设计与实现ServiceRequestServiceResponsePointBusPositionRequestBusPositionResponseBusPosition-line_no:string-direction:string-bus_position:List-time:Time+enveloped():JsonDict+parse():void-id:int图5-27车辆位置查询请求类设计Figure5-27Classdiagramofbuspositionrequest公交车到站时间预测请求需要封装待预测车辆编号和目的站点编号(表5-8)。请求结果则包含待预测车辆id和该车辆到达目的站点的时间。ServiceRequestServiceResponseBusArrivalTimeRequestBusArrivalTimeResponse-bus_no:string-id:int-target_station:id-time:Time+enveloped():JsonDict+parse():void图5-28到站时间预测请求类设计Figure5-28Classdiagramofbusarrivaltime5.4.2结果展示结果展示模块通过GIS地图展示和纯文本展示两种方式,向用户展现请求结果。其中线路信息和车辆位置信息包含地理位置数据,需要以地图方式展示;到站时间预估结果则为时间信息,可以直接使用纯文本方式展示。本课题使用的地图展示模块由百度地图开放平台提供。该平台为开发者提供iOS和Android两种版本的地图软件开发工具包(SoftwareDevelopmentKit,SDK),开发流程分为申请地图密钥、工程项目导入SDK、使用百度地图接口(ApplicationProgrammingInterface,API)三个步骤。本课题在线路展示、车辆定位显示功能上主要使用了百度地图API中地图展示、地图标注、几何图形覆盖三种接口。地图展示(MapView)是百度地图SDK提供的一种地图控件,将其置入移动应用的布局(layout)中,完成地图的展示功能。几何图形覆盖为开发者提供折线、多边形等多种覆盖物。该接口需要构造几何图形的属性(颜色、线条宽度、关键坐标等),关键坐标为几何图形的边界的拐点坐标。以折线覆盖物为例(PolylineOptions),通过方法width()设置折线宽度,方法color()设置折线颜色,points()方法传入坐标数组,设置折线坐标。最后将其置入地图中,完成图形覆盖物的显示。地图标注(OverlayOptions)为开发者提供添加地图标注的功能,通过标注-65- 北京工业大学工学硕士学位论文的覆盖可完成定位、显示关键位置等业务功能。该接口使用方法position()设置标注位置,使用方法icon()设置标注的图标,使用extraInfo方法将该标注与数据表(bundle)进行绑定,使其可携带额外的信息。例如在本课题设计的移动应用中,线路站点位置显示的标注对象里使用extraInfo方法额外携带了该站点的编号、名称等信息。除此以外标注还提供了用户点击事件等响应方法。LatLng+lat+lngPolylineOptionsOverlayOptionsMapView+points()+position()+width()+bundle()+addOverlay()+color()+icon()+extraInfo()图5-29地图APIFigure5-29ClassdiagramofmapAPI线路查询结果的展示需要在地图控件上绘制线路和站点,该模块使用地图提供的折线图覆盖物和标注覆盖物接口进行绘制。首先将请求结果中线路拐点、站点坐标(Point)转换为地图接口可处理的类型(LatLng)。其次用折线覆盖物表示公交线路,用标注覆盖物表示各个站点,将其绘制到地图中进行展示。车辆位置结果展示与线路查询展示类似,使用标注覆盖物接口展示车辆的坐标信息。此外每个站点的标注覆盖物绑定车辆编号并添加点击事件的响应。用户通过点击对应车辆跳转到该对该车辆的到站时间预估界面。到站时间预估界面以纯文字方式展示请求结果,包括待查询车辆当前目的车站、已行驶经过的车站。在此界面,用户选择目的车辆并点击查询。接收并解析请求结果后,将预估的到站时间显示移动应用中。BusPositionResponseBusLineResponseBusArrivalTimeResponseBusLineResponseBusLineExhibitionBusArrivalTimeExhibitionBusPositionExhibitionPolylineOptions-line_data:BusLineResponse-current_station:Station-position_data:BusPositionResponse-line_overlay:PolylineOptions-next_station:Station-position_overlay:OverlayOptionsOverlayOptions-station_overlay:OverlayOptions-target_station:Station-map:MapView-map:MapView-arrival_time:BusArrivalTimeResponse+exhibit():void+exhibit():void+exhibit():void+convert():voidMapView+convert():void图5-30线路信息展示类设计Figure5-30Classdiagramofbuslineexhibition5.5相关演示该小节将对公交车到站时间预测服务系统提供的三种出行服务进行原型演-66- 第5章公交车到站时间预测服务系统的设计与实现示。5.5.1登入服务图5-31服务系统登入Figure5-31Loginofservicesystem主界面输入服务系统服务器IP后,点击连接服务器。客户端会尝试访问服务器,成功后,跳转至线路选择界面。5.5.2公交线路查询图5-32线路查询服务Figure5-32Buslineservice选择待查询线路编号,选择上下行,跳转到线路显示界面。-67- 北京工业大学工学硕士学位论文5.5.3车辆位置查询图5-33车辆位置查询服务Figure5-33Buspositionservice点击查询车辆位置,显示在线车辆的地理位置。5.5.4到站时间查询图5-34车辆到站时间查询Figure5-34Busarrivaltimepredictionservice点击待查询公交车,选择目的站点,等待服务请求返回后,显示预估到达时间。5.6本章小结本章将第3、4章提出的公交行驶数据预处理方法与到站时间预测算法应用于实际系统中,依托公共安全监控系统,构建了公交车到站时间预测服务系统。从服务应用层和移动应用层两方面对服务系统进行了详细描述。最后展示了客户端的相关演示。-68- 结论结论本文主要研究了如何实现具有高实时性、低误差率的公交车到站时间预测算法,并设计实现了公交车到站时间预测服务系统,为市民出行提供公交线路查询、公交车辆实时位置显示和公交车到站时间预估查询三种服务。主要取得了以下几方面的研究成果:数据预处理与公交车行驶影响因素方面,本课题以北京市607路公交车的行驶数据为数据基础,设计了一套公交车行驶数据预处理方法:首先为降低在后续建模计算过程对车辆距离计算的误差,将GPS设备采集数据的原始坐标系统,大地坐标系统转换成适合作距离运算的空间直角坐标系统,其次由于GPS设备采集位置信息时产生的误差,本课题结合公交车行驶路线不变,不偏离轨迹的性质,设计了两种数据过滤算法,分别过滤定位偏移和行驶回退两种异常。并且将坐标数据向公交车行驶主线路作投影计算,使公交车行驶轨迹完全贴合路线。之后根据数据预处理得到的统计结果,提取了交通路口数、路段距离、日期类型(工作日、休息日等)、时段、降水量和能见度6种影响公交车行驶的主要因素。最后为加速数据预处理过程,以应对大规模数据集的处理,课题结合分布式计算技术,设计了公交车行驶数据预处理的分布式计算系统,在1主控节点,2计算节点2部署的条件下,运算效率提升了约1.6倍。公交车到站时间预测算法方面,课题针对第3章提取出的影响因素,分析了现有算法不适用于非数值型数据、影响因素分类过于主观等缺陷,提出了基于随机森林的公交车到站时间预测算法。以随机森林随机树数量的不同作纵向对比,对比结果显示,随着随机树数量的增加,随机森林模型的预测误差逐步降低。当数量达到一定程度后(本实验为200),误差降低缓慢。该实验同样证明了与直接使用原始大地坐标系统作数据预处理相比,使用空间直角坐标系作数据预处理得到的数据结果更为精确。之后采用具有800棵随机树的随机森林算法模型与历史平均模型、神经网络模型和支持向量回归机等模型作实验比对,实验结果显示基于随机森林算法的公交车预测模型的预测误差为20.43%,低于其他算法。证明了该算法适用于对非数值型数据的学习与建模。最后针对课题中大规模数据集的训练学习问题,设计了该模型算法的分布式训练与预估系统。在1主控节点,2计算节点2部署的条件下,系统加速了模型训练进度约1.69倍。但对于数据预估流程讲,由于该流程存在大量网络通信任务,所以分布式处理的加速效果并不明显,仅达1.39倍。算法模型应用方面,课题在完成了公交车到站时间预测算法后,设计了一套-69- 北京工业大学工学硕士学位论文具有高拓展性、低耦合的公交车到站时间服务系统。该服务系统面向市民,提供了公交车线路查询、车辆实时位置查询、公交车到站时间查询三种服务。并对三种服务的服务流程进行了详细设计。公交车到站时间查询服务方面,整合了第3,4章设计的公交车行驶数据预处理和算法模型训练预估的分布式处理系统,完成了对数据的预处理、对数据的训练建模、对输入样本的预估的完整任务线。最后对该系统提供的三种服务进行了相关演示。现阶段的研究中,对公交车行驶的影响因素方面和公交车行驶轨迹规律方面的分析还不够详尽,细节方面没有进行深入的挖掘,这是今后需要进一步研究与改善的方面。此外对于GPS设备采集误差方面,课题完全从软件设计上进行规避,硬件方面还没有着手进行研究。精确的原始数据可以大幅度提升模型训练的质量,这也是今后可以深入研究的另一方面。-70- 参考文献参考文献[1]王婕.大交通背景下的停车建设规划[J].建筑机械,2016(7):10-15.[2]朱嘉广.挑战与出路:北京市交通发展[J].新视野,2005(4):24-27.[3]张国华,黎明,王静霞.智能公共交通系统在中国城市的应用及发展趋势[J].交通运输系统工程与信息,2007,7(5):24-30.[4]徐亚华,冯立光.公共交通优先发展现状及战略规划[J].交通运输工程学报,2010(6):64-68.[5]刘小明.城市交通与管理——中国城市交通科学发展之路[J].交通运输系统工程与信息,2010,10(6):11-21.[6]邵源,宋家骅.大城市交通拥堵管理策略与方法[J].城市交通,2010,第6期(06):1-7.[7]朱明皓.城市交通拥堵的社会经济影响分析[D].北京交通大学,2013.[8]刘小艳.我国城市交通现状及对策分析[J].价值工程,2012,31(25):80-81.[9]曹一鸣.城市交通拥堵原因及对策[J].上海市经济管理干部学院学报,2012,第4期(04):21-24.[10]胡润州.私家车时代缓解城市交通拥堵的双重策略[J].上海城市管理,2012,05期(05):10-15.[11]孙会君,四兵锋,吴建军.城市交通中两种出行方式比例分配问题研究[J].交通运输系统工程与信息,2008,04期(04):77-82.[12]汪娟,孙艳,赵芳芳.北京市私家车车主出行特征调查研究[J].交通标准化,2012,21期(21):153-158.[13]岳建明.我国智能交通产业的发展及技术创新模式探讨[J].中国软科学,2012,第9期(9):188-192.[14]王丰元,臧淑燕,孙刚,等.智能公交系统技术及其功能[J].城市公共交通,2005(6):39-40.[15]杨绿芳.计算机通信技术与城市交通发展的关系研究[J].信息通信,2012(6):186-186.[16]ZhangM,XiaoF,ChenD.BusArrivalTimePredictionBasedOnGpsData[J].Icte,2015:1470-1475.[17]GuojunChen,XiaoguangYang,DongZhang,JingTeng.HistoricalTravelTimeBasedBus-Arrival-TimePredictionModel[C].InternationConferenceofChineseTransportationProfessionals,2011:1493-1504.[18]GongJ,LiuM,ZhangS.Hybriddynamicpredictionmodelofbusarrivaltimebasedonweightedofhistoricalandreal-timeGPSData[C].第25届中国控制与决策会议论文集.2013:972-976.[19]ZhuT,MaF,MaT,etal.Thepredictionofbusarrivaltimeusingglobalpositioningsystemdataanddynamictrafficinformation[C].WirelessandMobileNetworkingConference(WMNC),20114thJointIFIP.IEEE,2011:1-5.-71- 北京工业大学工学硕士学位论文[20]SunD,LuoH,FuL,etal.PredictingBusArrivalTimeontheBasisofGlobalPositioningSystemData[J].TransportationResearchRecord,2007,2034:62-72.[21]JeongR,RilettLR.PredictionModelofBusArrivalTimeforReal-TimeApplications[J].TransportationResearchRecordJournaloftheTransportationResearchBoard,2005,1927(1):195-204.[22]KalmanRE.Anewapproachtolinearfilteringandpreditionproblems[J].JournalofBasicEngineering,1960,82(1):167-179.[23]VanajakshiL,SubramanianSC,SivanandanR.Traveltimepredictionunderheterogeneoustrafficconditionsusingglobalpositioningsystemdatafrombuses[J].IetIntelligentTransportSystems,2009,3(1):1-9.[24]YuB,YangZZ,ChenK,etal.Hybridmodelforpredictionofbusarrivaltimesatnextstation[J].JournalofAdvancedTransportation,2010,44(3):193–204.[25]ChienSI,LiuX,OzbayK.PREDICTINGTRAVELTIMESFORTHESOUTHJERSEYREAL-TIMEMOTORISTINFORMATIONSYSTEM[C].TransportationResearchBoard82ndAnnualMeeting.2003.[26]JianPan,XiutingDai,XiaoqiXu,YanjunLi.ASelf-learningalgorithmforpredictingbusarrivaltimebasedonhistoricaldatamodel[C].CloudComputingandIntelligentSystems(CCIS),2012IEEE2ndInternationalConferenceon,2012:1112-1116.[27]ChienIJ,DingY,WeiC.DynamicBusArrivalTimePredictionwithArtificialNeuralNetworks[J].JournalofTransportationEngineering,2014,128(5):429-438.[28]YuBin.YangZhong-Zhen.LinJian-Yi.BusArrivalTimePredictionUsingSupportVectorMachines.JournalofIntelligentTransportationSystems.2007,10(4).[29]LeeYJ,YehYR,PaoHK.IntroductiontoSupportVectorMachinesandTheirApplicationsinBankruptcyPrognosis[M].HandbookofComputationalFinance.SpringerBerlinHeidelberg,2012:731-761.[30]SuykensJAK,VandewalleJ.LeastSquaresSupportVectorMachineClassifiers.[J].NeuralProcessingLetters,1999,9(3):293-300.[31]刘伟.对分布式计算、网格运算和云计算分析[J].科技信息,2013(9):87-88.[32]DeanJ,GhemawatS.MapReduce:SimplifiedDataProcessingonLargeClusters.[C]ConferenceonSymposiumonOpeartingSystemsDesign&Implementation.DBLP,2004:137-150.[33]SchölkopfB,PlattJ,HofmannT.Map-ReduceforMachineLearningonMulticore[C]//ConferenceonAdvancesinNeuralInformationProcessingSystems.MITPress,2006:281-288.[34]LiM,AndersenDG,ParkJW,etal.Scalingdistributedmachinelearningwiththeparameterserver[C]InternationalConference.2014:1-1.-72- 参考文献[35]DaiW,KumarA,WeiJ,etal.High-performancedistributedMLatscalethroughparameterserverconsistencymodels[C]Twenty-NinthAAAIConferenceonArtificialIntelligence.AAAIPress,2014:79-87.[36]史海锋,张卫斌.空间直角坐标与大地坐标转换算法研究[J].大地测量与地球动力学,2012,32(5):78-81.[37]束蝉方,李斐,沈飞.空间直角坐标向大地坐标转换的新算法[J].武汉大学学报信息科学版,2009,34(5):561-563.[38]王仲锋,杨凤宝.空间直角坐标转换大地坐标的直接解法[J].测绘工程,2010,19(2):12-14+17.[39]QuinlanJR.Inductionofdecisiontrees[J].MachineLearning,1986,1(1):81-106.[40]马秀红,宋建社,董晟飞.数据挖掘中决策树的探讨[J].计算机工程与应用,2004,40(1):185-185.[41]QuinlanJR.Simplifyingdecisiontrees[J].InternationalJournalofMan-MachineStudies,1999,27(3):221-234.[42]BiauG,ScornetE.Arandomforestguidedtour[J].Test,2015,25(2):1-31.[43]LiawA,WienerM.ClassificationandRegressionbyRandomForest[J].RNews,2001,23(23).[44]BreimanL.RandomForests[J].MachineLearning,2001,45(1):5-32.-73- 北京工业大学工学硕士学位论文-74- 攻读硕士学位期间取得的研究成果攻读硕士学位期间取得的研究成果发表的论文:[1]LiJian.BusarrivaltimepredictionbasedonRandomForest[C],InternationalConferenceonComputerScienceandServiceSystem,2017软著[1]侯义斌,李健,车辆安控终端视频流传输QoS控制软件,软件著作权,著作权号:2015SR044127[2]侯义斌,李健,车辆安控系统运营状态检测及维护软件,软件著作权,著作权号:2015SR043239比赛及项目[1]参加软件学院公交安全监控项目,完成车辆安控终端视频流传输控制功能和车辆安控系统运营状态检测功能。[2]作品《解密陌生人》获第四届中国软件杯大学生软件设计大赛决赛一等奖-75- 北京工业大学工学硕士学位论文-76- 致谢致谢三年的研究生学习生涯转瞬即逝,在这多年的学习生活过程中,我每一个错误的改正,每一个学习方法的提升都离不开每一位老师,每一位同学对我的帮助与支持。感谢我的导师——侯义斌教授对我的管理与教导。从研究生学习生活的开始,侯老师帮助我带领我从理论知识的学习,到项目的实践,一步一步找出我学习的漏洞,使我的学习、研究的方法得到提升。帮助我树立了正确的思考问题的方式,拓宽我的研究思路。感谢黄樟钦老师在项目平台中的指导,基于我在实践中成长的机会。在项目中每解决一个问题、开发一个独有的功能,便是我一步一步成长的过程。感谢所有在这三年研究生学习生活中对我给予指导与帮助的老师,帮助我对专业思维、基础知识和专业技能有更深刻的理解,帮助我在实践和学习中打下了良好的基础。同样感谢研究生学习生涯中和我朝夕相处每一天的同学们,没有同学们对我的学习、生活的关系与支持,我也无法顺利完成老师交给我的各项任务与工作。尤其感谢王书龙和高放两位博士在项目合作开发中对我的指导与帮助。-77-

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭