交通预见未来(21): 出行需求预测新视角---基于图卷积神经网络GCN的出租车OD需求预测

1、文章信息

《Origin-Destination Matrix Prediction via Graph Convolution: a New Perspective of Passenger Demand Modeling》。

北航计算机学院发在2019KDD上的一篇论文。

2、摘要

为了获得乘客的出行模式,打车平台需要提前预测一个地区到另一个地区的乘客需求数量,即OD矩阵预测(ODMP)问题。OD矩阵预测比普通需求预测更具挑战性。除了要预测一个地区的需求产生量,还需要预测需求的目的地。此外,数据稀疏性是一个严重的问题。因此本文提出了一种基于网格嵌入的单馈多任务学习模型(GEML)。该模型主要包含两个部分,分别提取时间信息和空间信息。网格嵌入部分是为了对乘客的空间移动模式和不同区域的相邻关系进行建模,其预加权聚合器的目的是感知数据的稀疏性和范围;多任务学习部分则侧重于时间属性建模和捕获ODMP问题目标。两个数据集-UCAR和Didi-的结果表明GEML方法优于基准模型。

3、简介

除了预测某一区域内可能的乘客需求数量外,了解每次出行的来源地和目的地的乘客需求也很重要。因为不同时段两个区域之间的需求量不仅承载着乘客需求的强度,而且有利于挖掘有用的出行模式。本文从一个新的角度研究了乘客需求模型,即OD矩阵预测(ODMP)。OD矩阵包含两个方面的信息: (1)不同的OD组合; (2)每个OD对的旅客需求数量。ODMP的目标是预测在给定时间段内从一个地理区域到另一个地理区域的叫车订单数量。为了同时兼顾出行产生量和目的地,时空特性以及数据稀疏性,本文提出了一种基于网格嵌入的单馈多任务学习模型(GEML),以基于图对出行模式进行建模。具体来说,我们用图表示与地理区域相关的乘客订单记录,其中节点表示地理区域(以网格形式定义),节点之间的边表示乘客需求,边权重表示订单数量。利用改进后的网格,可以构造出给定时间间隔内的OD矩阵。如图1所示,将区域划分为16个网格,订单记录汇总在相应的OD矩阵中。

本文模型的灵感来自于最近大火的GCNs,然而如果我们直接将已有的GCNs应用到OD矩阵所生成的图上,由于数据稀疏,学习到的具有很少订单的网格嵌入往往是不可靠和无效的,此外,如果没有任何历史订单记录的孤立节点(例如,新建社区),学习到的网格嵌入也是不可行的(无论作为O点还是D点)。为了缓解数据的稀疏性问题,我们提出基于地理学第一定律探索网格的地理相关性,即所有的东西都是相关的,但附近的东西比遥远的东西更相关。例如,在两个地理位置相近的网格中,乘客需求的数量往往接近彼此。特别地,我们考虑了网格嵌入部分的两种邻域,即地理邻域(地理上相邻的)和语义领域(通过OD流连接起来的)。前者用于度量一个网格与其邻域之间的内在紧密程度,后者用于对网络OD之间的交通流强度建模。

基于网格嵌入学习得到的网格的表示,结合乘客需求的重要时间信息,设计了一个面向ODMP的多任务神经网络。受既有工作的启发,我们对一个网格的流入流和流出流分别建模,预测每个网格在不同时间段的流入和流出需求数量。引入这两个子任务的基本原理是,我们能够在每个网格上单独捕获更多的动态出行模式。通过补充两个单独的子任务,总体需求预测任务可以捕获更强的内在时间模式,因为每个网格中的总体需求具有更大的规模或粒度。例如,在早高峰时段,当网格划分的粒度很小时,网约车需求的目的地可能存在很大不同,导致数据稀疏性问题,这意味着乘客需求的目的地可能分布得非常广泛,但这些网格的总流入流和流出流是非常大的。

本文主要贡献如下:

(1)提出OD矩阵预测问题预测给定时间段内的OD乘客需求,这对于网约车平台运营管理具有重要意义。

(2)将研究区域划分为网格,设计了网格嵌入网络,通过在新定义的网格邻域(地理和语义邻域)之间的图卷积,对每个网格进行嵌入,该网络通过模仿GCNs中的信息传递模式来模拟不同网格之间的OD流关系。

(3)借助LSTM设计了一个多任务学习网络用于捕捉乘客需求的时间趋势。两个子任务预测网格中的单个流入流和流出流需求,而主任务预测每对网格之间的需求。

(4)在两个真实大规模叫车数据集上的大量实验表明提出的GEML模型性能优于基准模型。

4、模型框架

GEML模型能同时捕获空间和时间特性。从空间角度出发,提出了一种基于邻域的网格嵌入方法,通过聚集邻域信息来学习每个网格的向量表示。从时间的角度,我们设计了一个多任务学习框架来模拟乘客需求随时间的动态趋势。接下来,我们将介绍网格嵌入和多任务学习的技术细节。

4.1 Grid Embedding

在ODMP环境下,提出了网格嵌入部分的两种邻域,即地理邻域(地理上相邻的)和语义领域(通过OD流连接起来的)。前者用于度量一个网格与其邻域之间的内在紧密程度,后者用于对网络OD之间的交通流强度建模,如图所示。

1Geographical Neighborhood

两个区域中心点之间的距离小于一定的阈值可定义为地理邻域。

(2)Semantic Neighborhood

如果两个区域之间至少有一个OD流 (可以是相反方向), 即可定义为两者为语义邻域。在任意时间段t′= 1, 2,…,我们可以通过公式2获取网格i的语义邻域。由式(2)可知,不同网格在不同时间间隔的语义邻居个数是不确定的。由于ODMP问题对时间敏感,因此考虑不同网格在不同时间间隔的语义关系至关重要。

(3)Pre-Weighted Aggregator for Grid Embedding

我们通过聚合地理邻域Φ和语义邻域Ω推断每个网格的向量表示,我们不是为每个网格训练一个不同的嵌入向量,而是训练一个聚合器函数,它学会从网格的邻域中积累和选择特征信息。在详细介绍用于网格嵌入的预加权聚合器之前,我们首先简要介绍[10]采用的朴素聚合器形式:

vi是网格gi的嵌入向量,MEAN(·)表示对应元素均值,vj是网格gj的嵌入向量,朴素聚合方法即是计算vi’和vj’对应元素的均值,并将它们连接到之前的特性vi’。 然而,尽管有一些基本聚合器的变体(例如pooling aggregator and LSTM aggregator),现有的图卷积聚合方法在ODMP场景下缺乏充分捕捉不同网格之间关系的能力,无法进行需求建模,原因是这些聚合器在融合每个网格邻居的所有特性时无法区分它们的重要性,直观地说,两个网格之间的地理距离越近,它们的属性就越相似。此外,在语义邻居集中,邻居网格的受欢迎程度应该对聚合过程产生影响,因为它保留了具有代表性的出行模式。

在此基础上,提出了一种预加权聚合器,该聚合器可以选择性地将重点放在网格嵌入的重要邻域上。对于网格的地理邻域,我们利用相邻区域之间的距离作为聚合器的权重因子。因此,我们将地理邻域的预加权聚合器表示为:

对于语义邻域,degree代表OD流量,即两个区域之间的OD流(从i到j或从j到i),ϵ是一个非常小的值接近于零,以防degree(gj) = 0。

注意,两种表示都是随时间变化的,是一个动态指标。最后,将两种语义表示连接起来得到一个网格最终的语义表示。

4.2 Multi-Task Learning

本节出了一种具有periodic-skip LSTM的多任务学习方案,如图4所示。

(1) Periodic-Skip LSTM

为了全面了解乘客需求的动态模式,我们从UCAR数据集中随机抽取了5天,并在图5中绘制了每天的每小时乘客需求。

显然,与此同时,乘客需求的数量也有类似的模式。然而,在预测下一小时的乘客需求时,LSTM中的序列建模方案将迫使模型从之前的连续小时中收集信息。这可能对需求预测没有多大帮助,因为不相关的输入会产生很多噪音。为此,为了更好地对周期性进行建模,我们取网格嵌入序列{vi1, vi2,…, vit}作为输入,进一步将Eq.(8)转换为Periodic-Skip LSTM,跳过不相关的顺序模式。

其中p是跳过的隐藏状态数。

(2)main task

由periodic-skip LSTM框架,我们可以得到在时间t网格gi的向量表示。为了得到OD矩阵中每一项mij的值,我们构造了一个过渡矩阵Wm∈R(d×d)以对OD流进行建模。此时,预测值m可由下式计算。损失函数为均方误差。

(3)Two Subtasks: Predicting the In- and Out-Degrees

在预测上述总体OD矩阵的主要任务的同时,我们还分别对流入流(p)和流出流(q)进行了建模。其中Win和Wout是用于将网格嵌入投影到标量的两个投影权重。损失函数为均方误差,G是网格的个数。

(4)损失函数

针对上述三个任务,我们将主要任务的损失和两个子任务的损失结合起来,制定出总体损失函数。

实验部分不再详述。

5、总结

总体而言,文章的研究角度确实很新,值得借鉴。但这篇文章仍有一个致命弱点,即没有考虑行程时间,由O点到D点需要一定的行程时间,因此实时的OD矩阵是不可能得到的,因此利用真实的历史OD矩阵作为输入在实时预测中是不可行的。

关注微信公众号《当交通遇上机器学习》,

后台回复“数据”即可获取高达175G的四个月的滴滴GPS数据和滴滴订单数据的获取方式,以及从数据处理(Oracle数据库)、模型构建(机器学习)、编程实现(python)到可视化(ArcGIS)等一系列视频教程。

后台回复“纽约”获取美国纽约10年的出租车轨迹数据以及7年的共享单车轨迹数据下载地址。

后台回复“芝加哥”获取美国芝加哥6年的共享单车轨迹数据下载地址。

后台回复“加州”获取美国加州近20年的交通流量监测数据下载地址。

公众号以交通大数据为主线,专注于人工智能、机器学习、深度学习在道路交通和轨道交通领域内的科研前沿与应用,在交通大数据与机器学习的道路上越走越远!

(21) 出行需求预测新视角---基于图卷积神经网络GCN的出租车OD需求预测相关推荐

  1. (16) 基于图卷积神经网络的轨道交通流量预测

    交通预见未来(16) 基于图卷积神经网络的轨道交通流量预测 1.文章信息 <Predicting Station-Level Short-Term Passenger Flow in a Cit ...

  2. (15) 基于图卷积神经网络的共享单车流量预测

    交通预见未来(3) 基于图卷积神经网络的共享单车流量预测 1.文章信息 <Bike Flow Prediction with Multi-Graph Convolutional Networks ...

  3. Chemistry.AI | 基于图卷积神经网络(GCN)预测分子性质

    GCN: Graph Convolutional Network(图卷积网络) 环境准备 Python版本:Python 3.6.8 PyTorch版本:PyTorch1.1.0 RDKit版本:RD ...

  4. WWW2021 | 基于图卷积神经网络的多样化推荐系统

    嘿,记得给"机器学习与推荐算法"添加星标 作者:王玉菡 单位:武汉理工大学 方向:跨域推荐 本文是一篇发表在WWW2021上的基于图卷积神经网络的多样性推荐系统的研究--DGCN: ...

  5. 图卷积神经网络(GCN)综述与实现(PyTorch版)

    图卷积神经网络(GCN)综述与实现(PyTorch版) 本文的实验环境为PyTorch = 1.11.0 + cu113,PyG = 2.0.4,相关依赖库和数据集的下载请见链接. 一.图卷积神经网络 ...

  6. 深入理解图卷积神经网络(GCN)原理

    深入理解图卷积神经网络(GCN)原理 文章目录 深入理解图卷积神经网络(GCN)原理 前言 一.为什么需要GCN 二.GCN的原理 1.图的定义 2.GCN来了 2.1 矩阵计算公式 2.2 以小规模 ...

  7. DeepLearning | 图卷积神经网络(GCN)解析(论文、算法、代码)

    本篇博客主要讲述三种图卷积网络(Graph Convolutional Network, GCN)的算法原理及python实现,全文阅读时间约10分钟. 博主关于图神经网络的文章 DeepLearni ...

  8. 图卷积神经网络GCN大白话解读!

    何时能懂你的心--图卷积神经网络(GCN) https://zhuanlan.zhihu.com/p/71200936 蝈蝈 把知道的讲清楚.公众号SimpleAI,欢迎来逛逛. 已关注 天雨粟 . ...

  9. 基于图卷积神经网络的微博疫情情感分析

    一.前言 参考论文:Graph Convolutional Networks for Text Classification 官方Github源码:text_gcn 关于微博疫情情感分析,博主之前有过 ...

最新文章

  1. AlarmManager与PendingIntent的联合使用(一)
  2. 未在本地计算机上注册jet.oledb.4.0解决方案
  3. Java中关于Arrays.sort的两种重载方法的理解
  4. SAP UI5的表格里如何显示复合列
  5. java课程设计实验报告_javaweb课程设计实验报告
  6. Python中直接查看对象值和使用print()输出的区别
  7. [leetcode]_Flatten Binary Tree to Linked List
  8. 自动化测试-selenium初始化Driver参考
  9. 在CMD上运行使用java命令运行java文件时出现错误:找不到或者无法加载主类的问题 解决办法
  10. Vlan的access、trunk以及hybird接口配置实验
  11. pktgen-dpdk 进行rfc2544测试
  12. iOS开发之--内购、GameCenter、iCloud、Passbook功能开发汇总
  13. 雷军:《我十年的程序员生涯》系列之一:我的程序人生路
  14. 计算机无纸化考试合卷答题笔记卡,高级会计师无纸化考试攻略都在这 第一次考也不用慌...
  15. 2017最新总结政府大数据应用案例及启示
  16. 自动驾驶之-MATLAB环境下利用单目摄像头和语义分割创建占位栅格(occupancy grid)
  17. Linux如何制作efi启动盘,教你制作macOS+Ubuntu+WindowsPE超级启动盘(仅支持UEFI)
  18. springboot新手项目从零开始搭建,涉及excel数据导出和邮箱发送(上)
  19. strace命令总结
  20. 市净率PB,市盈率PE

热门文章

  1. win10右键卡顿原因_win10右键新建卡顿的问题
  2. 电脑桌面上没有计算机回收站,桌面上没有回收站,桌面没有回收站怎么找
  3. Blender图解教程:多边形建模命令 之 合并顶点(Merge)
  4. NVME之Device Self-test Operations
  5. Android kotlin实现读取pdf和pptx文件
  6. C#链接SQL知识点
  7. HLOJ 2026 猴子吃桃
  8. js 数字金额的转换 (转)
  9. 交叉熵损失函数的计算公式
  10. Unity 性能调优技术集锦