# Similarity between an n-dimensional curve and selected subsets of them

I'm asking here to get some advice. My goal is to detect similar patterns in an n-dimensional data. For example (extreme simple) you have two axes: X-Axis is Time (in seconds) and Y-Axis is Power (in Watt). So you get time-series with a specific pattern. My goal is to select a subset of the time-series and calculate the similarity of other input data to the selected subset. In the end, I want to define multiple patterns and the output predicts which pattern comes most closely to the given input data.

• Is it suitable to use Machine Learning e.q. pattern recognition for that problem or is it a pure overkill? (I got the advice to use ML; also under the condition that I have an generic n-dimensional data)
• If ML is suitable for this problem, can you give me some advice where I could start? I don't ask for a solution in any way, I just want to have some suggestions in which direction I should look, because ML is a very new topic for me and I don't have much experience in practice.

Thank you.

So let's start!

First of all please have a look at the edit I made to your original question. It was not just an edit but implied important conceptual thing so I need to start with them:

• Graphs: Graph is a reserved term in mathematics for network-like objects. You better use the term Plot for sake of clarification. So the question is absolutely not about graphs.
• Time-series data: The example you made i.e. a temporal sequence of data points is called Time-series. A n-dimensional data is not necessarily a time-series and however both seem to inhibit the same structure, they are conceptually different (but not necessarily irrelevant) types of data and different sets of algorithms and problems are defined for either, so please comment here if the data is time-series or not.
• Curve Plots: The last but not the least is that a plot is used to just illustrate the data and all Data Analysis algorithms and approaches use that data for inference. So you never infer anything from the plot itself but from the data that it depicts. If you have any plot-like data which you don't know the data behind you need to use Image Processing which I'm pretty sure is not the topic of this question but wanted to mention as you explicitly asked how to do the analysis with plots themselves.

After these points I get back to your question. Yes, what you are looking for is Pattern Recognition and you can use many Machine Learning approaches to solve your problem. If you already knew what are different classes of patterns, it would be called Classification but now, as I understood, you don't know the classes and you want to find similar patterns. Finding patterns of similarity in data is called Clustering.

As I don't know if your data is a time-series (e.g. amount of raining vs time) or just a structured n-dimensional data (e.g. amount of raining vs humidity) I try both.

## Time-Series

When you have different segments of time-series and you need their similarity you can use Correlation Analysis or Dynamic Time Warping. If the time series is high frequency e.g. speech data or EEG, then you better convert data to frequency (or time-frequency) domain and then extract features from those segment and then use those features to determine similarity. Please note that the term similarity is pretty wide and it's defined according to the nature of data and problem. You may search for time-series clustering for more approaches.

## Non-temporal Data

Similarity between the parameters of a regression model fitted to those subsets of data might help. Another approach is to apply clustering algorithms to those segments. These algorithms can be applied to the original data subsets or some features extracted from those. Dimensionality Reduction algorithms like PCA can be used for feature extraction and might be helpful for a better clustering.

I wrote my answer in rush so I would appreciate any comment or further questions.

Good Luck!

• Thank you very much for your adequate answer. It helps me a lot to figure out where to start and to clarify my question. Have a nice day. May 25, 2017 at 10:48
• I'm glad it helped :) Good Luck! May 25, 2017 at 14:35