# TACTiS-2: Better, Faster, Simpler Attentional Copulas for Multivariate Time Series
Arjun Ashok, Étienne Marcotte, Valentina Zantedeschi, Nicolas Chapados, Alexandre Drouin (2023). *[TACTiS-2: Better, Faster, Simpler Attentional Copulas for Multivariate Time Series](https://arxiv.org/abs/2310.01327)*. (Preprint)
> We introduce a new model for multivariate probabilistic time series prediction, designed to flexibly address a range of tasks including forecasting, interpolation, and their combinations. Building on copula theory, we propose a simplified objective for the recently-introduced transformer-based attentional copulas (TACTiS), wherein the number of distributional parameters now scales linearly with the number of variables instead of factorially. The new objective requires the introduction of a training curriculum, which goes hand-in-hand with necessary changes to the original architecture. We show that the resulting model has significantly better training dynamics and achieves state-of-the-art performance across diverse real-world forecasting tasks, while maintaining the flexibility of prior work, such as seamless handling of unaligned and unevenly-sampled time series.
[[Preprint]](https://arxiv.org/abs/2310.01327)
<br />
<p align="center">
<img src="https://github.com/ServiceNow/tactis/blob/tactis-2/cover.png?raw=true" width="500" />
</p>
## Installation
You can install the TACTiS-2 model with [pip](https://pip.pypa.io/):
```console
pip install tactis
```
Alternatively, the `research` version installs `gluonts` and `pytorchts` as dependencies which are required to replicate experiments from the paper:
```console
pip install tactis[research]
```
Note: `tactis` has been currently tested with Python 3.10.8.
## Instructions
With the `research` version of the code, [`train.py`](https://github.com/ServiceNow/tactis/blob/tactis-2/train.py) can be used to train the TACTiS-2 model for a specific dataset. The arguments in [`train.py`](https://github.com/ServiceNow/tactis/blob/tactis-2/train.py) can be used to specify the dataset, the training task (forecasting or interpolation), the hyperparameters of the model and a whole range of other training options.
There are notebooks in the that are useful in guiding training and evaluation pipeline setups: [`random_walk.ipynb`](https://github.com/ServiceNow/tactis/blob/tactis-2/demo/random_walk.ipynb) demonstrates TACTiS-2 on a simple low-dimensional random walk dataset, and [`gluon_fred_md_forecasting.ipynb`](https://github.com/ServiceNow/tactis/blob/tactis-2/demo/gluon_fred_md_forecasting.ipynb) demonstrates how to train and evaluate TACTiS-2 on the [FRED-MD dataset](https://zenodo.org/records/4654833) used in the paper. Note that the [`gluon_fred_md_forecasting.ipynb`](https://github.com/ServiceNow/tactis/blob/tactis-2/demo/gluon_fred_md_forecasting.ipynb) notebook requires GluonTS and PyTorchTS to be installed.
## Note
For an implementation of the [original version of TACTiS](https://arxiv.org/abs/2202.03528), please see [here](https://github.com/ServiceNow/tactis/tree/v1.0.0).
## Citing this work
Please use the following Bibtex entry to cite TACTiS-2.
```
@misc{ashok2023tactis2,
title={TACTiS-2: Better, Faster, Simpler Attentional Copulas for Multivariate Time Series},
author={Arjun Ashok and Étienne Marcotte and Valentina Zantedeschi and Nicolas Chapados and Alexandre Drouin},
year={2023},
eprint={2310.01327},
archivePrefix={arXiv},
primaryClass={cs.LG}
}
```
Raw data
{
"_id": null,
"home_page": "https://github.com/ServiceNow/tactis/tree/tactis-2",
"name": "tactis",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "",
"author": "Arjun Ashok, \u00c9tienne Marcotte, Valentina Zantedeschi, Nicolas Chapados, Alexandre Drouin",
"author_email": "",
"download_url": "https://files.pythonhosted.org/packages/bf/77/f54b507131890741af41fdd91e230a63efacda76c07b3e1ff045e11f8ad5/tactis-0.1.3.tar.gz",
"platform": null,
"description": "# TACTiS-2: Better, Faster, Simpler Attentional Copulas for Multivariate Time Series\n\nArjun Ashok, \u00c9tienne Marcotte, Valentina Zantedeschi, Nicolas Chapados, Alexandre Drouin (2023). *[TACTiS-2: Better, Faster, Simpler Attentional Copulas for Multivariate Time Series](https://arxiv.org/abs/2310.01327)*. (Preprint)\n\n> We introduce a new model for multivariate probabilistic time series prediction, designed to flexibly address a range of tasks including forecasting, interpolation, and their combinations. Building on copula theory, we propose a simplified objective for the recently-introduced transformer-based attentional copulas (TACTiS), wherein the number of distributional parameters now scales linearly with the number of variables instead of factorially. The new objective requires the introduction of a training curriculum, which goes hand-in-hand with necessary changes to the original architecture. We show that the resulting model has significantly better training dynamics and achieves state-of-the-art performance across diverse real-world forecasting tasks, while maintaining the flexibility of prior work, such as seamless handling of unaligned and unevenly-sampled time series.\n\n[[Preprint]](https://arxiv.org/abs/2310.01327)\n\n<br />\n\n<p align=\"center\">\n <img src=\"https://github.com/ServiceNow/tactis/blob/tactis-2/cover.png?raw=true\" width=\"500\" />\n</p>\n\n\n## Installation\n\nYou can install the TACTiS-2 model with [pip](https://pip.pypa.io/):\n\n```console\npip install tactis\n```\n\nAlternatively, the `research` version installs `gluonts` and `pytorchts` as dependencies which are required to replicate experiments from the paper:\n\n```console\npip install tactis[research]\n```\n\nNote: `tactis` has been currently tested with Python 3.10.8.\n\n## Instructions\n\nWith the `research` version of the code, [`train.py`](https://github.com/ServiceNow/tactis/blob/tactis-2/train.py) can be used to train the TACTiS-2 model for a specific dataset. The arguments in [`train.py`](https://github.com/ServiceNow/tactis/blob/tactis-2/train.py) can be used to specify the dataset, the training task (forecasting or interpolation), the hyperparameters of the model and a whole range of other training options.\n\nThere are notebooks in the that are useful in guiding training and evaluation pipeline setups: [`random_walk.ipynb`](https://github.com/ServiceNow/tactis/blob/tactis-2/demo/random_walk.ipynb) demonstrates TACTiS-2 on a simple low-dimensional random walk dataset, and [`gluon_fred_md_forecasting.ipynb`](https://github.com/ServiceNow/tactis/blob/tactis-2/demo/gluon_fred_md_forecasting.ipynb) demonstrates how to train and evaluate TACTiS-2 on the [FRED-MD dataset](https://zenodo.org/records/4654833) used in the paper. Note that the [`gluon_fred_md_forecasting.ipynb`](https://github.com/ServiceNow/tactis/blob/tactis-2/demo/gluon_fred_md_forecasting.ipynb) notebook requires GluonTS and PyTorchTS to be installed.\n\n\n## Note\n\nFor an implementation of the [original version of TACTiS](https://arxiv.org/abs/2202.03528), please see [here](https://github.com/ServiceNow/tactis/tree/v1.0.0).\n\n## Citing this work\n\nPlease use the following Bibtex entry to cite TACTiS-2.\n\n```\n@misc{ashok2023tactis2,\n title={TACTiS-2: Better, Faster, Simpler Attentional Copulas for Multivariate Time Series}, \n author={Arjun Ashok and \u00c9tienne Marcotte and Valentina Zantedeschi and Nicolas Chapados and Alexandre Drouin},\n year={2023},\n eprint={2310.01327},\n archivePrefix={arXiv},\n primaryClass={cs.LG}\n}\n```\n",
"bugtrack_url": null,
"license": "",
"summary": "Transformer-Attentional Copulas for Multivariate Time Series",
"version": "0.1.3",
"project_urls": {
"Homepage": "https://github.com/ServiceNow/tactis/tree/tactis-2"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "69f34474a90988421ba0b04cde4492d94bed255aff82effbe009e849a4e65d8c",
"md5": "1349eb56d4682a85975e5cf186ee026c",
"sha256": "7545746eaa816ceae700ce52feb0042b230c46240665dc4100365359fbaff047"
},
"downloads": -1,
"filename": "tactis-0.1.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "1349eb56d4682a85975e5cf186ee026c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 56500,
"upload_time": "2024-01-02T04:07:17",
"upload_time_iso_8601": "2024-01-02T04:07:17.448256Z",
"url": "https://files.pythonhosted.org/packages/69/f3/4474a90988421ba0b04cde4492d94bed255aff82effbe009e849a4e65d8c/tactis-0.1.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "bf77f54b507131890741af41fdd91e230a63efacda76c07b3e1ff045e11f8ad5",
"md5": "be3e67929d345a77ff7db6889549e2f6",
"sha256": "a622506c8413912ae5f57b7e10583776775de44f09814f27821b849ec9a324cd"
},
"downloads": -1,
"filename": "tactis-0.1.3.tar.gz",
"has_sig": false,
"md5_digest": "be3e67929d345a77ff7db6889549e2f6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 47913,
"upload_time": "2024-01-02T04:07:19",
"upload_time_iso_8601": "2024-01-02T04:07:19.035190Z",
"url": "https://files.pythonhosted.org/packages/bf/77/f54b507131890741af41fdd91e230a63efacda76c07b3e1ff045e11f8ad5/tactis-0.1.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-01-02 04:07:19",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "ServiceNow",
"github_project": "tactis",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [],
"lcname": "tactis"
}