The Hidden Markov Models, or HMMs, provide a particularly attractive subclass of state space models. Typically these models are most effective for discrete-valued time series, but they still cover a huge range of technological possibilities. HMMs are widely used in many parts of communication, and they are the tool of choice for most investigations of speech recognition. They are also of emerging importance in bioinformatics.
The web is full of information on HMMs. There is no shortage of material that runs from introductory tutorials to cutting edge research. Eventually, I expect to develop a reasonably systematic bibliography of these resources, but for the moment I just have a few items. Incidentally, HMMs are may be viewed as a special instance the class of graphical models, which have their own (smallish) page.
HMMs have been around for years, but they came into their own when they started to win the speech recognition game. Rabiner and his coauthors wrote several tutorial surveys which helped greatly to speed up the process. Rabiner's 1989 survey remains an outstanding introduction.
L. R. Rabiner (1989). "A Tutorial on Hidden Markov Models and Selected Applications in Speech Recognition," Proceedings of the IEEE, vol 77, no 2, 257--287.
In finance and economics, HMMs are also known as regime switching models, and they have a large literature. For the moment, we consider just one paper with a title that may jump out at you.
T. Ryden, T. Terasvirta, and S. Asbrink (1998). "Stylized Facts of Daily Return Series and the Hidden Markov Model," J. Applied Econometrics, 13, 217--244.
I've already mentioned the important application areas (genetics, speech, finance), but it is amusing to give some attention to those applications you might not have expected, such as recognition of hand gestures.
I'll leave it to you to fill out the list.
We will only consider plain-vanilla HMMs, and we will get by using S-Plus. Still, it is nice to know that there is classy, fast, and free Python code to do HMMs and their generalized cousins. Check out GHMM.org which is a spin-off of the Algorithmics group at the Max Planck Institute for Molecular Genetics . If you want to do a serious project with HMMs, you'll almost surely save a big chunk of time by leveraging this work.
The Wikipedia article on the Viterbi algortithm has some instructive Python code, though the a code-free discussion of the algorithm might be more useful to most readers
There is also an piece on U-Tube "Learning How to Teach the Viterbi Algorithm." by Robert J. McEliece.The bad news is that 95% of the camera shots are on the speaker, while any rational person would much prefer to look at the overheads he's talking about --- and which are not to be found.
I expect to add some links dealing with the fascinating history of the Baum-Welch algorithm. The original paper of Baum and Welsh does not make clear just what applications they had in mind, but, at the time of publication the authors were at the Institute for Defense Analysis. Many people have speculated that they were looking at cryptographic problems.
This is just part of the colorful background of the algorithm. There are also a fascinating connections between the BW algorithm its more famous cousin the EM algorithm, which gets its own page.
There are several HMM on-line tutorials which Google can find for you as easily as I can, but Google can't add any editorial comment! The one from the University of Leeds looked exciting at first glance, but now it seems awkward to use and not entirely correct in its contents. Speaking of contents, the table of contents for the tutorial by Gergely Janos looks great --- though perhaps not perfect for our purposes; its quite focused on speech recognition. Finally, from the perspective our class, the most useful HMM tutorial is probably the one from Andrew Moore's Data Mining Tutorials.
All of the on-line HMM tutorials have debts to the earlier print tutorials of Rabiner and his co-authors. It is inspiring to poke around on-line, but when you get ready to write your own code (or to use the codes of others) you will want to give Rabiner (1989) an honest reading. The plain-vanilla situation is well covered by the first ten pages.
A.J. Viterbi did rather well for himself, and, in addition to distinguished accomplishments as a signal engineer, he also prospered as an entrepreneur and co-founder of Qualcom. In recondition of both his engineering achievements and his philanthropic deeds, the School of Engineering at USC is name in his honor. On the occasion of the naming, USC produced a lovely video of the life of Andy and Verna Viterbi. It can bring tears to you your eyes.