基于卷积的序列交叉网络的人口流量预测

1、文章信息

《A Sequential Convolution Network for Population Flow Prediction with Explicitly Correlation Modelling》。北京信息科学与技术国家研究中心 (BNRist) 发表在IJCAI 2020上的一篇文章。

2、摘要

人口流量预测是城市管理、交通调度等许多应用中最基本的内容之一。由于复杂的时空相关性,这是一项艰巨的任务。尽管近年来进行了许多研究,但他们未能同时有效地建模人口流动之间的空间相关性和时间变化。本文提出了基于卷积的顺序交叉网络(CSCNet)来解决这些难题。一方面,本文设计了一种基于CNN的序列结构,将不同时间的流量特征在不同的CNN层中逐步合并,同时对时空信息进行建模。另一方面,本文利用转移流量作为代理,以有效和明确地捕获不同类型人口流动之间的动态相关性。在4个数据集上的实验表明,CSCNet的预测误差比前沿的对比方法降低了7.7%-10.4%左右。

3、研究内容

给定历史的人口流量入\流量出流量X_i 和转移流量Y_i 预测 X_k

第i个时间段 H * W个网格的人口流量入和流量出流量:

第i个时间段一个网格区域 (h, w) 的人口流量入/流量出流量:

第i个时间段 H * W个网格的人口流量入和流量出流量:

R = H * W 代表区域总数

第i个时间段任意网格(m,n)的转移流量:

其中为一个网格区域,S为轨迹,i为第几个时间段。

图1  人口流量示例

4、模型

图2为本文提出的CSCNet模型,由三个部分组成:1)用于人口流量(流入/流出)特征提取和朴素预测的流量递归网(FRN);2)用于人口转移流量建模的转移流量预测器(TFP);3)特征交叉网(FCN)融合不同类型人口流量(流入/流出/转移流量)的特征,并显式地对其动态相关性进行建模。

图2  模型概述

基础功能单元

模型使用了三个基于CNN的标准功能单元:(1)局部特征提取;(2)特征融合;(3)预测器,如图3。这些都是基于3x3卷积单元和relu函数构建的。

图3  CSCNet的三个基础功能单元

(Local为短期时间步长,Global为具有多个时间步长的长期时间窗口)

流量循环网FRN

如图4,FRN引入周期性的融合单元群,使得每个融合单元专注建模特定时间步长的人口流量动特征。如图2,以顺序的人口流量的映射作为输入。FRN首先利用共享的局部提取单元提取每个时间步的空间特征,然后堆叠特征融合单元来顺序处理空间特征以获得全局特征的映射。最后,将全局特征映射通过预测器转换为人口流量映射预测。

图4  FRN

截断转移流量

如图5所示,在Z轴方向上排列H * W网格区域的转移流量映射以获得原始转移流量张量。本文设计了截断的转移流量映射表示总体转移流量的精细方向信息。尽管包含有关流的更多信息,但完整的转移流映射是高维和高动态的。因此,本文提出了一种阶段的转移流映射,在只保留局部方向信息的情况下从中提取知识。

图5  截断的转移流量映射构建

通过FCN融合流量特征

FCN的核心思想是将区域的流入特征解释为附近区域流量特征的加权和,该总和由转移流量记录,如图6。

图6  FCN

图7显示了如何通过使用转移流量映射作为指导从原始流出特征映射中生成“新”流入特征。

图7  将转移流量特征应用于流出特征以获得“新”流入特征的说明

5、实验

本文在4个数据集上进行实验:MobileBJ, BikeNYC, NYCTaxi, NYCBike。前两个数据集仅包含了聚合的人口流量数据,本文选择后两个数据集构建新的人口流量和转移流量。选择了8种对比方法,前6种不考虑转移流量。RMSE和MAE作为评价指标。

表1  对比实验

除此之外,本文还分析了历史时间步长、FRN中融合单元的卷积个数和融合单元个数,以及FCN中转移空间范围等超参数对实验结果的影响。

6、总结

本文研究了人口流量预测问题,使用带有FRN的CSCNet来同时对时空特征进行建模,并使用FCN来显式捕获不同类型的人口流动之间的相关性。在四个真实的数据集上评估了提出的模型,证明本文的模型优于所选的SOTA算法。在未来,本文将考虑使用更灵活的几何模型(例如GNN)来扩展所提出方法的应用场景。

引用

Feng J, Lin Z, Xia T, et al. A Sequential Convolution Network for Population Flow Prediction with Explicitly Correlation Modelling[J].

关于这篇文章我也写过相关的解读推送,主要分为多任务学习和OD矩阵预测:

Attention

如果你和我一样是轨道交通、道路交通、城市规划相关领域的,可以加微信:Dr_JinleiZhang,备注“进群”,加入交通大数据交流量群!希望我们共同进步!

以下是一个基于CNN的时间序列预测的Matlab代码示例: ```matlab % 加载数据 load sunspot.mat % 划分训练集和测试集 train_data = zscore(sunspot(1:250)); test_data = zscore(sunspot(251:end)); % 参数设置 input_size = 12; % 输入序列长度 output_size = 1; % 输出序列长度 num_filters = 8; % 卷积核数量 filter_size = 3; % 卷积核尺寸 num_epochs = 50; % 训练轮数 batch_size = 32; % 批次大小 % 构建CNN模型 layers = [ ... sequenceInputLayer(input_size) convolution1dLayer(filter_size, num_filters, 'Padding', 'same') reluLayer maxPooling1dLayer(2, 'Stride', 2) fullyConnectedLayer(output_size) regressionLayer]; % 设置训练选项 options = trainingOptions('adam', ... 'MaxEpochs', num_epochs, ... 'MiniBatchSize', batch_size, ... 'ValidationData', {test_data(1:end-1), test_data(2:end)}, ... 'ValidationFrequency', 5, ... 'Plots', 'training-progress'); % 训练模型 net = trainNetwork(train_data(1:end-1), train_data(2:end), layers, options); % 预测 pred_test = predict(net, test_data(1:end-1)); % 画图比较预测结果和实际结果 figure plot(test_data(2:end)) hold on plot(pred_test) legend('Actual', 'Predicted') ``` 这个例子使用卷积神经网络预测太阳黑子数目的时间序列。首先,加载数据,并将前250个数据作为训练集,后面的数据作为测试集。然后,设置CNN模型的参数,包括输入序列长度、卷积核数量、卷积核尺寸、输出序列长度、训练轮数和批次大小。接着,构建CNN模型,包括输入层、卷积层、ReLU层、最大池化层、全连接层和回归层。然后,设置训练选项,包括优化器、最大训练轮数、批次大小、验证集、验证频率和绘图选项。最后,用训练数据训练模型,并用测试数据进行预测。最后画图比较预测结果和实际结果。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

当交通遇上机器学习

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

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

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

打赏作者

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

抵扣说明:

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

余额充值