RED CoMETS: An Ensemble Classifier for Symbolically Represented Multivariate Time Series
AALTD 2023 | arXiv:2307.13679 (preprint)
Multivariate time series classification is a rapidly growing area of research that has numerous practical applications in diverse fields such as finance, healthcare, and engineering. The problem of classifying multivariate time series data is challenging due to the high dimensionality, temporal dependencies, and varying lengths of the time series. This paper proposes a novel ensemble classifier called RED CoMETS. The proposed method builds upon the success of Co-eye, an ensemble classifier for symbolically represented univariate time series, and extends it to handle multivariate data. RED CoMETS is evaluated on benchmark datasets from the UCR archive and achieves competitive accuracy with state-of-the-art techniques in multivariate settings and yields the highest accuracy reported in the literature for the 'HandMovementDirection' dataset. The proposed method also offers a significant reduction in computation time compared to classic Co-eye, making it an efficient and effective option for multivariate time series classification.
Please cite as:
@inproceedings{10.1007/978-3-031-49896-1_6,
author = {Bennett, Luca A. and Abdallah, Zahraa S.},
title = {RED CoMETS: An Ensemble Classifier for Symbolically Represented Multivariate Time Series},
booktitle = {Advanced Analytics and Learning on Temporal Data},
publisher = {Springer Nature Switzerland},
address = {Cham},
year = {2023},
pages = {76-91}
}
Test accuracy is given for all experiments.
Timing results have only been recorded for Co-eye, R5%, R10%, R15%, and R20%.
- RED CoMETS-1
- RED CoMETS-2
- RED CoMETS-3
- RED CoMETS-4
- RED CoMETS-5
- RED CoMETS-6
- RED CoMETS-7
- RED CoMETS-8
- RED CoMETS-9
An implementation of RED CoMETS is also available on aeon.
- Python < 3.11
- Python Modules
UCR time series classification archive datasets in .arff format.
from Code.Utilities.utils import DatasetLoader
dataset = '/path/to/dataset/folder'
# Univariate Datasets
X_train, y_train, X_test, y_test = DatasetLoader(dataset).load_uv_dataset_to_numpy()
# Multivariate Datasets
X_train, y_train, X_test, y_test = DatasetLoader(dataset).load_mv_dataset_to_numpy()
from Code.Univariate_Foundation.coeye import coeye
[...] # load dataset
"""
Args:
p_length (float): percentage of timeseries length used to determine number of SAX and SFA lenses
voting_method (string): {'uniform', 'meanmax', 'validation'}
"""
accuracy = coeye(X_train, y_train, X_test, y_test)
from Code.Univariate_Foundation.univariate_foundation import univariate_foundation
[...] # load dataset
"""
Args:
p_length (float): percentage of timeseries length used to determine number of SAX and SFA lenses
voting_method (string): {'uniform', 'meanmax', 'validation'}
"""
accuracy = univariate_foundation(X_train, y_train, X_test, y_test, p_length, voting_method)
Name | Approach | Sub-Approach | Voting Method 1 | Voting Method 2 |
---|---|---|---|---|
RED CoMETS-1 | Concatenating | n/a | Uniform | n/a |
RED CoMETS-2 | Concatenating | n/a | Mean-Max | n/a |
RED CoMETS-3 | Concatenating | n/a | Validation | n/a |
RED CoMETS-4 | Ensembling | 1 | Uniform | n/a |
RED CoMETS-5 | Ensembling | 1 | Mean-Max | n/a |
RED CoMETS-6 | Ensembling | 2 | Uniform | Uniform |
RED CoMETS-7 | Ensembling | 2 | Uniform | Mean-Max |
RED CoMETS-8 | Ensembling | 2 | Mean-Max | Mean-Max |
RED CoMETS-9 | Ensembling | 2 | Mean-Max | Uniform |
from Code.RED_CoMETS.red_comets import red_comets
[...] # load dataset
"""
Args:
id_number (int): RED CoMETS-<ID>
"""
accuracy = red_comets(X_train, y_train, X_test, y_test, id_number)
We used 85 univariate and 26 multivariate datasets from the UCR timeseries classification archive.
We thank all the people who have contributed to and who maintain the UCR time series classification archive. Critical difference diagrams in our paper showing were produced using code from Ismail Fawaz et al. (2019). Our implementation of the SAX transform uses code modified from saxpy.