导读
驾车导航服务是数字地图提供的核心功能。通常而言,用户在发起导航之前会对比高德前端展示的三条路线(如下图),以决定按照哪条路线行驶。
而预估到达时间是用户参考的最为重要的指标之一。给定一条路线,对应的预估到达时间的计算需要两组信息输入,分别是实时路况信息和历史速度信息(历史速度信息指的是对应的平均通行时间)。其中实时路况信息,对短时(例如60分钟以内)路况预测帮助较大;而历史速度信息对长时(例如60分钟以上)路况预测帮助较大。一般来说,对于未来2小时以上的路况预测而言,当前时刻的路况信息帮助十分有限,也可以理解为历史速度信息基本处于绝对主导的地位。
因此在长距离路线的预估到达时间计算中,历史速度至关重要,其预测的准确性直接影响预估到达时间,进而影响用户选择及体验。我们希望能够通过建模的方式提高历史速度的预测准确率。
历史平均法的不足
以往预测历史速度的方式是历史平均值法,主要是将历史上过去某时间段同一特征日同一时间段(例如8:00-8:10)经过同一条路段的所有车辆的用时求平均,这种方法的假设是“历史即未来”。该方法对于3个月内常发性震荡走势比较适合,但针对有特定趋势的走势(如上升走势),效果不会太好。
该方法不足之处有以下三点:
- 对于异常点敏感
- 无法利用时域序列的演化趋势(trend)信息
- 无法利用去年同期的车辆行驶规律
下面我们用一个分析过的badcase来具体说明,如下图:
上图显示了北京市某路段在过去连续若干周里确定特征日(周五)及确定时间批次(12:10-12:20)上各自的平均旅行时间。如图所示,近期旅行时间已逐渐升高,且去年同期旅行时间也已经升高,但是使用历史平均值法计算的历史速度信息却显著偏小,与未来一周对应时间段的真实旅行时间偏差近三倍。
通过前期的case调研分析,发现部分路段的历史速度曲线呈现出时效性、年度周期性特征。
上图为某段道路从20170501到20190103期间某个时间批次的旅行时间变化,可以发现,每到暑假期间,该路段旅行时间显著增大,呈现出明显的年度周期性。
本项目旨在解决历史平均值法存在的不足,其中,由于年度周期性问题导致的恶劣badcase占比较大,故着重解决年度周期性问题。
机器学习解题
基于TCN模型的历史速度问题建模
历史平均值方法简单粗暴,但也能取得相当不错的效果,对于具有年度周期性&时效性的路段,仅仅通过统计近期的信息会损失一定的精度,这时把去年的相关信息融合进来就显得特别重要,该问题是个典型的时序建模问题,本文基于TCN构建历史速度周期性问题解决方案。
我们的目标是构建一个基于历史信息(某时间段&去年同期:同一段道路、确定特征日、确定时间批次)和道路属性来预测未来一周历史速度的机器学习模型,解决历史平均值法存在的问题,从历史速度信息维度提高预估到达时间的准确率,解决恶劣bacase。
TCN简介
时间卷积网络(TCN)可以作为一般的序列建模架构,且拥有非常好的效果。TCN显著的特点有如下几点:
- 架构中的卷积存在因果关系,这意味着从未来到过去不会存在信息泄漏。
- 卷积架构可以将任意长度的序列映射到固定长度的序列。
- 利用残差模块和空洞卷积来构建长期依赖关系。
TCN 论文图:TCN 架构的组成元素。左图为空洞系数 d=1, 2, 4、卷积核大小 k=3 的空洞因果卷积,感受野能覆盖输入序列中的所有值。右图为TCN 残差块,当残差输入和输出有不同的维度,我们会添加一个 1x1 的卷积。
网络架构
上图为整个模型的框架图,主要分为动态特征提取模块和静态特征模块,其中动态特征的提取基于TCN模型实现,而静态特征则直接和提取出的动态特征进行连接之后使用。具体说明见下文。
动态特征提取
该模块的主要目标是通过TCN模型去学习旅行时间的曲线走势特征,这里的动态特征指的是从今年和去年对应的一定数量的平均旅行时间构成的序列中提取出的走势特征。
本文将今年和去年对应的平均旅行时间序列作为一个双通道序列放进TCN模型中学习,旨在利用TCN强大的时序建模能力,同时结合今年和去年的走势特征,更加准确的预测未来一周的走势(上升、下降或震荡)。
针对该类序列建模问题,已有成熟的RNN技术,而且目前更新的TCN技术也已出现。在项目开展过程中,分别使用了RNN、LSTM和TCN来做序列建模,实验结果表明,使用TCN进行序列特征提取效果最好,相对于RNN约有1.39%的效果收益,相对于LSTM约有0.83%的效果收益,而且由于TCN模型是基于卷积网络实现的,训练速度更快,所以本项目中采用TCN进行动态特征提取。
静态特征
这里的静态特征主要指一些人工提取的特征,用以加强模型表达能力。具体如下:
- 道路属性特征:路长、路宽、车道数、车道宽度、最大限速等
- 时间属性特征:前三天对应时间批次旅行时间、前七天对应时间批次旅行时间均值、去年同期前后两个平均旅行时间(同一特征日&同一时间批次)
道路属性特征主要考虑不同的道路通行能力不一样,会在一定程度上影响车辆通行速度。
时间属性特征主要分三方面:
- 前三天对应时间批次旅行时间-考虑到时效性问题,越靠近预测天则可靠性越大,例如,最近几天道路施工,车道速度受到影响;但该特征也会对基于特征日的建模产生一定影响,因为车辆出行规律大部分情况下跟周几特征日有关,而与非特征日的关联较小(除特别情况,如活动举办、连续数天施工)。案例见下图。
图中为某段道路连续85天某时间批次上的旅行时间变化趋势图,从图中可以看到,该曲线呈现先平稳后上升的趋势,第85天的旅行时间与前面的关系不大,而与近期关系较大(近期一直较拥堵),尤其是近三天。
- 前七天对应时间批次旅行时间均值-该特征为近期旅行时间的一个统计指标,旨在反映近一周的通行状况,作用同上。
- 去年同期前后两个平均旅行时间(同一特征日&同一时间批次)
模型效果
本文所采用的基于TCN建模方法,能够从动态和静态特征中提取出驾驶规律信息,包括异常点的识别过滤、旅行时间的趋势变化信息和年度周期信息,给出更符合预期的预测值,较好的解决当前历史平均值法的弊端,可以部分解决恶劣badcase发生的问题。具体效果说明如下:
异常值自动过滤
上图中case,从整体上来看,旅行时间在70s上下浮动,而局部某些点是异常偏大的(当天可能发生了交通事故等),属于异常点,在预测未来历史速度信息走势的时候,应该忽略,TCN模型成功的忽略了这些异常点,但历史均值法则会将其纳入计算,导致算出的平均旅行时间偏大。
趋势信息提取
上图中case,从曲线走势来看,旅行时间近期有所上升,所以下周的平均旅行时间大概率还是会延续这种趋势,可以看出,TCN模型比较好的学习到了这种趋势信息,预测效果较好,但历史平均值法,由于前期很长一段时间旅行时间都很小,导致算出的平均旅行时间也偏小。
年度周期性的引入
上图中case,从图中可以看出,今年前11周都比较平稳,第12周旅行时间突然上升,但只从今年信息中我们无法得知第12周这天是否是异常值,从而模型无法准确给出第13周的预测值,但从去年对应的13周的数据中可以发现,去年对应的时间在第12和13周都上升了,从而模型可以确定今年第13周大概率还是会继续升高(根据年度周期性),但使用历史平均值法给出的平均旅行时间则明显偏小。
评测结果
该项目在某一周的case集合上的评测效果:
- 基线-历史平均值法的badcase率为11.0‰;
- 对照-基于TCN的方法的badcase率为10.1‰。
可以看出,本文所采用的方法相对基线恶劣badcase率下降幅度较大,说明引入年度周期性可以解决部分恶劣badcase。
小结
本文将TCN模型进行工业化实践,帮助建模历史速度问题,并结合特征工程(提取动态、静态特征,引入年度周期性等),成功的解决了现有模型的不足,并在实际应用中取得了不错的效果,为将来的时序性问题探索了一条可行的路径。对现有TCN模型框架所做改动较小,后续可进一步探索,针对特定问题做一些定制化的改进。