Welcome to the homepage of the HMMdotEM project!
Stay tuned for improvements and updates.
HMMdotEM is a collection of Matlab® code for training discrete-state Hidden Markov Models using the EM algorithm.
It was developed by Nikola Karamanov and is distributed under a 3-clause BSD-like license.
The most notable features are:
- (Easy to use) It is easy to install and configure.
- (General conditional likelihood) You can use any conditional distribution for the visible variables (you still may have to define it yourself, there are instructions in the guide). Code for a Gaussian conditional is included and Gaussian HMM training is fully implemented.
- (Fast) The E-step and the Viterbi algorithm are implemented using mex files. Compiling is handled for you behind the scenes (see guide for install instructions), upon failure to compile it falls back to a pure matlab implementation.
- (Low Memory Consumption) Redundant variables are "cleared" in important places as soon as they are not needed.
- (Allows data segments/parameter sharing) Works when you have multiple sequences of data that are disconnected or should be sharing parameters for some other reason.
- (General M-step optimizer) Easy to include an M-step closed-form solution or your own optimizer for solving the M-step.
- (Model selection) You can use 3 standard methods for model selection (selecting the number of hidden states): BIC (Bayesian Information Criterion), ICL (Integrated Completed Likelihood) and using a validation/test set.
- A matlab version that supports classes and object oriented programming (OOP).
There are some older versions where an OOP-like feature was implemented using structs and special folders, these older versions WILL NOT work with the package.
If you have a Matlab® release later than 2010, that should be fine. (I'm not sure, 2009 may work as well).
- (optional for speed) The ability to compile .mex files. I believe under some platforms Matlab® may be unhappy with your compiler version, then my compile scripts may need to be altered a little. If you cannot compile, you can still train HMM's, but it will be much slower.
You can download the latest version of the package here: HMMdotEM-0.6.3.zip , HMMdotEM-0.6.3.tar.gz.
Note: This is a stable release for Matlab® 2011-2012 and the following platforms: Linux, Win Vista, Win XP. Other platforms and versions of matlab will most likely be fine, but have not been tested. If you find it works or doesn't work on your platform, send me an email.
Code contributions and donations are extremely appreciated.
Send code contributions to the address below.
You can donate to this project by clicking on the "donate" button below (it will refer you to a PayPal webpage):
(replace [at) and (dot] with the respective characters): hmmdotem [at) karamanov (dot] com