产品战略专家梁宁确认出席AICon北京站,分享AI时代下的商业逻辑与产品需求 了解详情
写点什么

深度学习在高德 ETA 应用的探索与实践

  • 2020-06-18
  • 本文字数:1687 字

    阅读完需:约 6 分钟

深度学习在高德ETA应用的探索与实践

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.小结

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


本文转载自公众号高德技术(ID:amap_tech)。


原文链接


https://mp.weixin.qq.com/s?__biz=Mzg4MzIwMDM5Ng==&mid=2247485006&idx=2&sn=b837e9658599eef64acbab11409601a7&chksm=cf4a5eadf83dd7bb73e340f31ba92c1b3aa74378829793b6d7bba98272d15f42a4509ea747a9&scene=27#wechat_redirect


2020-06-18 10:001928

评论

发布
暂无评论
发现更多内容

C# 之 方法参数传递机制

陈言必行

7月月更

算法题每日一练---第12天:算式900

知心宝贝

程序员 算法 前端 后端 7月月更

计算机视觉中Python如何实现图像操作与处理

迷彩

Python 计算机视觉 图像处理 Pillow 7月月更

MySQL进阶--存储过程以及自定义函数

Java学术趴

7月月更

鲜衣怒马散尽千金,Vue3.0+Tornado6前后端分离集成Web3.0之Metamask钱包区块链虚拟货币三方支付功能

刘悦的技术博客

Python 区块链 Vue 加密货币 虚拟货币

Linux环境快速搭建elasticsearch6.5.4集群和Head插件

程序员欣宸

Java elasticsearch 7月月更

机器学习如何做到疫情可视化——疫情数据分析与预测实战

是Dream呀

人工智能 机器学习 爬虫 数据可视化 疫情分析

Starfish Os X MetaBell战略合作,元宇宙商业生态更进一步

股市老人

【Meetup预告】OpenMLDB+OneFlow:链接特征工程到模型训练,加速机器学习模型开发

第四范式开发者社区

人工智能 机器学习 数据库 AI 特征平台

融云 IM & RTC 能力上新盘点

融云 RongCloud

SpringBoot 整合 Swagger 自动生成在线API文档

宁在春

springboot swagger 7月月更

汽车智能应用生态的下一个趋势:车载小程序

Geek_99967b

车联网 物联网,

【函数式编程实战】(十) 优雅的处理代码中的时间类

小明Java问道之路

Lambda java8 Stream API 7月月更 签约计划第三季

SpringBoot整合Minio 项目中使用自己文件存储服务器

宁在春

springboot Minio 7月月更

算法题每日一练---第11天:第39级台阶

知心宝贝

程序员 算法 前端 后端 7月月更

数据中台建设(三):数据中台架构介绍

Lansonli

数据中台 7月月更

《我的Vivado实战—单周期CPU指令分析》

攻城狮杰森

cpu 计算机组成原理 7月月更 vivado 计算机科学与技术

SRv6初登场

穿过生命散发芬芳

7月月更 SRv6

浏览器视频帧操作方法 requestVideoFrameCallback() 简介

devpoint

html5 视频处理 requestAnimationFrame 7月月更

Starfish Os打造的元宇宙生态,跟MetaBell的合作只是开始

鳄鱼视界

Bootstrap警告和轮播插件详解【前端Bootstrap框架】

恒山其若陋兮

7月月更

Prometheus 运维工具 Promtool (四)TSDB 功能

耳东@Erdong

Prometheus 7月月更 签约计划第三季 Promtool

网络安全漏洞分析与漏洞复现

网络安全学海

网络安全 安全 渗透测试 WEB安全 漏洞挖掘

数据库故障容错之系统时钟故障

CnosDB

时序数据库 开源社区 CnosDB 工程师有话说 CnosDB Tech Talk

Redis设计规范

知识浅谈

redis' redis 精讲

一文读懂Plato Farm的ePLATO,以及其高溢价缘由

股市老人

leetcode 452. Minimum Number of Arrows to Burst Balloons 用最少数量的箭引爆气球(中等)

okokabcd

LeetCode 数据结构与算法 贪心算法

小程序助力智能家居生态平台

Geek_99967b

物联网,

C# 窗体应用使用对象绑定 DataGridView 数据绑定

IC00

C# 7月月更

深度学习在高德ETA应用的探索与实践_AI&大模型_高德技术_InfoQ精选文章