[ENH] Fast Low-cost Unipotent Semantic Segmentation (FLUSS)
Description
FLUSS is a “semantic segmentation” algorithm compatible with static data (batch processing). The algorithm divides a time series into internally consistent homogenous regions called regimes.
FLUSS produces a time series called the Corrected Arc Curve ( $CAC$ ), corresponding to a given raw time series. $CAC$ annotates the raw time series with information about the likelihood of a regime change at each location.
FLUSS’s advantages
- Domain Agnosticism FLUSS is a domain agnostic technique that makes no assumptions about the data.
- Real-World Data Suitability Many techniques assume that every data region belongs to a well-defined semantic segment. However, lack of structure in accumulated data is common. FLUSS can effectively mark these difficult sections as “don’t know”.
For more information about FLUSS, see - https://www.cs.ucr.edu/~eamonn/Segmentation_ICDM.pdf https://stumpy.readthedocs.io/en/latest/Tutorial_Semantic_Segmentation.html#FLUSS
Feature Request
Implementation of FLUSS
Suggestion and Considerations
I have looked into stumpy and matrixprofile packages for Matrix Profile and FLUSS interfacing. This is the summary of my findings:
Interfacing stumpy
Stumpy is a well-maintained and documented Python library with a univariate-data implementation of FLUSS.
The input data received by the function is the output of the Matrix Profile algorithm, as opposed to the actual time-series data, like in Sktime.
In other words, stumpy.fluss workflow is -
Time series data (T) → Matrix Profile algorithm, T as input, I as output → fluss(I, ..)
Stumpy has implemented both univariate-data and multivariate-data Matrix Profile (stump and mstump, respectively), but to my understanding stumpy.fluss can only be used with univariate data.
Matrix Profile, Multi-dimensional Matrix Profile
interfacing matrixprofile (MPF)
Matrixprofile is a well-documented Python library with a univariate-data implementation of matrix profile and other methods that can be used to calculate FLUSS (univariate only, to my understanding).
Matrix Profile - mpx, Matrix Profile - stomp, Regimes
Suggestion
Creating a multivariate version of FLUSS will be more challenging than planned.
I consider interfacing the univariate implementation of stumpy, to begin with, and later moving on to interfacing or implementing a multivariate version of FLUSS (if such a version has been studied).
Tasks
- Interfacing the univariate implementation of
stumpyFLUSS. - Interfacing or implementing a multivariate version of FLUSS
Source: sktime/sktime