Good day,
I would like to start using monty for pattern recognition in time-series data. I don’t mind experimenting.
Can anyone please recommend where to start? Do you think the stock components (e.g. learning modules) are compatible/enough?
Regards
Good day,
I would like to start using monty for pattern recognition in time-series data. I don’t mind experimenting.
Can anyone please recommend where to start? Do you think the stock components (e.g. learning modules) are compatible/enough?
Regards
Hi @pepedocs
Currently, the models learned in Monty’s LMs don’t have a temporal dimension. We are actively brainstorming how to incorporate time into Monty’s models to learn and recognize behaviors and have a pretty concrete plan for doing this now, but none of it has been implemented so far.
I am planning to add all the items required for a first prototype to our future work section in the next days. If you are interested in playing around with and potentially contributing to some of them I’m happy to talk about more details.
If you wanted to model time series data with Monty today, you could try and represent time as a physical dimension. I.e., as you move through time, the x,y,z coordinates you sent as location information to Monty changes systematically along one of those axes. Movement would be pretty simple here since you can only move in one direction through time. To infer the temporal pattern, Monty would basically infer the location in the time series it has previously learned, the same way it infers the location of 3D objects.
I hope this helps!
Thank you. I’m interested with this. Will this require me to create a LM, or is there any existing one that I can start using?
Interesting, I’ll keep myself posted.
You could use the EvidenceGraphLM without any modifications. You would have to create a custom sensor module that takes your time series data and outputs the locations in the sequence as x,y,z locations in the self.location property of the State class (the output of any SM and expected input to any LM). If it is just a time series you probably only need one dimension (i.e. y and z would always be 0). The features at that point in the time series would be in self.non_morphological_features. You would probably set self.morphological_features to a placeholder pose since I assume there is nothing similar to an orientation in your time series data. Since you won’t need to recognize time series at different orientations you could set initial_possible_poses=[[0, 0, 0]] in the LMlearning_module_args` to reduce inference time.
Thanks a lot @vclay I’ll take note of this and get back as soon as I understand the fundamentals of monty. I think I need to read more about how learning in monty works first and also why it works. I posted another related question here.
Just curious as to what type of time-series data you want analyze. Knowing could help guide an approach.
Hi @andreas I’m sorry for the very late response.
The time-series data I want to analyze are application metrics. To be more specific, in a highly distributed environment such as Kubernetes, there will be many applications running as services, and there will be hundreds of thousands of metric data or even millions. These data flow in real-time, and I want to use Monty to detect patterns if possible. Now I know patterns is a broad term, I’m thinking starting of detecting “states” of a service for example.
Hi @pepedocs
Have you already heard about the “hierarchical temporal memory (HTM)” from numenta? They implemented a way to detect anomalies in time series data.
Hi @Maggus Yes, I’ve been following that project for years and used/studied HTM for a while. While I agree and witnessed it can detect anomalies in time-series data, I also saw it suffered from unexpectedly forgetting patterns it has learned and can easily kick out mutually exclusive data points from what it is currently preferring - I do think this is more of a training issue but this was not an easy task for me. Nevertheless, it’s a great foundational model for me especially for learning the theories behind it.
Why I want to use monty is because I’m subjectively positive with its capabilities. In one of my posts in the HTM forum, I did some experiments with HTM nupic and realized that HTM needs to duplicate itself while learning (like a branching tree), and somehow perform some kind of consensus/voting - this is because I saw it unnecessarily and expensively forgetting patterns. What it learned should be fuzzily duplicated (just like our state of minds) based on different perspectives and thus some voting will reconcile the “truth”. Anyhow, I believe (after reading TBT book) that it has all these properties that I have imagined with HTM in the past. I may try vclay’s suggestion above - I’m just trying to learn the fundamentals first, monty is a new beast for me.