How To: Pattern Recognition

Joel Martinez picture Joel Martinez · Jul 20, 2009 · Viewed 23.8k times · Source

I'm interested in learning more about pattern recognition. I know that's somewhat of a broad field, so I'll list some specific types of problems I would like to learn to deal with:

  • Finding patterns in a seemingly random set of bytes.
  • Recognizing known shapes (such as circles and squares) in images.
  • Noticing movement patterns given a stream of positions (Vector3)

This is a new area of experimentation for me personally, and to be honest, I simply don't know where to start :-) I'm obviously not looking for the answers to be provided to me on a silver platter, but some search terms and/or online resources where I can start to acquaint myself with the concepts of the above problem domains would be awesome.

Thanks!

ps: For extra credit, if said resources provide code examples/discussion in C# would be grand :-) but doesn't need to be

Answer

Gabe picture Gabe · Jul 20, 2009

Hidden Markov Models are a great place to look, as well as Artificial Neural Networks.

Edit: You could take a look at NeuronDotNet, it's open source and you could poke around the code.

Edit 2: You can also take a look at ITK, it's also open source and implements a lot of these types of algorithms.

Edit 3: Here's a pretty good intro to neural nets. It covers a lot of the basics and includes source code (albeit in C++). He implemented an unsupervised learning algorithm, I think you may be looking for a supervised backpropagation algorithm to train your network.

Edit 4: Another good intro, avoids really heavy math, but provides references to a lot of that detail at the bottom, if you want to dig into it. Includes pseudo-code, good diagrams, and a lengthy description of backpropagation.