Awesome
MegaCRN: Meta-Graph Convolutional Recurrent Network
[AAAI23] R. Jiang*, Z. Wang*, J. Yong, P. Jeph, Q. Chen, Y. Kobayashi, X. Song, S. Fukushima, T. Suzumura, "Spatio-Temporal Meta-Graph Learning for Traffic Forecasting", Proc. of Thirty-Seventh AAAI Conference on Artificial Intelligence (AAAI), 2023. (*Corresponding and equally contributed)
Code and data are now available.
@inproceedings{jiang2023spatio,
title={Spatio-temporal meta-graph learning for traffic forecasting},
author={Jiang, Renhe and Wang, Zhaonan and Yong, Jiawei and Jeph, Puneet and Chen, Quanjun and Kobayashi, Yasumasa and Song, Xuan and Fukushima, Shintaro and Suzumura, Toyotaro},
booktitle={Proceedings of the AAAI Conference on Artificial Intelligence},
volume={37},
number={7},
pages={8078--8086},
year={2023}
}
Preprints
Performance on Traffic Speed Benchmarks
Updated Results (arXiv and camera-ready papers will be revised accordingly very soon)
Benchmark | MAE/RMSE/MAPE@3rd step | MAE/RMSE/MAPE@6th step | MAE/RMSE/MAPE@12th step |
---|---|---|---|
METR-LA | 2.52/4.94/6.44% | 2.93/6.06/7.96% | 3.38/7.23/9.72% |
PEMS-BAY | 1.28/2.72/2.67% | 1.60/3.68/3.57% | 1.88/4.42/4.41% |
Benchmark | MAE/RMSE/MAPE@1st step | MAE/RMSE/MAPE@3rd step | MAE/RMSE/MAPE@6th step |
---|---|---|---|
EXPY-TKY | 5.81/9.20/24.49% | 6.44/10.33/28.92% | 6.83/11.04/31.02% |
Requirements
- Python 3.8.8 -> Anaconda Distribution
- pytorch 1.9.1 -> py3.8_cuda11.1_cudnn8.0.5_0
- pandas 1.2.4
- numpy 1.20.1
- torch-summary 1.4.5 -> pip install torch-summary https://pypi.org/project/torch-summary/ (must necessary)
- jpholiday -> pip install jpholiday (not must, but if you want onehottime)
General Description
- The directory is structured in a flat style and only with two levels.
- The datasets are stored in DATA directories, and the model codes are put in model_DATA directories.
- The training and testing function is merged into one file, we can just run "python traintest_MegaCRN.py" under each model directory.
- Also we can run "python MegaCRN.py" to simply check the model architecture without feeding the data.
- Also under model directory, metrics.py file contains the metric functions and utils.py file contains a set of supporting functions.
How to run our model (general command)?
- python generate_training_data.py --dataset=DATA
- cd model
- python traintest_MegaCRN.py --dataset=DATA --gpu=GPU_DEVICE_ID
- DATA = {METRLA, PEMSBAY}
- For PEMSBAY dataset, please first upzip ./PEMSBAY/pems-bay.zip to get ./PEMSBAY/pems-bay.h5 file.
- You can also run GTS as a baseline model in a similary way.
How to run our model on EXPY-TKY?
- cd model_EXPYTKY
- python traintest_MegaCRN.py --dataset=DATA --gpu=GPU_DEVICE_ID
- DATA = {EXPYTKY, EXPYTKY*}
- EXPYTKY with 1843 links is the data used in our paper; EXPYTKY* is a superset of EXPYTKY that contains all 2841 expy-tky links.
Arguments (METR-LA and PEMS-BAY)
The default hyperparameters used in our paper are written in model/traintest_MegaCRN.py as follows. The ratio for train:valid:test is roughly 7:1:2, generated by generate_training_data.py. Please check the codes from parser = argparse.ArgumentParser().
Arguments (EXPY-TKY)
The hyperparameters for EXPY-TKY are in model_EXPYTKY/traintest_MegaCRN.py. Note EXPY-TKY data is structured by month, where '202110' and '202111' used as training and validation and '202112' used as testing. By further setting val_ratio as 0.25 (that meas 25% data of '202110' and '202111' as valid data), the ratio for train:valid:test is roughly 3:1:2. The time interval for EXPY-TKY is 10 minutes, thus observation/prediction horizon are both set to 6, to perform 1-hour-to-1-hour forecasting. </br>