1.导读

驾车导航是数字地图的核心用户场景,用户在进行导航规划时,高德地图会提供给用户3条路线选择,由用户根据自身情况来决定按照哪条路线行驶。

同时各路线的ETA(estimated time of arrival,预估到达时间)会直接显示给用户,这是用户关心的核心点之一。用户给定起点和终点后,我们的任务是预测起终点的ETA,ETA的准确率越高,给用户带来的出行体验越好。

2.基于深度学习模型的探索和实践

2.1模型选择

传统机器学习模型在ETA中,比较常用的有线性回归、RF(随机森林)、GBDT(梯度提升决策树)等回归预测类模型。线性模型表达能力较差,需要大量特征工程预先分析出有效的特征;RF通过样本随机和特征随机的方式引入更多的随机性,解决了决策树泛化能力弱的问题;GBDT是通过采用加法模型(即基函数的线性组合),以及不断减小训练过程产生的残差来达到回归的算法。

传统机器学习模型相对简单易懂,也能达到不错的效果,但存在两个问题:

  • 模型的表达能力跟选取的特征有关,需要人工事先分析出有效的特征。
  • 没有考虑上游对下游路段的影响,产生了如丢失上下游关联信息、下游受上游影响导致的不确定性等问题。

第一个问题很好理解,深度学习模型能很好地弥补这方面。针对第二个问题,以历史速度信息选取存在的不确定性为例来说明一下,历史速度信息是一个区分周一到周日七个工作日、10分钟间隔的历史平均时间,可以根据该路段的预计进入时间所在10分钟区间来选定。如下图(历史平均速度)从0:00-24:00的变化曲线,可以看到一天中特别是早晚高峰,速度值存在较大波动。

而在选取历史平均时间时,依赖的是预计进入时间,这个时间依赖于上游路段的预计通行时间,因此其选取存在不确定性,进而导致ETA计算不准确。

考虑到以上问题的存在,我们选择利用RNN的时间序列思想将路线中上下游路段串联起来进行路段ETA的预测。

另外考虑到RNN存在的长依赖问题,且结合实际业务情况,我们选择使用LSTM模型来进行建模,LSTM的门结构具有的选择性还能让模型自行学习选择保留哪些上游的特征信息进行预测。

2.2网络架构

上图为整个模型的框架图,主要分为两部分,使用LSTM模块对路线中的路段ETA的预测和最终使用N层全连接模块对累计路段ETA及路线各特征进行完整路线的ETA预测。

2.3路段ETA预测

上图为各路段ETA预测使用的LSTM结构图,Xt为路线中第t个路段的特征信息,主要包含对应的实时路况信息、历史路况信息、路段的静态特征等。

LSTM本是输入时间序列数据的模型,我们利用该思想,将路线中各路段序列依次输入模型。

2.4完整路线ETA预测

在LSTM模块得到累计路线ETA预测值后,结合该路线的静态属性,使用全连接模块将其整合成最终输出的完整路线ETA预测值。

路线的属性特征主要指一些人工提取的特征,如该路线的长度、导航规划发起特征日、是否早晚高峰时段等,用以加强模型在不同场景下的表达能力。

损失函数选用线性回归常用的平方形式:MSE,公式如下:

其中,N是路线数量,ETA路线j为路线ETA,即预测值;用户实走j为用户在该路线的实走时间,即真值。

3.模型效果

衡量模型效果,即路线上ETA的预测值时,主要考虑的是准确率。一般情况下,用户对ETA偏长和偏短的容忍度不同,对偏长容忍度更高。比如用户要去机场,ETA给的时间偏短10分钟比偏长10分钟对用户的损害更大。因此准确度的指标设计倾向于ETA偏长,定义为满足用户一定容忍范围的请求比例,即准确率作为主要衡量指标。

在北京市上的实验结果显示,ETA准确率得到提升,MSE loss下降比例28.2%,效果有了明显的提升。

4.小结

本文介绍了引入深度学习模型,帮助建模导航规划的预估到达时间预测,成功解决了线性模型的不足,也为后续引入更多特征、进行更多探索打开了空间,如历史速度信息的不确定度、时效性、周期性、突发事件、路网结构等。

最新文章

  1. SharePoint 2013配置 Workflow Manager
  2. 【jq】c#零基础学习之路(5)自己编写简单的Mylist<T>
  3. I/O 请求数据包
  4. JavaScript中,本周、上周、本月、上月日期判断
  5. dig out secrets beneath AirSig
  6. Mysql的相关命令
  7. linux使用:vi编辑器
  8. hdu 1234
  9. oracle学习-安装卸载
  10. jQuery-瀑布流 布局 (处理页面滚动和AJAX加载延迟问题)
  11. Android OpenGL ES(十)绘制三角形Triangle .
  12. 浅谈 WebDriver如何应对不同浏览器
  13. NIO SocketChannel 【链接】
  14. Linux命令第四篇
  15. PHP安装linux
  16. 怎样从外网访问内网Web?
  17. rm命令删除文件时排除特定文件
  18. Html.DropDownListFor练习
  19. 使用Java语言开发微信公众平台(八)——自定义菜单功能
  20. Centos 设置zookeeper开机自启动

热门文章

  1. Unity3D的UGUI布局锚点自动绑定关系
  2. Codeforces1144C(C题)Two Shuffled Sequences
  3. reids不重启切换rdb到aof
  4. Django之ORM对象关系模型
  5. Alink漫谈(四) : 模型的来龙去脉
  6. U-Learning 后端开发日志(建设中...)
  7. mysql-connector-java 6版本的jdbc连接问题
  8. samba修复
  9. [JavaWeb基础] 011.Struts2 配置拦截器
  10. [JavaWeb基础] 005.Hibernate的配置和简单使用