Hidden Markov Model
Encyclopedia : H : HI : HID : Hidden Markov Model
A hidden Markov model (HMM) is a statistical model where the system being modeled is assumed to be a Markov process with unknown parameters, and the challenge is to determine the hidden parameters from the observable parameters. The extracted model parameters can then be used to perform further analysis, for example for pattern recognition applications.
In a regular Markov model, the state is directly visible to the observer, and therefore the state transition probabilities are the only parameters. In a hidden Markov model, the state is not directly visible, but variables influenced by the state are visible. Each state has a probability distribution over the possible output tokens. Therefore the sequence of tokens generated by an HMM gives some information about the sequence of states.
Hidden Markov models are especially known for their application in speech recognition and biological sequence analysis (bioinformatics).
Evolution of a Markov model
The preceding diagram emphasizes the state transitions of a HMM. It is also useful to explicitly represent the evolution of the model over time, with the states at different times t1 and t2 represented by different variables, x(t1) and x(t2).
In this diagram, it is understood that the time slices (x(t), y(t)) extend to previous and following times as needed. Typically the earliest slice is at time t=0 or time t=1.
Using Markov models
There are 3 canonical problems to solve with HMMs:
- Given the model parameters, compute the probability of a particular output sequence. Solved by the forward algorithm.
- Given the model parameters, find the most likely sequence of (hidden) states which could have generated a given output sequence. Solved by the Viterbi algorithm.
- Given an output sequence, find the most likely set of state transition and output probabilities. Solved by the Baum-Welch algorithm or the Reversed Viterbi algorithm.
A concrete example
Assume you have a friend who lives far away and to whom you talk daily over the telephone about what he did that day. Your friend is only interested in three activities: walking in the park, shopping, and cleaning his apartment. The choice of what to do is determined exclusively by the weather on a given day. You have no definite information about the weather where your friend lives, but you know general trends. Based on what he tells you he did each day, you try to guess what the weather must have been like.
You believe that the weather operates as a discrete Markov chain. There are two states, "Rainy" and "Sunny", but you cannot observe them directly, that is, they are hidden from you. On each day, there is a certain chance that your friend will perform one of the following activities, depending on the weather: "walk", "shop", or "clean". Since your friend tells you about his activities, those are the observations. The entire system is that of a hidden Markov model (HMM).
You know the general weather trends in the area, and what your friend likes to do on average. In other words, the parameters of the HMM are known. You can write them down in the Python programming language:
states = ('Rainy', 'Sunny')
observations = ('walk', 'shop', 'clean')
start_probability =
transition_probability = ,
'Sunny' : ,
}
emission_probability = ,
'Sunny' : ,
}
In this piece of code, start_probability represents your uncertainty about which state the HMM is in when your friend first calls you (all you know is that it tends to be rainy on average). The particular probability distribution used here is not the equilibrium one, which is (given the transition probabilities) actually approximately . The transition_probability represents the change of the weather in the underlying Markov chain. In this example, there is only a 30% chance that tomorrow will be sunny if today is rainy. The emission_probability represents how likely your friend is to perform a certain activity on each day. If it is rainy, there is a 50% chance that he is cleaning his apartment; if it is sunny, there is a 60% chance that he is outside for a walk.This example is further elaborated in Viterbi algorithm page. g
Applications of hidden Markov models
- speech recognition or optical character recognition
- machine translation
- bioinformatics and genomics
- * prediction of protein-coding regions in genome sequences
- * modelling families of related DNA or protein sequences
- * prediction of secondary structure elements from protein primary sequences
- and many more...
History
Hidden Markov Models were first described in a series of statistical papers by Leonard E. Baum and other authors in the second half of the 1960s. One of the first applications of HMMs was speech recognition, starting in the mid-1970s.Rabiner, p. 258
In the second half of the 1980s, HMMs began to be applied to the analysis of biological sequences, in particular DNA. Since then, they have become ubiquitous in the field of bioinformatics.Durbin et al.
See also
- Andrey Markov
- Baum Welch algorithm
- Bayesian inference
- estimation theory
- Viterbi algorithm
- Hierarchical hidden Markov model
- Hidden semi-Markov model
Notes
References
- Lawrence R. Rabiner, [A Tutorial on Hidden Markov Models and Selected Applications in Speech Recognition]. Proceedings of the IEEE, 77 (2), p. 257–286, February 1989.
- Richard Durbin, Sean R. Eddy, Anders Krogh, Graeme Mitchison. Biological Sequence Analysis: Probabilistic Models of Proteins and Nucleic Acids. Cambridge University Press, 1999. ISBN 0521629713.
- Lior Pachter and Bernd Sturmfels. "Algebraic Statistics for Computational Biology" Cambridge University Press, 2005. ISBN 0521857007
- Kristie Seymore, Andrew McCallum, and Roni Rosenfeld. Learning Hidden Markov Model Structure for Information Extraction. AAAI 99 Workshop on Machine Learning for Information Extraction, 1999. (also at CiteSeer: [link])
- http://www.comp.leeds.ac.uk/roger/HiddenMarkovModels/html_dev/main.html
- [J. Li], A. Najmi, R. M. Gray, Image classification by a two dimensional hidden Markov model, IEEE Transactions on Signal Processing, 48(2):517-33, February 2000.
External links
- [Hidden Markov Model (HMM) Toolbox for Matlab] (by Kevin Murphy)
- [Hidden Markov Model Toolkit (HTK)] (a portable toolkit for building and manipulating hidden Markov models)
- [Hidden Markov Models] (an exposition using basic mathematics)
- [GHMM Library] (home page of the GHMM Library project)
- [Jahmm Java Library] (Java library and associated graphical application)
- [A step-by-step tutorial on HMMs] (University of Leeds)
- [Software for Markov Models and Processes] (TreeAge Software)
From Wikipedia, the Free Encyclopedia. Original article here. Support Wikipedia by contributing or donating.
All text is available under the terms of the GNU Free Documentation License See Wikipedia Copyrights for details.

