I want to use Hidden Markov Models for an unsupervised sequence tagging problem. Due to the peculiarities of my application domain (recognition of dialogue acts in conversations), I would like to use multiple emissions for each state (that is, multiple features). Graphically, the model would therefore look like this: HMM with multiple observations

Both the hidden states and the observation variables are discrete. The emissions probabilities $P(O_{ij} \ | \ S_i)$ are assumed to be independent and modelled via standard categorical distributions.

My question is the following: are there any publicly available toolkits or algorithm that would allow me to learn the parameters of such type of multiple-emissions HMM through a variant of Baum-Welch? From what I could gather, it seems that the only type of multiple emissions supported by classical HMM toolkits are multivariate Gaussians, but I could not find anything about independent categorical distributions of the type above.

Of course, I am aware I could "bypass" the problem by considering each observation to be a vector of values (with each dimension in this vector corresponding to a particular feature) and estimating emission probabilities on this vector space through classical Baum-Welch, but that would introduce a lot of unnecessary data sparsity.

Does anybody have a suggestion to solve this issue? I'm sure I'm not the first person that tried to apply HMMs for unsupervised learning with multiple features! (or maybe I should use another type of model? I considered using CRFs as well, but they seem tricker to apply to unsupervised learning problems).

  • 1
    $\begingroup$ this is a common sitation in animal movement models (where we typically have turning angle and step length for each observation); github.com/benaug/move.HMM handles this, as I think does the depmixS4 R package (more general). $\endgroup$
    – Ben Bolker
    Aug 27, 2014 at 22:30
  • $\begingroup$ search google for "hmm multivariate observations" and you will find many educational sites and research publications that cover this topic. e.g. datalab.uci.edu/papers/kirshner_thesis.pdf $\endgroup$
    – kgierach
    Feb 10, 2016 at 23:08

2 Answers 2


One simple approach to deal with the sparsity of the observation distribution is to model it as a naive Bayes model. You can still use Baum-Welch with a little modification.

  • $\begingroup$ A Naive Bayes Model is not very suitable in the general case because it lacks the temporal information of a Markov Model. There is no way to model the different transition probabilities and therefore any transition can occur at any time. $\endgroup$
    – s1lence
    Mar 17, 2015 at 9:58

It's been a while since you posted but just in case, the package msm in R may be what you need. The documentation here explains quite well in section 2.18, with examples, but in a nutshell, this package will allow you to simultaneously model the emissions of your states using the argument hmodel with values supplied using hmm-dists and hmmMV. There are many types of distribution supported, including discrete variables. If you believe that your outcome emissions are drawn from the same distribution (conditional upon the state) then you can constrain msm to fit the model that way and estimate a common model based on all the emission observations for a given state. They may also be permitted to have different parameters or distribution forms and fitted as a multivariate model.

However, msm currently does not seem to support the estimation of covariate effects upon the outcome distribution when fitting multivariate models (the reason I found this thread actually, as this is the problem I am having now). In other words, if you do use the multivariate approach (which might not be necessary for you, if all your emissions have the same distribution), msm will only allow your emission model parameters to depend upon state and no other covariates. msm also does not use Baum-Welch, but instead uses the forward algorithm to calculate the likelihood directly with matrix products.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.