大厂Data+Agent 秘籍:腾讯/阿里/字节解析如何提升数据分析智能。 了解详情
写点什么

深度学习在高德驾车导航历史速度预测中的探索与实践

  • 2019-08-17
  • 本文字数:3233 字

    阅读完需:约 11 分钟

深度学习在高德驾车导航历史速度预测中的探索与实践

1. 导读

驾车导航服务是数字地图提供的核心功能。通常而言,用户在发起导航之前会对比高德前端展示的三条路线(如下图),以决定按照哪条路线行驶。



而预估到达时间是用户参考的最为重要的指标之一。给定一条路线,对应的预估到达时间的计算需要两组信息输入,分别是实时路况信息和历史速度信息(历史速度信息指的是对应的平均通行时间)。其中实时路况信息,对短时(例如 60 分钟以内)路况预测帮助较大;而历史速度信息对长时(例如 60 分钟以上)路况预测帮助较大。一般来说,对于未来 2 小时以上的路况预测而言,当前时刻的路况信息帮助十分有限,也可以理解为历史速度信息基本处于绝对主导的地位。


因此在长距离路线的预估到达时间计算中,历史速度至关重要,其预测的准确性直接影响预估到达时间,进而影响用户选择及体验。我们希望能够通过建模的方式提高历史速度的预测准确率。

2. 历史平均法的不足

以往预测历史速度的方式是历史平均值法,主要是将历史上过去某时间段同一特征日同一时间段(例如 8:00-8:10)经过同一条路段的所有车辆的用时求平均,这种方法的假设是“历史即未来”。该方法对于 3 个月内常发性震荡走势比较适合,但针对有特定趋势的走势(如上升走势),效果不会太好。


该方法不足之处有以下三点:


  • 对于异常点敏感

  • 无法利用时域序列的演化趋势(trend)信息

  • 无法利用去年同期的车辆行驶规律


下面我们用一个分析过的 badcase 来具体说明,如下图:



上图显示了北京市某路段在过去连续若干周里确定特征日(周五)及确定时间批次(12:10-12:20)上各自的平均旅行时间。如图所示,近期旅行时间已逐渐升高,且去年同期旅行时间也已经升高,但是使用历史平均值法计算的历史速度信息却显著偏小,与未来一周对应时间段的真实旅行时间偏差近三倍。


通过前期的 case 调研分析,发现部分路段的历史速度曲线呈现出时效性、年度周期性特征。



上图为某段道路从 20170501 到 20190103 期间某个时间批次的旅行时间变化,可以发现,每到暑假期间,该路段旅行时间显著增大,呈现出明显的年度周期性。


本项目旨在解决历史平均值法存在的不足,其中,由于年度周期性问题导致的恶劣 badcase 占比较大,故着重解决年度周期性问题。

3. 机器学习解题

3.1 基于 TCN 模型的历史速度问题建模

历史平均值方法简单粗暴,但也能取得相当不错的效果,对于具有年度周期性 &时效性的路段,仅仅通过统计近期的信息会损失一定的精度,这时把去年的相关信息融合进来就显得特别重要,该问题是个典型的时序建模问题,本文基于 TCN 构建历史速度周期性问题解决方案。


我们的目标是构建一个基于历史信息(某时间段 &去年同期:同一段道路、确定特征日、确定时间批次)和道路属性来预测未来一周历史速度的机器学习模型,解决历史平均值法存在的问题,从历史速度信息维度提高预估到达时间的准确率,解决恶劣 bacase。

3.2 TCN 简介

时间卷积网络(TCN)可以作为一般的序列建模架构,且拥有非常好的效果。TCN 显著的特点有如下几点:


  • 架构中的卷积存在因果关系,这意味着从未来到过去不会存在信息泄漏。

  • 卷积架构可以将任意长度的序列映射到固定长度的序列。

  • 利用残差模块和空洞卷积来构建长期依赖关系。



TCN 论文图:TCN 架构的组成元素。左图为空洞系数 d=1,2,4、卷积核大小 k=3 的空洞因果卷积,感受野能覆盖输入序列中的所有值。右图为 TCN 残差块,当残差输入和输出有不同的维度,我们会添加一个 1x1 的卷积。

3.3 网络架构


上图为整个模型的框架图,主要分为动态特征提取模块和静态特征模块,其中动态特征的提取基于 TCN 模型实现,而静态特征则直接和提取出的动态特征进行连接之后使用。具体说明见下文。

3.4 动态特征提取

该模块的主要目标是通过 TCN 模型去学习旅行时间的曲线走势特征,这里的动态特征指的是从今年和去年对应的一定数量的平均旅行时间构成的序列中提取出的走势特征。


本文将今年和去年对应的平均旅行时间序列作为一个双通道序列放进 TCN 模型中学习,旨在利用 TCN 强大的时序建模能力,同时结合今年和去年的走势特征,更加准确的预测未来一周的走势(上升、下降或震荡)。


针对该类序列建模问题,已有成熟的 RNN 技术,而且目前更新的 TCN 技术也已出现。在项目开展过程中,分别使用了 RNN、LSTM 和 TCN 来做序列建模,实验结果表明,使用 TCN 进行序列特征提取效果最好,相对于 RNN 约有 1.39%的效果收益,相对于 LSTM 约有 0.83%的效果收益,而且由于 TCN 模型是基于卷积网络实现的,训练速度更快,所以本项目中采用 TCN 进行动态特征提取。

3.5 静态特征

这里的静态特征主要指一些人工提取的特征,用以加强模型表达能力。具体如下:


道路属性特征路长、路宽、车道数、车道宽度、最大限速等
时间属性特征前三天对应时间批次旅行时间、前七天对应时间批次旅行时间均值、去年同期前后两个平均旅行时间(同一特征日&同一时间批次)


道路属性特征主要考虑不同的道路通行能力不一样,会在一定程度上影响车辆通行速度。


时间属性特征主要分三方面:


  • 前三天对应时间批次旅行时间-考虑到时效性问题,越靠近预测天则可靠性越大,例如,最近几天道路施工,车道速度受到影响;但该特征也会对基于特征日的建模产生一定影响,因为车辆出行规律大部分情况下跟周几特征日有关,而与非特征日的关联较小(除特别情况,如活动举办、连续数天施工)。案例见下图。



图中为某段道路连续 85 天某时间批次上的旅行时间变化趋势图,从图中可以看到,该曲线呈现先平稳后上升的趋势,第 85 天的旅行时间与前面的关系不大,而与近期关系较大(近期一直较拥堵),尤其是近三天。


  • 前七天对应时间批次旅行时间均值-该特征为近期旅行时间的一个统计指标,旨在反映近一周的通行状况,作用同上。

  • 去年同期前后两个平均旅行时间(同一特征日 &同一时间批次)

4. 模型效果

本文所采用的基于 TCN 建模方法,能够从动态和静态特征中提取出驾驶规律信息,包括异常点的识别过滤、旅行时间的趋势变化信息和年度周期信息,给出更符合预期的预测值,较好的解决当前历史平均值法的弊端,可以部分解决恶劣 badcase 发生的问题。具体效果说明如下:

4.1 异常值自动过滤


上图中 case,从整体上来看,旅行时间在 70s 上下浮动,而局部某些点是异常偏大的(当天可能发生了交通事故等),属于异常点,在预测未来历史速度信息走势的时候,应该忽略,TCN 模型成功的忽略了这些异常点,但历史均值法则会将其纳入计算,导致算出的平均旅行时间偏大。

4.2 趋势信息提取


上图中 case,从曲线走势来看,旅行时间近期有所上升,所以下周的平均旅行时间大概率还是会延续这种趋势,可以看出,TCN 模型比较好的学习到了这种趋势信息,预测效果较好,但历史平均值法,由于前期很长一段时间旅行时间都很小,导致算出的平均旅行时间也偏小。

4.3 年度周期性的引入


上图中 case,从图中可以看出,今年前 11 周都比较平稳,第 12 周旅行时间突然上升,但只从今年信息中我们无法得知第 12 周这天是否是异常值,从而模型无法准确给出第 13 周的预测值,但从去年对应的 13 周的数据中可以发现,去年对应的时间在第 12 和 13 周都上升了,从而模型可以确定今年第 13 周大概率还是会继续升高(根据年度周期性),但使用历史平均值法给出的平均旅行时间则明显偏小。

5. 评测结果

该项目在某一周的 case 集合上的评测效果:


  • 基线-历史平均值法的 badcase 率为 11.0‰;

  • 对照-基于 TCN 的方法的 badcase 率为 10.1‰。


可以看出,本文所采用的方法相对基线恶劣 badcase 率下降幅度较大,说明引入年度周期性可以解决部分恶劣 badcase。

6. 小结

本文将 TCN 模型进行工业化实践,帮助建模历史速度问题,并结合特征工程(提取动态、静态特征,引入年度周期性等),成功的解决了现有模型的不足,并在实际应用中取得了不错的效果,为将来的时序性问题探索了一条可行的路径。对现有 TCN 模型框架所做改动较小,后续可进一步探索,针对特定问题做一些定制化的改进。


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


原文链接


https://mp.weixin.qq.com/s/DXMyXfuUtUGcgB33Jvn8YQ


2019-08-17 08:004056

评论

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

hive JOIN操作分析

梧桐

微服务该如何拆分?

xcbeyond

微服务 方法论 架构设计原则 28天写作

SpringCloud 从入门到精通 06--- Eureka服务端

Felix

SpringCloud 从入门到精通 07--- 订单服务和支付服务注册进Eureka

Felix

智联招聘的微前端落地实践——Widget

智联大前端

大前端

新官上任,如何开始你的管理工作(下)

一笑

团队管理 管理 28天写作

Dubbo 就是靠它崭露头角!

yes

dubbo 后端 RPC

Java单例7种测试实践

叫练

单例模式 单例 手写单例 饿汉式 懒汉式

2021,加料!

云原生

Redis学习笔记01:SDS 简单动态字符串

架构精进之路

redis 七日更 28天写作

做视频最大的困难是什么?为什么要保持日更? | 视频号 28 天 (05)

赵新龙

28天写作

距离Java开发者玩转 Serverless,到底还有多远?

博文视点Broadview

没有调查,就没有发言权 Jan 12, 2021

王泰

28天写作

基于网络开放可编程技术构建新一代网络设备运管平台

华为云开发者联盟

运维 网络 运维自动化 金融

技术干货!HDFS读写原理和代码简单实现

华为云开发者联盟

hadoop hdfs 架构 MRS 元数据

【JS】防止浏览器控制台被直接查看(2)

德育处主任

JavaScript chrome 大前端 js 28天写作

智能合约APP开发|智能合约系统软件开发

系统开发

代码编译时自动完成白盒测试,这真的可以

华为云开发者联盟

c++ 测试 代码 框架

2020中国云计算生态峰会召开 浪潮云摘得三项大奖

云服务

为什么泡泡玛特是一个好生意

lidaobing

28天写作 泡泡玛特

作为社畜,如何做好精力管理

熊斌

精力管理 28天写作

HDFS SHELL详解(5)

罗小龙

hadoop 28天写作 hdfs shell

生产环境全链路压测建设历程 27:FAQ 之 业务模型相关

数列科技杨德华

28天写作

kafka如何做到无消息丢失配置

topsion

kafka 消息不丢失

Elasticsearch 核心概念

escray

elasticsearch elastic 28天写作 死磕Elasticsearch 60天通过Elastic认证考试

Python解释器和IPython

程序那些事

Python 数据分析 ipython 程序那些事 Python解释器

前端大佬们都在推荐的“绿宝书”你值得拥有

华章IT

JavaScript typescript 大前端 web开发 犀牛书

5 天开发接口系统技术小结

老魚

laravel 建站 接口开发 28天写作

28天瞎写的第二百一五天:为了看片儿折腾 Linux 的故事

树上

28天写作

这5个让人窒息的烂代码,你看完都忍不了

华为云开发者联盟

GitHub 代码 代码注释 null

云上独享资源池 自主灵活更安全

产品推荐

深度学习在高德驾车导航历史速度预测中的探索与实践_AI&大模型_沐亦_InfoQ精选文章