Giter Club home page Giter Club logo

graph-markov-network's Introduction

Graph Markov Network for Traffic Forecasting with Missing Data

Code for this post: Graph Markov Network for Traffic Forecasting with Missing Data

Table of Contents

Introduction

This is the github repo for sharing the code for implementing the Graph Markov Network (GMN) proposed in [1]. The GMN is proposed to solve the traffic forecasting problems while the traffic data has missing values. The Graph Markov Model is designed based on the Graph Markov Process (GMP), which provides a new perspective to model the transition process of the spatial-temporal data.

The idea of GMN is very simple and easy to be implemented. The structure of GMN is similar to the autoregressive model and recurrent neural networks. The difference is that GMN takes the spatial structure of the data (network-wide traffic states) as a graph and attempts to infer missing values from the values of neighboring nodes in the graph. The following figure demonstrates the GMP structure. The gray-colored nodes in the left demonstrate the nodes with missing values. Vectors on the right side represent the traffic states. The traffic states at time t are numbered to match the graph and the vector. The future state (in red color) can be inferred from their neighbors at previous time steps.

For most details, you can refer to the paper [TR Part C] or [arXiv].

The ideas and the methodologies of GMP and GMN are detailed in this Post.

Usage

Requirements

  • PyTorch >= 1.1.0
  • NumPy
  • Pandas

The requirements.txt listed the required packages.

Data Preparation

Three datasets are used to test the GMN in the experiments

The PEMS-BAY and METR-LA data is acquired from the DCRNN Repo.

All three ready-to-use datasets can be download from this LINK. After the datasets are downloaded, the data path should be changed accordingly to run the codes.

Run Jupyter Scripts for Demonstration

The Jupyter Scripts is used for quick demonstrations. Two files are included in the Jupyter Scripts folder:

  • GraphMarkovNet.ipynb: The GMN and its spectral version (SGMN) are implemented, trained, and tested in this Jupyter Notebook document.
  • utils.py: This script includes data loading, training, and testing functions.

To quickly run and test GMN/SGMN, the Jupyter Notebook version is recommended.

Run Python Scripts for Experiments

The Python Scripts contains the implementation of the GMN and baseline models for conducting the experiments described in [1]. The Python Scripts folder contains several files:

  • Exp_GMN.py: codes for testing GMN models
  • Exp_baseline.py: codes for testing baseline models
  • job.sh: bash file for testing models with different parameters
  • models.py: GMN/SGMN and baseline models
  • utils.py: utils functions
  • GRUD.py: GRU-D model
  • LSTMD.py: LSTM-D model

To run and test GMN/SGMN with specific parameters, you can optionally change the Exp_GMN.py file and run

python Exp_GMN.py -d $dataset -m $missing_rate -o $optimizer -l $learning_rate -r $random_seed -s 0 -t $masking_type

Reference

[1] Cui, Zhiyong, Longfei Lin, Ziyuan Pu, and Yinhai Wang. "Graph markov network for traffic forecasting with missing data." Transportation Research Part C: Emerging Technologies 117 (2020): 102671. [arXiv]

Citation

If you find this repository, e.g., the code and the datasets, useful in your research, please cite the following paper:

  @article{cui2020graph,
    title={Graph markov network for traffic forecasting with missing data},
    author={Cui, Zhiyong and Lin, Longfei and Pu, Ziyuan and Wang, Yinhai},
    journal={Transportation Research Part C: Emerging Technologies},
    volume={117},
    pages={102671},
    year={2020},
    publisher={Elsevier}
  }

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.