CoST-Net:多模式交通需求预测

1677813978734ec965e47f1f35d2d9ce.png

文章信息

ce99d797478eb183c6ee8703e62d36a9.png

该文章发表在“The 25th ACM SIGKDD Conference on Knowl-edge Discovery & Data Mining (KDD’19)”,题为《Co-Prediction of Multiple Transportation Demands Based on Deep Spatio-Temporal Neural Network》,时间为2019年。该文章主要关注多模式交通需求预测。

05bea88017775ecd956df51f49f2899c.png

摘要

9a3c89f0859305867199e27ea16bf4e9.png

出租车和共享单车给城市交通带来了极大的便利。许多现有研究通过预测下一时期的上下车需求来提高出租车服务或共享单车系统的效率。与现有研究不同,文章的研究动机主要体现在以下两个方面:1)从微观上看,任意时隙的观测空间需求可以分解为多个隐藏空间需求基的组合;2)从宏观上看,多个交通需求在空间和时间上都存在较强的相关性。基于此,文章提出了一种基于时空神经网络的协同预测方法CoST-Net。文章通过构造深度卷积神经网络,将空间需求分解为隐藏空间需求基的组合。用组合权向量表示分解后的空间需求。在此基础上,提出了一种异构长短时记忆算法,对多种运输需求的状态进行集成,并对其进行混合动态建模。最后,将湿度和温度等环境特征与所获得的整体隐藏状态相结合,同时预测多种需求。在真实的出租车和共享单车需求数据上进行了实验,结果表明,所提出的方法优于经典和最新的交通需求预测方法。

文章的创新点如下:

1. 文章设计了一个深度卷积AutoEncoder来实现交通需求的空间分解。基于该网络,可以将快照交通需求编码为空间需求基的组合。

2. 文章提出了一种异构LSTM,以同时建模多种运输需求的动力学,并将它们集成到一个统一的时空神经网络的隐藏状态。

3. 文章根据统一的隐藏状态和外部环境因素,提出了一种协同预测模块,用于预测多种交通需求。

044c3c6397985adf42c8c9d248f2a318.png

问题定义

6514b2a15b1bff7c3b99b1a037f4575c.png

多该文章旨在实现多种交通模式的需求预测,具体而言,文章的多种交通模式指出租车与共享单车。多模式交通需求预测旨在利用多模式交通历史需求信息以及对应的额外特征,预测下一个时间段多模式交通的需求,具体可由下式表示:

817c07b18e9f3427383d28b02fff29c4.png

其中,ca6f20692960ac3549dd043b1146404a.png表示共享单车的历史上下客需求,df1d42e98de1093892242aff070faec4.png表示出租车的上下客需求,表示历史的额外特征,包括天气和事件。

6f27b9278b00768e9b51928a9088825c.png

模型细节

df11f640f0d8787b5972f110bd4f0bd1.png

下图展示了模型的基本框架:

fc5ef3b20f3493eaefd4619f441ebfef.png

1.空间需求分解

ec71a4ead7d5e4e3dee1d2e9e7d938cc.png

如图中图(b)所示,文章认为交通模式的空间需求由若干种基组成,因此,文章假设有一些空间需求基础。它们在不同的时间间隔中是不变的,每一种基础都有其独特的城市表征。此外,各区域在每个时间区间的需求可以看作是空间基的组合,定义如下:

12d8db68d131298efcc5f83b979ff9a9.png

其中,95044c28b15dbaae15829974e4d6afac.png是一种空间需求矩阵,表示区域(i,j)的需求。为保证空间需求库的表达能力,文章对需求库的组合进行了深度非线性设计。因此,组合系数可以嵌入很多次,如下所示。

ae61e15602496f2feb1d4d5312cfe860.png

其中,r表示嵌入层数,表示将低阶分解转化为高阶特征的函数。相应地,可以通过每一层的基底得到Xt的非线性分解。以第r层为例,如下所示。

2ec3378e7af73fb9f0bed2d0ee09d482.png

文章针对空间需求分解问题,共划分为两个部分。首先是分解并获取空间需求基,其次是基于CNN的需求模型

分解并获取空间需求基:

文章提出使用深度卷积AutoEncoder来获得城市交通中的多层基。模型定义如下:

504cf6e2eae32f9d0bffd1746e382113.png

其中,公式(6)表示encoder的结构,(7)表示decoder的结构,7a1900e7d856178e6d76ae2b0984fb10.png是可训练参数。值得注意的是,encoder与decoder是对称的,二者深度相同。

基于CNN的需求模型:

由于在给定时间段t内,历史需求信息可以被视为一张图片,称之为“需求图”,文章选择使用CNN对历史需求数据进行处理。对于一个需求序列,文章将每个需求图输入深度卷积AutoEncoder。不同交通方式的上下车需求具有不同的空间需求基础。为了不影响捕获高级表示的性能,需求图被单独编码。编码器由K层CNN组成,以上一层的输出作为输入。decoder采用encoder的对称结构。CNN的层数和Transposed CNN层数定义如下。

296e02f39c7bb35c63c3a538343d0849.png

其中,r表示层数。值得注意的是,文章在使用CNN时,设置padding为0,因此随着encoder的层数增加,需求图逐渐减小,并输入至异构LSTM中处理,最后后decoder会将需求图放大至原本的大小。

2.异构LSTM

在深度卷积AutoEncoder训练完成后,固定编码器和解码器的参数。因此,给定一个需求图序列,文章对序列进行编码,通过预先训练的编码器获得高阶表示。因为每个特征图都可以看成是空间需求基的组合,所以特征映射序列可以看成是空间基的系数变化。因此,多模式交通需求预测问题被转化为预测下一个时间段的空间需求基的系数。基于RNN的基本表达,该预测问题可由下式表示。

ce4a961b1ebedf6a14b99d6c430084cc.png

其中,3457968085026d3ab5d57860393a25e2.png分别表示共享单车上客,共享单车下客,出租车上客,出租车下客对应的隐藏状态,进一步上式可简化表述如下:

5da8192ce97195092f55ed33b20d7306.png

基本RNN存在爆炸和消失梯度等问题,而随着LSTM的兴起,由于其具有学习时间动态长、短依赖关系的能力,文章选择LSTM进行预测,并提出了针对异构数据的异构LSTM,定义如下:

c699bce29faf8da4d626a1ede2e7507c.png

其中,第一行表示输入门,第二年行表示遗忘门,第三行控制LSTM的输出。

3.融合与协同预测

在这个模型中,文章主要考虑天气和事件。外部因素数据为枚举类型和数值类型,枚举类型将使用one-hot进行编码。编码后,文章使用全连接层来提取外部因素的相关性和表示。异构LSTM的输出由下式表示:

1d743d8202acf59377ae93695132d646.png

其中,表示外部因素,是全连接层。异构LSTM的输出可以分解为四个部分:

27a7dc356aad3c710ff781f4d243c224.png

分别对应出共享单车和出租车的上下客数据。最后,上述数据通过decoder进行解码,得到下一时刻的需求图。值得一提的是,文章中的decoder并不需要训练,如果想要预测共享单车的上客需求,decoder的参数将从预先训练的卷积AutoEncoder中复制,该算法使用共享单车的上客需求作为输入和真实值。定义如下:

84aab65520177946c78c2c41ec1671ab.png

文章的损失函数定义如下:

f5e1e51b52fcf0f4081f1da5f3f9dd3d.png

由于四种模式的权重难以训练,实际上,文章分别对四种需求进行了预测。

5867ea6320d25e43b039aa436b5c084b.png

实验

3f025549bacea6797ed2468fbfdf9971.png

文章选择纽约的共享单车数据与出租车数据作为实验的数据集。实验分为以下几个部分:

1.与基准模型的比对

实验结果如下,可以看到CoST-Net,即文章所以出模型取得了最低的RMSE,以及最高的皮尔森相关系数。

8fdfd1a40446837b1b1e30bd2a733f31.png

93ba27d45b130ae18edda7a80f4e2030.png

2.方差比对

文章将XGBoost、ConvLSTM、DeepST、ST-ResNet和CoST-Net的实验结果绘制了箱线图。

1622e4fbbed768a9e69e4fe40ceebf06.png

3.CoST-Net与其变种的比对

具体而言,例如,如果期望预测共享单车的上客需求,使用单通道的实验(“A Channel”)意味着只使用共享单车的上客需求数据来用我们的模型进行预测。双通道预测(“Two Channels”)表示采用自行车提车需求和自行车落车需求数据进行实验。而四个输入通道表示原始的CoST-Net。

8e8705d8d738cfe8119382ff861e6a82.png

4.在不同时间点的模型性能

f62ac79a61a386e6a39d179cbd310ed2.png

3f1463724c8a8e7c4b40608e75eb17e2.png

总结

dbc19cbd0dfcabed6ba4fa0125c16a63.png

文章提出了一种新的交通需求预测方法,即基于时空神经网络的协同预测。它由三个模块组成:1)表示学习模块,将空间需求分布编码为隐藏的空间需求基的组合;2)异构学习模块,融合多种交通需求状态,并对这些状态进行动态建模;3)融合环境因素的集成模块,提出多种交通需求的预测。得益于多种交通需求的空间分解表示和异构融合,CoST-Net能够优于现有的交通需求预测方法。为了验证文章提出的方法,在真实出租车和共享单车数据上进行了实验,结果证明了CoST-Net在预测精度和鲁棒性方面的有效性。

a05dcaef389480aafecfb985c36cf936.png

Attention

d039e6ad8f2326c59402efdaed70c1e1.png

欢迎关注微信公众号《当交通遇上机器学习》!如果你和我一样是轨道交通、道路交通、城市规划相关领域的,也可以加微信:Dr_JinleiZhang,备注“进群”,加入交通大数据交流群!希望我们共同进步!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
这是一个典型的规划问题,可以使用lingo18软件进行求解。以下是对应的lingo18代码: ``` Model: Sets: shifts /shift1, shift2, shift3, shift4/; times /time1, time2, time3, time4, time5, time6/; Params: demand(time) demand for each time period / time1 20, time2 25, time3 10, time4 30, time5 20, time6 10 /; salary(shift) cost of each shift / shift1 800, shift2 800, shift3 900, shift4 900 /; worktime(shift) work time for each shift / shift1 8, shift2 8, shift3 9, shift4 9 /; resttime(shift) rest time for each shift / shift1 1, shift2 1, shift3 1, shift4 1 /; Variables: x(shift, time) binary decision variables obj total cost to minimize work(shift) total work time for each shift rest(shift) total rest time for each shift workload(time) total workload for each time period Binary Variables: x; Equations: total_cost objective function worktime_con(work(shift)) work time constraint resttime_con(rest(shift)) rest time constraint demand_con(workload(time)) demand constraint Bounds: x(shift, time) binary End: total_cost = sum((shift, time), x(shift, time) * salary(shift)); work(shift) = sum(time, x(shift, time) * worktime(shift)); rest(shift) = sum(time, x(shift, time) * resttime(shift)); workload(time) = sum(shift, x(shift, time)); worktime_con(work) =E= 8; resttime_con(rest) =E= 1; demand_con(workload("time1")) =G= demand("time1"); demand_con(workload("time2")) =G= demand("time2"); demand_con(workload("time3")) =G= demand("time3"); demand_con(workload("time4")) =G= demand("time4"); demand_con(workload("time5")) =G= demand("time5"); demand_con(workload("time6")) =G= demand("time6")); ``` 其中,Sets定义了班次和时间段,Params定义了需求人数、工资、工作时间和休息时间等参数,Variables定义了决策变量,Binary Variables定义了决策变量的值域,Equations定义了约束条件,Bounds定义了决策变量的范围。 在lingo18中执行该代码即可得到最优解,即最小化总工资的情况下满足所有需求的服务人员安排方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

当交通遇上机器学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值