时空编解码器残差多图卷积网络预测OD客流需求

2023-10-26

在这里插入图片描述
paper title
《Predicting origin-destination ride-sourcing demand with a spatio-temporal encoder-decoder residual multi-graph convolutional network》

导读
随着移动互联网技术的快速发展,网约车服务变得越来越受欢迎,并在很大程度上改变了人们的出行方式。需求预测是网约车平台供需管理系统中最基本的组成部分之一。通过对起点-目的地(OD)需求进行准确的短期预测,这些平台可以在实时匹配、闲置车辆重新分配和拼车车辆路线等方面做出精确和及时的决策。与基于区域的需求预测相比,基于OD的需求预测更具挑战性。这主要是由于不同OD对的需求之间存在复杂的空间和时间依赖关系。为了克服这一挑战,这篇文章提出了时空编解码器残差多图卷积网络(ST-ED-RMGC),这是一种新的深度学习模型,用于预测不同OD对的乘车需求。该模型首先构造OD图,利用邻接矩阵来刻画不同OD对之间的非欧几里得成对的地理和语义相关性。其次,在构造的图的基础上,利用残差多图卷积(RMGC)网络对上下文感知的空间依赖进行编码,用长短期记忆(LSTM)网络将时间依赖性编码到稠密向量空间。最后,利用RMGC网络将压缩后的向量解码成OD图,并对未来OD需求进行预测。通过在纽约市曼哈顿的出租车数据集上进行的大量实验,提出的深度学习框架比最新的深度学习框架要好。

问题定义

(1)区域划分:在这篇文章中,根据下图所示的行政邮政编码,将纽约市曼哈顿划分为不同的不规则区域。在时间间隔上一天被平均划分为几个间隔(例如,24小时)。目标是在每个时间间隔内同时预测不同OD对的需求量。
在这里插入图片描述

(2)OD图:与传统的交通网络图中每个顶点代表一个交叉口或一个区域不同,本文构造了一个特定的OD图G=(V,E,A),其中该图的每个顶点指的是一个OD对,如图所示。V是OD对的集合,N=|V|是每个时间间隔中的OD对的数量,E表示边的集合,并且A∈RN×N定义相邻矩阵,其元素表示顶点(即OD对)之间的连接。在这里,OD图是完全连接的,这表明任意两个OD对的边都存在连接。

在这里插入图片描述

(3)特征:设图片表示在第d天的时间间隔t的第i个OD对中的乘客需求(请求订单量),其中i∈V(OD对的集合),图片∈R+。设图片表示在第d天的时间间隔t的所有OD对中的乘客需求。为了预测图片,可以使用第d天的时间间隔t之前的所有OD需求作为特征。然而,由于计算资源的限制,将所有的历史OD需求都输入到模型中是不必要的,也是不可行的。考虑主要有两种时间相依性:趋势性(需求受过去几个区间的历史需求影响)和周期性(需求在几天和几周内重复类似的模式)。有了这些知识,构造以下历史数据的特征:

1)基于趋势的特征:OD图中最近两个时间间隔的需求

2)基于周期的一天内特征:前一天相同时间间隔的OD图中的需求

3)基于周期的一周内特征:OD图中上周同一天同一时间间隔的需求。

(4)问题定义:学习函数f(∙):RN×T→RN,该函数将OD图上所有OD对的历史需求映射到下一个时间间隔内同一OD图上的所有OD对的需求:

在这里插入图片描述

模型方法

下图简要展示了提出的ST-ED-RMGC模型的体系结构,该模型使用编码器-解码器框架。有两个编码器:一个空间编码器和一个时间编码器。空间编码器利用多个RMGC从不同的角度对OD对之间的空间相关性(包括地理距离、功能相似性和移动性模式相关性)进行建模。时间编码器提出了一种空间LSTM模型来学习每个OD对的时间相关性。为了将空间和时间模型融合在一个端到端的学习框架中,将两个解码器的输出平坦化为两个稠密紧邻向量,然后将这两个向量连接起来。最后,在解码器部分,利用多个RMGC网络将压缩后的向量转换回OD图,用于预测目标OD需求。
在这里插入图片描述

模拟OD对之间的空间相关性:

本小节为多图建模,并定义相应的相邻矩阵。为了准确地预测OD需求,该模型使用OD对相关性的测量值,通过空间上相关OD对的历史需求数据来校准OD需求。这意味着探索OD对之间在地理和语义上的内在关系是至关重要的。从地理角度来看,如果两个OD对的始发地/目的地彼此相邻,我们自然可以预期这两个OD对的需求具有很强的相关性(因为需求可能源自共同的公交站、购物中心或小区等)。这促使我们设计一个邻里关系图,以指示起点或终点中是否有两个彼此相邻。我们还预计,具有较近起点或/和目的地的两个OD对的需求具有相对较强的相关性,这促使我们构造一个相邻矩阵,分别描述两个OD对起点和目的地质心之间的距离。从语义上看,一般认为两个功能相近的OD对(如商业区、娱乐区、住宅区)的需求往往有很强的关联性。此外,可以直观地预期,具有相似历史需求模式的OD对在未来将呈现类似的需求模式。因此,四种类型的相邻矩阵的定义如下:(1)邻域关系图Gn(V,E,An),An∈RN×N;(2) 功能相似性图GF(V,E,Af),Af∈RN×N;(3)质心距离图Gd(V,E,Ad),Ad∈RN×N;(4)移动模式关联图GC(V,E,Ac),Ac∈RN×N。

(1)邻域关系图。OD对中具有相邻起点或终点的需求更有可能具有相似的模式。文章定义两个相邻的矩阵来分别指示两个OD对是否具有相邻的起点或终点:

在这里插入图片描述
在这里插入图片描述

2)功能相似图。城市中的不同区域可能具有不同的功能或土地使用属性。一些是商业区,有许多购物中心和饭店,一些是带公园的旅游区,有些是充满部门和房屋的住宅区。这篇文章中,使用土地属性来定义曼哈顿区域的功能。选择的属性涉及没有汽车的家庭,房屋密度,人口密度,就业密度,道路密度以及到最近公交站的平均距离,这与土地使用类型和出行方式的选择高度相关。由于行政区域具有不同的区域,因此将所有这些度量除以相应区域的面积。可以构建两个功能相似的相邻矩阵:

在这里插入图片描述
在这里插入图片描述

(3)质心距离图。由于不同大小的不规则区域,进一步引入两个质心距离图来表示OD对之间的地理关系。区域质心之间的直线距离(距离越短,关系越强),如下所示:

在这里插入图片描述

Haversine(∙)函数用于测量地球上两个位置之间的直线距离

在这里插入图片描述

(4)移动模式关联图。直觉上,具有类似移动性模式(历史需求趋势)的OD对共享一些相同的特征,因此可以相互指导预测。然后,移动模式相关图的相邻矩阵由下式表示:
在这里插入图片描述

其中Cov(∙,∙)计算两个向量之间的协方差,而var(∙)计算一个向量的方差。
在这里插入图片描述
残差多图卷积(RMGC)网络

接下来介绍结合多图卷积网络和残差模块的RMGC网络,以捕获OD对之间的空间相关性。在模型中,RMGC网络的基础是GCN,它是空间特征编码的主要工具。为了解决多图问题,通过重塑GCN层的架构来设计MGC网络。MGC充当此空间特征编码器的基本组件。然后,在深度学习网络中堆叠多个MGC层以提高训练性能,并引入残差网络以解决梯度爆炸问题,该问题构成了RMGC块。这种基于RMGC的编码器的输出是通过多层RMGC块生成的,并且被展平为一个一维特征。接下来,详细扩展上述RMGC网络的原理和结构。

在本文中,使用基于频谱的方法来构建基本的GCN模型,该模型实质上将原始图形信号(图形上的原始特征)映射到参数化的傅里叶域。然而,训练参数在计算上是昂贵的。为了解决这个问题,引入了切比雪夫多项式展开式(最高K阶)以获得有效逼近,后来,进一步将频谱滤波器简化为K = 1的切比雪夫多项式。后来的模型也称为一阶切比雪夫,具有以下形式:

在这里插入图片描述

接下来,为了能够从多个图形中学习,设计了如下图所示的训练架构。假设有K个相邻矩阵,并且让Ak∈RN×N表示第k个邻接矩阵,k∊ {1,⋯,K }。在批量大小为B的每个训练批次中,首先将每个邻接矩阵复制B次,然后将它们连接成张量A∈RB×(N * K)×N。给定输入和输出特征的维分别为F和O,则得到输入张量Hl∈RB×N×F,可学习权重矩阵W∈R(K * F)×O和输出张量Hl + 1∈RB×N×O。为了将输入张量H1映射到输出张量Hl + 1,首先在A¨和H1之间进行批处理,生成一个张量M∈RB×(N * K)×F。然后将生成的张量M重整为新的张量M∈RB×N×(F * K),最后M和W的批点积产生输出张量Hl + 1∈RB×N×O。

在这里插入图片描述

然后,为了在不遭受梯度爆炸的情况下在深层神经网络结构中训练网络,开发两种基于多图卷积网络(基于MGC)的残差块。一种在捷径上添加一个MGC,另外一种在捷径上不添加MGC。基本残差单位由下式表示:

在这里插入图片描述

其中,右侧的第一项指的是捷径,第二项指的是主路径。值得注意的是,通常的做法是在主路径中堆叠多个MGC层。此外,在输入张量H1和输出张量H1+1之间需要不同的特征维度的情况下,可以将MGC层添加到快捷路径以保持特征维度的一致性(如图)。这种残差块称为卷积块。
在这里插入图片描述

构造RMGC之后,堆叠多个两种模块,并将输出展平为具有一维特征的潜矢量,作为此RMGC编码器的最终输出:
在这里插入图片描述

其中,L1的维度为B×V1,其中B是批次大小,V1是RMGC编码器的潜在特征维度。

空间LSTM

本小节介绍了空间LSTM编码器,它主要捕获了时间特征。与常规LSTM稍有不同,本文中的空间LSTM需要同时处理具有空间和时间信息的输入张量。为此,文章开发了空间LSTM,它是编码器的一部分,其技术细节如下所示。

LSTM作为递归神经网络,被广泛用于许多交通需求预测问题中。在大多数以前的研究中,将一个区域或一个路段的历史特征作为输入,并预测下一个时间间隔对该区域或路段的需求。在这篇文章中,为了以一种更明智的方式将空间和时间模型整合到一个端到端的学习框架中,提出了一种空间LSTM,它从所有OD对中学习特征,并将高层信息输出到潜在向量中,而不是对每个OD对使用各种单独的LSTM。特征X的输入具有B×N×F的形状,即X∈RB×N×F,其中B是批处理大小,F是用于提取历史特征的切片窗口数。在RMGC编码器中,将F个历史观测值(即所有OD对随时间的需求)视为特征;OD对的数量(即N)是输出张量的目标尺寸。但是,使用空间LSTM训练时间序列数据,空间节点的信息应成为特征。因此,空间LSTM首先通过移置X的第二维和第三维来重塑X,从而形成形状为B×F×N的新张量X,即X∈RB×F×N。使用X作为输入张量,LSTM将F的第二维视为时间维,将N的第三维视为特征维。换句话说,所有OD对中的历史需求都被视为馈送到一个LSTM中的特征。

构建空间LSTM模块后,堆叠多个LSTM模块并将输出张量展平为潜矢量:

在这里插入图片描述

其中,L2具有B×V2的维度,其中V2是空间LSTM编码器的潜在特征维度

融合

文章只将上述两个编码器的输出串联在一起就可以将它们融合在一起:

在这里插入图片描述

潜向量L包含历史需求的时空特征。为了预测未来的OD需求,首先引入一个中间层,以将向量L的维数扩展为形状为B×N的新向量,然后,将新矢量重塑为形状为B×N×1的张量,这成为RMGC的有效输入格式。通过堆叠RMGC模块,最终可以在OD图上获得所有OD对的估计需求。形式上,解码器架构可以由

在这里插入图片描述

损失函数:

在这里插入图片描述

模型配置

在编码器中,文章堆叠了一个RMGC卷积块和一个RMGC标识块。RMGC卷积块的主路径包含三个MGC层(具有32、32、128个隐藏单元),而快捷路径包含一个MGC层(具有128个隐藏单元)。RMGC标识块具有包含三个MGC层(具有32、32、128个隐藏单元)的主路径。另一方面,时间编码器包括两个LSTM层,分别具有128和64个隐藏单元。RMGC和LSTM编码器的输出被平坦化,然后分别变换成两个维数分别为900和100的潜在向量。解码器使用一个RMGC卷积块,然后使用一个RMGC标识块,具有与编码器中相同的设置,随后是生成估计OD需求的MGC层。隐藏层中的所有激活都是Relu函数,而最后输出中的激活函数是线性函数。模型中使用的优化器是Adam,学习率为5e-5,衰减率为1e-6。在训练阶段,将批大小设置为32。

创新点

(1)通过构造多个OD图来刻画不同OD对之间的成对关系,包括基于起点和终点的邻域关系图、基于起点和终点的功能相似图、基于起点和终点的距离图以及移动模式关联图。

(2)提出了一种新的深度学习模型,该模型具有良好的编解码器结构,既能模拟不同OD对之间的空间依赖关系,又能模拟OD对本身的时间依赖关系。该结构在端到端的学习框架中学习空间和时间特征。

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

时空编解码器残差多图卷积网络预测OD客流需求 的相关文章

  • pygame中盒子的连续移动

    我编写了以下代码来创建一个简单的游戏 当您单击键盘上的箭头时 一个框会在游戏中移动一个单位 我试图做到这一点 以便如果我按下任何箭头按钮 盒子将继续朝该方向移动 直到按下另一个箭头 因此 如果我按一次向右箭头而不是快速移动 50 像素 它将
  • Python 代码中标识符错误中的无效字符

    对于以下代码 我收到 标识符中的无效字符 错误 显示错误时 第 3 行中的 http 会突出显示 我是Python新手 请帮忙 import requests import html r requests get http cricapi
  • Django 无效的 HTTP_HOST 标头:“testserver”。您可能需要将 u'testserver' 添加到 ALLOWED_HOSTS

    我开始学习 Django 我正在实现 测试视图 功能 当我使用测试客户端在shell中 异常发生如下 无效的 HTTP HOST 标头 testserver 您可能需要将 u testserver 添加到 ALLOWED HOSTS 我在
  • 在Python中对字典键进行排序[重复]

    这个问题在这里已经有答案了 我有一个字典 其中每个键引用一个 int 值 根据值将键排序到列表中的最佳方法是什么 我喜欢这一个 sorted d key d get
  • 我正在尝试在Python中执行有向图的传递约简

    作为警告 我对 python 仍然有点缺乏经验 我正在尝试使用 networkx 库执行有向图的传递约简 我已经想出了一个算法 但在实现它时遇到了困难 经过快速搜索 我在其他堆栈交换问题中找到了与我类似的算法 但没有演示如何实际编码该算法
  • 姜戈。 Python 社交身份验证。在管道末端创建配置文件

    我想在身份验证管道的末尾添加一个函数 该函数旨在检查该用户是否有 配置文件 表 如果没有 它将创建一个表 Profiles 模型是一个表 我在其中存储有关用户的一些额外信息 class Profiles models Model user
  • Python 中的静态变量继承

    我正在为 Blender 的一个项目编写 Python 脚本 但我对该语言还很陌生 我感到困惑的是静态变量的使用 这是我目前正在处理的代码片段 class panelToggle bpy types Operator active Fals
  • “from Six.moves import urllib”在 Python 中做什么?

    我在 Python 代码中发现了以下行 from six moves import urllib 同时 我可以找到urllib py任何地方 我发现有一个文件six py在包根目录中 它有class Module six moves url
  • 如何使用 gliderlabs/alpine:3.3 在 Dockerfile 中设置时区

    我的 Dockerfile 是 FROM gliderlabs alpine 3 3 RUN set x buildDeps python dev py pip build base apk update add python py lxm
  • SymPy 中指数到三角函数的转换同时简化 - 一个顽固的表达式

    我一直在努力简化 exp 2 I N 1 2 exp 2 I N 1 2 4 exp 2 I N cos N 2 答案应该是 sin N 2 但输出与输入相同 我努力了 rewrite cos 然后简化 触发 扩展以及几乎所有我可以从帮助资
  • 将图像从 CV_64F 转换为 CV_8U

    我想转换类型的图像CV 64FC1 to CV 8UC1在 Python 中使用 OpenCV 在 C 中 使用convertTo函数 我们可以使用以下代码片段轻松转换图像类型 image convertTo image CV 8UC1 我
  • python条件运算符中“and”和“&”的奇怪行为[重复]

    这个问题在这里已经有答案了 以下是使用 和 and 条件运算符尝试的不同场景及其结果 使用Python 2 7 使用 运算符 使用 与 运算符 想知道为什么两个条件运算符表现出不同的行为 用真实场景进行解释会很有帮助 提前致谢 is not
  • 如何获取图标名称的完整文件路径?

    如何从 GNOME 中的图标名称获取完整文件路径 import gtk icon theme gtk icon theme get default icon info icon theme lookup icon my icon name
  • wxPython 上的 IPython

    我一直在尝试找到一种方法 让 IPython Shell 能够在wx Frame 在库代码或 Google 中搜索 基于 wxPython 的 IPython 小部件 https www google com search q wxPyth
  • 从数据框中删除所有非唯一行

    抱歉 这是我的第二篇文章 如果有什么不明白的地方请告诉我 我正在尝试删除所有有重复项的行 我已经尝试过keep False参数为drop duplicates 它只是没有做正确的事情 假设我的数据框看起来像这样 ORDER ID ITEM
  • 将 freebase 向量与 gensim 一起使用

    我正在尝试使用 Google 发布的 freebase 单词嵌入 但我很难从 freebase 名称中获取单词 model gensim models Word2Vec load word2vec format freebase vecto
  • 将 sys.stdout 重定向到 python 日志记录

    所以现在我们有很多 python 脚本 我们正在尝试整合它们并修复和冗余 我们正在尝试做的事情之一是确保所有 sys stdout sys stderr 都进入 python 日志记录模块 现在最重要的是 我们希望打印出以下内容
  • NumPy 追加与 Python 追加

    在 Python 中 我可以附加到一个空数组 例如 gt gt gt a gt gt gt a append 1 2 3 gt gt gt a append 1 2 3 gt gt gt a 1 2 3 1 2 3 我怎样才能在 NumPy
  • 如何在 Jupyter Notebook 中加载 CSV 文件?

    我是新人 正在研究机器学习 我偶然发现了一个在网上找到的教程 我想让该程序运行起来 这样我就能更好地理解 但是 我在将 CSV 文件加载到 Jupyter Notebook 时遇到问题 我收到此错误 File
  • 使用python远程执行shell脚本

    有没有一种方法可以让我在 Windows 上使用 Python 来执行位于远程 Unix 计算机上的 shell 脚本 P S 抱歉编辑晚了 我确实知道 Paramiko 但我想知道是否有办法在没有它的情况下做到这一点 对于初学者来说 可以

随机推荐

  • 数据分析——数据特征描述、画箱线图、分组直方图

    数据特征描述 import pandas as pd catering sale r H school 数据挖掘 实验 实验二 catering sale xls data pd read excel catering sale index
  • 如何对SQL Server中的tempdb“减肥”

    SQL Server会自动创建一个名为tempdb的数据库作为工作空间使
  • checkstyle:off 使用注释暂时禁用checkstyle检查

    背景 本文介绍在Gradle中 如何跳过checkstyle对指定的文件 或者指定的代码块 的检查 步骤 1 在checkstyle xml的
  • Typescript常见表达式

    Typescript常见表达式 一 析构表达式 destructuring 1 数组析构表达式 用中括号括起来 var array1 1 2 3 4 function doSomething number1 number2 others c
  • Java基础---反射、多线程

    十 反射机制 1 Java反射机制概述 1 1Java Reflection Reflection 反射 是被犯为动态语言的关键 反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息 并能直接操作任意对象的内部属性
  • datetime.time类介绍

    一 time是一个时间类 由时 分 秒 微妙组成 其构造函数如下 class datetime time hour minute second microsecond tzinfo 参数tzinfo 它表示时区信息 各参数的取值范围 hou
  • window安装docker Desktop和wsl2

    目录 一 先到微软商店下载terminal 也就是power shell 后续命令都在这个里面执行 二 安装docker Destop 1 打开控制面板 2 勾选Hyper V服务 3 根据提示重启电脑 等待更新即可 二 启动Docker
  • 字符串去重的5种方式

    public class Demo public static void main String args String str albcad12l gt sfg gt String newStr quChong5 str System o
  • 深度负反馈

    负反馈放大电路的方块图 因为负反馈放大电路有四种组态 而且对于同一种组态 具体电路也各不相同 所以为了研究负反馈放大电路的共同规律 可以利用方块图来描述所有电路 一 负反馈放大电路的方块图表示法 任何负反馈放大电路都可以用下图所示的方块图来
  • windows服务器禁用135,137,138,139,445端口方法

    windows服务器禁用135 137 138 139 445端口方法 1 防火墙新建入站和出站规则 注意 此方法只针对防火墙已开启的情况下才能实现禁用端口 打开控制面板 系统和安全 Windows Defender 防火墙 在左侧选择 高
  • 安装Apache Hive-2.3.3

    1 Hive是什么 1 1 Hive是数据仓库 数据仓库英文名DataWarehouse 可简写为DW或DWH 数据仓库 由数据仓库之父比尔 恩门 Bill Inmon 于1990年提出 主要功能仍是将组织透过资讯系统之联机事务处理 OLT
  • 【H.264/AVC视频编解码技术详解】十七:帧内预测编码的预测实现方法

    H 264 AVC视频编解码技术详解 视频教程已经在 CSDN学院 上线 视频中详述了H 264的背景 标准协议和实现 并通过一个实战工程的形式对H 264的标准进行解析和实现 欢迎观看 纸上得来终觉浅 绝知此事要躬行 只有自己按照标准文档
  • pandas.read_csv参数整理

    pandas read csv参数整理 转载 读取CSV 逗号分割 文件到DataFrame 也支持文件的部分导入和选择迭代 更多帮助参见 http pandas pydata org pandas docs stable io html
  • 如何当个优秀的文档工程师?从 TC China 看技术文档工程师的自我修养

    本文系 NebulaGraph Community Academic 技术文档工程师 Abby 的参会观感 讲述了她在中国技术传播大会分享的收获以及感悟 据说 技术内容领域 传播领域的专家和决策者们会在中国技术传播大会 tcworld Ch
  • 实施静态分析并非易事

    针对软件错误和漏洞的静态分析测试 SAST 应该成为应用程序安全性和软件质量程序的一部分 您需要做的就是运行一个工具 它将在开发的早期发现价格便宜且易于修复的错误 听起来很简单 但是 这不仅需要购买工具并运行扫描 还需要将代码上传到测试服务
  • 【云原生】Docker镜像、容器、仓库、配置等常见问题汇总(面试必看)

    Docker 常见问题整理汇总 本文目录 一 镜像相关 二 容器相关 三 仓库相关 四 配置相关 五 Docker与虚拟化 六 其它常见问题 一 镜像相关 1 如何批量清理临时镜像文件 可以使用sudo docker rmi sudo do
  • C++入门基础07:函数定义与声明、函数传参(传值、传地址、传引用)、函数重载

    C 入门基础07 函数定义与声明 函数传参 传值 传地址 传引用 函数重载 1 函数定义与声明 函数是一起执行一个任务的一组语句 每个程序 C C 都有一个主函数 main 所有简单的程序都可以定义其他额外的函数 可以把代码划分到不同的函数
  • 上位机发送FINS UDP命令读写欧姆龙PLC数据

    上位机通过发送FINS UDP命令读写欧姆龙PLC内部数据 可以用于上位机socket通讯测试 客户服务中心 打开 Sockettool软件 新建一个UDP客户端 HTcP TIP urIEl调试工具W 创 H隊 是出 H TCP H TC
  • 服务器物理内存总是九十几,服务器物理内存使用率90以上

    服务器物理内存使用率90以上 内容精选 换一换 开启弹性云服务器的虚拟内存后 会导致硬盘I O性能下降 因此 平台提供的Windows弹性云服务器默认未配置虚拟内存 如果弹性云服务器内存不足 建议通过 变更规格 操作来扩大内存 如果业务需要
  • 时空编解码器残差多图卷积网络预测OD客流需求

    paper title Predicting origin destination ride sourcing demand with a spatio temporal encoder decoder residual multi gra