基于多任务深度学习的时空网络流量预测 IEEE TKDE 2019

Flow Prediction in Spatio-Temporal Networks Based on Multitask Deep Learning

文章链接: Flow Prediction in Spatio-Temporal Networks Based on Multitask Deep Learning.

Abstract

时空网络中的流量预测(如车辆、人群和自行车的流量)在交通系统中起着重要的作用,它包括一个节点的进出流量和不同节点之间的过度。然而,这是一个非常具有挑战性的问题,它受到多种复杂因素的影响,如不同地点之间的空间相关性、不同时间间隔之间的时间相关性以及外部因素(如事件和天气)。此外,节点处的流(称为node flow)和节点之间的过渡(边缘流edge flow)相互影响。

为了解决这些问题,本文提出了一个多任务深度学习框架,它可以同时预测时空网络中的节点流和边缘流。在全卷积网络的基础上,本文设计了两个复杂的模型,分别用于预测节点流和边缘流。这两个模型通过耦合其中间层的潜在表示连接起来,并一起进行训练。外部因素(external factor)也通过门控融合机制整合到框架中。在边缘流预测模型中,本文采用嵌入组件来处理节点间的稀疏过渡。基于北京和纽约的出租车数据对本文的方法进行了评价。实验结果表明,该方法在ConvLSTM、CNN和马尔可夫随机场等11个基线之外都具有较好的性能。

一、Introduction

学习他的写法
在这里插入图片描述
上图说明了SP-network中的node flow和edge flow。
本文所做的工作就是实现以上预测。

挑战(难点):

  • Scale and complexity
    一个城市具有众多区域(N),区域间的交互存在( N 2 N^2 N2)的可能;同时还要考虑不同时间下的traffic变化,这给传统机器学习模型例如概率图带来了巨大的挑战。
  • Model multiple correlations and external factors(模型需要考虑多种相关性和额外因素)
  • Dynamics and sparsity
    N 2 N^2 N2中交互可能性下,下一时间区域间的transitions具体来看会非常稀疏(相对于 N 2 N^2 N2)。这给预测带来了很大挑战。

为解决以上挑战,本文提出了Multitask Deep-Learning(MDL)来统一和同时地(collectively and simultaneously)预测预测节点和边缘流(flow)。

本文贡献:

  • 提出的MDL框架通过deep neural network预测 flow at nodes(entitled NodeNet)和edge flow(entitled EDGENET),这两种深层神经网络通过它们的潜在层连接
### LSTM模型在多因素时间序列预测中的实现方法 LSTM(Long Short-Term Memory)是一种特殊的RNN结构,能够有效捕捉长期依赖关系,在处理时间序列数据方面表现出色。对于多因素的时间序列预测问题,可以通过构建一个多输入的LSTM模型来解决[^1]。 #### 数据准备 在多变量时间序列预测中,通常会涉及多个特征作为输入。这些特征可能包括历史观测值以及其他影响因子。为了使LSTM模型能够接受这样的输入,需要将原始数据转换成适合的形式。具体来说,假设存在`m`个特征和长度为`n`的历史窗口,则每个样本应表示为形状为`(n, m)`的张量。这种形式的数据可以直接馈送到LSTM层中进行训练。 #### 模型架构设计 一种常见的做法是采用堆叠式的LSTM网络结构,即在一个基础LSTM单元之上再叠加若干额外层次以增强表达能力。此外还可以加入全连接层用于最终输出阶段。下面给出一个简单的Keras代码示例展示如何定义这样一个模型: ```python from tensorflow.keras.models import Sequential from tensorflow.keras.layers import LSTM, Dense def build_lstm_model(input_shape, output_dim): model = Sequential() # 添加第一个LSTM层并设置返回序列标志为True以便后续继续传递给下一层 model.add(LSTM(50, activation='relu', input_shape=input_shape, return_sequences=True)) # 可选:增加更多隐藏层提升复杂度 model.add(LSTM(50, activation='relu')) # 输出层调整维度至目标大小 model.add(Dense(output_dim)) model.compile(optimizer='adam', loss='mse') return model ``` 上述函数接收两个参数:一个是输入数据的形状(`input_shape`);另一个是指定希望得到多少步未来的预测值(`output_dim`)。这里使用ReLU激活函数代替传统tanh有助于缓解梯度消失现象[^2]。 #### 训练策略 当面对较长跨度或者更高精度需求的任务时,单次运行整个过程可能会变得非常耗时甚至不可行。此时可以考虑采取分段式学习方案——即将整体任务拆解成为一系列较短子任务逐一完成。例如针对三步向前看的情况,可分别建立独立模型专门负责每一步单独估计工作。 然而值得注意的是这种方法虽然简化了计算流程但也引入了一些局限性如增加了维护成本以及潜在一致性风险等问题因此需谨慎权衡利弊后再做决定。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值