Koopa
Code release for "Koopa: Learning Non-stationary Time Series Dynamics with Koopman Predictors" (NeurIPS 2023), https://arxiv.org/abs/2305.18803
Install / Use
/learn @thuml/KoopaREADME
Koopa
This is the official codebase for the paper: Koopa: Learning Non-stationary Time Series Dynamics with Koopman Predictors, NeurIPS 2023. [Slides], [Poster].
Updates
:triangular_flag_on_post: News (2024.2) Introduction of our work in Chinese is available: [Official], [Zhihu].
:triangular_flag_on_post: News (2023.10) Koopa has been included in [Time-Series-Library].
Introduction
Koopa is a lightweight, MLP-based, and theory-inspired model for efficient time series forecasting.
- Compared with the advanced but painstakingly trained deep forecasters, Koopa achieves state-of-the-art performance while saving 77.3% training time and 76.0% memory footprint.
- Focus on portraying ubiquitous non-stationary time series, Koopa shows enhanced model capacity empowered by the modern Koopman theory that naturally addresses the nonlinear evolution of real-world time series.
- Koopa differs from the canonical Koopman Autoencoder without the reconstruction loss function to achieve end-to-end predictive training.
Discussions
There are already several discussions about our paper, we appreciate a lot for their valuable comments and efforts: [Official], [Openreview], [Zhihu].
Preparation
- Install Pytorch (>=1.12.0) and other necessary dependencies.
pip install -r requirements.txt
- All the six benchmark datasets can be obtained from Google Drive or Tsinghua Cloud.
Training scripts
We provide the Koopa experiment scripts and hyperparameters of all benchmark datasets under the folder ./scripts.
bash ./scripts/ECL_script/Koopa.sh
bash ./scripts/Traffic_script/Koopa.sh
bash ./scripts/Weather_script/Koopa.sh
bash ./scripts/ILI_script/Koopa.sh
bash ./scripts/Exchange_script/Koopa.sh
bash ./scripts/ETT_script/Koopa.sh
Applicable for Rolling Forecast
-
By adapting the operator on the incoming time series during rolling forecast, the proposed model can achieve more accurate performance via adapting to continuous distribution shift.
-
The naïve implementation of operator adaptation is based on the DMD algorithm. We propose an iterative algorithm with reduced complexity. The details can be found in the Appendix of our paper.
-
We also provide a tutorial notebook for a better understanding of this scenario. See
operator_adaptation.ipynbfor the details.
Citation
If you find this repo useful, please cite our paper.
@article{liu2023koopa,
title={Koopa: Learning Non-stationary Time Series Dynamics with Koopman Predictors},
author={Liu, Yong and Li, Chenyu and Wang, Jianmin and Long, Mingsheng},
journal={arXiv preprint arXiv:2305.18803},
year={2023}
}
Contact
If you have any questions or want to use the code, please contact:
- liuyong21@mails.tsinghua.edu.cn
- lichenyu20@mails.tsinghua.edu.cn
Related Skills
YC-Killer
2.7kA library of enterprise-grade AI agents designed to democratize artificial intelligence and provide free, open-source alternatives to overvalued Y Combinator startups. If you are excited about democratizing AI access & AI agents, please star ⭐️ this repository and use the link in the readme to join our open source AI research team.
best-practices-researcher
The most comprehensive Claude Code skills registry | Web Search: https://skills-registry-web.vercel.app
mentoring-juniors
Community-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.
groundhog
399Groundhog's primary purpose is to teach people how Cursor and all these other coding agents work under the hood. If you understand how these coding assistants work from first principles, then you can drive these tools harder (or perhaps make your own!).
