I have a set of time series data (just like voice sequence data) with the pattern as shown in the first figure (theoretical data). The measured data is given as presented in the second figure. What I want to do is localizing/finding the subsequent pattern as shown in the red squares. Is there any algorithm to solve this problem? It looks like the classification/regression problem in machine learning, but I have no idea how to start it.
The real state of the art here is the Matrix Profile suite, developed by Eamonn Keogh and his team in University of California at Riverside (UCR). Here are some links to get you started:
- Matrix Profile Foundation homepage
- The UCR Matrix Profile Page
- MPA: a novel cross-language API for time series analysis paper (2020) with links to Python, R, and Go implementations
- Introducing matrixprofile-ts, a Python Library for Detecting Patterns and Anomalies in Massive Datasets
- Towards a Near Universal Time Series Data Mining Tool: Introducing the Matrix Profile (PhD thesis)
- 100 Time Series Data Mining Questions (with answers!) (highly recommended high-level view)
You'll find links to implementations in the above stuff.
Apart from the team at UCR, there is another (and possibly more efficient) implementation of the relevant algorithms in the STUMPY Python package: