Anomaly detection from multiple variable




I’m checking feasibility of nupic to use my some solution.
So, actually I’m not familar with HTM yet. (hope to familiar soon : ))
I’d like to request to expert’s advices.

I wonder about anomaly detection from stream.
Does ‘nupic’ can find anomaly from multiple column(= multi variable)?
(Not ‘multiple variable to multiple anomaly score’.
I means extract just 1 anomly score column from multiple column)

Is it possible?
If it possible, which class should I refer?
Or, which sample code should I refer?

Could you help me?


Hi @z-wony,

Nupic will give you one anomaly score from a multi-field data stream yes. I think downloading nupic and looking at the one hot gym example is a good place to start. In that instance nupic is being fed 2 fields, one for energy consumption and one for time. There is a really good video on youtube that walks you through this example:

You can theoretically add as many fields as you want, simply by adding them to the model parameters file. It is recommended to try and limit the number of fields as much as possible though, certainly no more than 5 per model. If you have many fields you can make numerous nupic models with several fields each, or one model per field.

Finally there is a process within nupic called ‘swarming’, where nupic looks for which of the possible fields are most helpful to predicting the ‘predicted’ field that you specify. If you want to share what your data looks like (first few lines to get a sense) that can help to advise you. Best of luck


This video actually precedes that one. It goes over getting nupic running from the ground up, so it may be a better place to start if you have a bit more time:


I’d like to thank you verrrrrrrrry much!
I will study and try it as your recommend.
Thank you again!


You’re welcome certainly, I hope you get good results there


Remember that there have been some breaking changes in NuPIC since then, so the code I wrote in that video will not work if you’re using recent versions of NuPIC. See: