WEASEL
Word Extraction for Time Series Classification (WEASEL).
Overview: Input n series length m WEASEL is a dictionary classifier that builds a bag-of-patterns using SFA for different window lengths and learns a logistic regression classifier on this bag.
There are these primary parameters:
alphabet_size: alphabet size
p-threshold: threshold used for chi^2-feature selection to select best words.
anova: select best l/2 fourier coefficients other than first ones
bigrams: using bigrams of SFA words
binning_strategy: the binning strategy used to discretise into SFA words.
WEASEL slides a window length w along the series. The w length window is shortened to an l length word through taking a Fourier transform and keeping the best l/2 complex coefficients using an anova one-sided test. These l coefficients are then discretised into alpha possible symbols, to form a word of length l. A histogram of words for each series is formed and stored. For each window-length a bag is created and all words are joint into one bag-of-patterns. Words from different window-lengths are discriminated by different prefixes. fit involves training a logistic regression classifier on the single bag-of-patterns.
predict uses the logistic regression classifier
Quickstart
from sktime.classification.dictionary_based import WEASEL
estimator = WEASEL(anova=True, bigrams=True, binning_strategy='information-gain', window_inc=2, p_threshold=0.05, alphabet_size=2, n_jobs=1, feature_selection='chi2', support_probabilities=False, random_state=None)Parameters(10)
- anova: boolean, default=True
- If True, the Fourier coefficient selection is done via a one-way ANOVA test. If False, the first Fourier coefficients are selected. Only applicable if labels are given
- bigrams: boolean, default=True
- whether to create bigrams of SFA words
- binning_strategy: {“equi-depth”, “equi-width”, “information-gain”},
- default=”information-gain”
- The binning method used to derive the breakpoints.
- window_inc: int, default=2
- WEASEL create a BoP model for each window sizes. This is the increment used to determine the next window size.
- p_threshold: int, default=0.05 (disabled by default)
- Feature selection is applied based on the chi-squared test. This is the p-value threshold to use for chi-squared test on bag-of-words (lower means more strict). 1 indicates that the test should not be performed.
- alphabet_sizedefault = 2
- Number of possible letters (values) for each word.
- feature_selection: {“chi2”, “none”, “random”}, default: chi2
Sets the feature selections strategy to be used. Chi2 reduces the number of words significantly and is thus much faster (preferred). If set to chi2,
p_threshold is applied. Random also reduces the number significantly. None applies not feature selectiona and yields large bag of words, e.g. much memory may be needed.
- support_probabilities: bool, default: False
- If set to False, a RidgeClassifierCV will be trained, which has higher accuracy and is faster, yet does not support predict_proba. If set to True, a LogisticRegression will be trained, which does support predict_proba(), yet is slower and typically less accuracy. predict_proba() is needed for example in Early-Classification like TEASER.
- random_state: int or None, default=None
- Seed for random, integer
Examples
>>> from sktime.classification.dictionary_based import WEASEL
>>> from sktime.datasets import load_unit_test
>>> X_train, y_train = load_unit_test (split = "train", return_X_y = True)
>>> X_test, y_test = load_unit_test (split = "test", return_X_y = True)
>>> clf = WEASEL (window_inc = 4)
>>> clf. fit (X_train, y_train) WEASEL(
... )
>>> y_pred = clf. predict (X_test)References
Patrick Schäfer and Ulf Leser, “Fast and Accurate Time Series Classification
with WEASEL”, in proc ACM on Conference on Information and Knowledge Management, 2017, https://dl.acm.org/doi/10.1145/3132847.3132980