多个观测变量的隐马尔可夫模型

Zhu*_*arb 17 machine-learning time-series hidden-markov-models

我试图使用隐马尔可夫模型(HMM)来解决一个问题,即我在每个时间点都有不同的观察变量(Yti)和一个隐藏变量(Xt).为清楚起见,让我们假设所有观察到的变量(Yti)都是分类的,其中每个Yti传达不同的信息,因此可能具有不同的基数.下图给出了一个说明性的例子,其中M = 3.

在此输入图像描述

我的目标是使用Baum-Welch算法从我观察到的变量序列(Yti)中训练HMM的过渡,发射和先验概率.比方说,Xt最初会有2个隐藏状态.

我已经阅读了一些教程(包括着名的Rabiner论文),并阅读了一些HMM软件包的代码,即" MatLab中HMM工具箱 "和" Python中hmmpytk包 ".总的来说,我进行了广泛的网络搜索,我所能找到的所有资源 - 仅涵盖了每个时间点只有一个观察变量(M = 1)的情况.这越来越让我觉得HMM不适合具有多个观察变量的情况.

  • 是否有可能将图中描述的问题建模为HMM?
  • 如果是,如何修改Baum-Welch算法以满足基于多变量观测(发射)概率训练HMM参数的需要?
  • 如果没有,您是否知道更适合图中所示情况的方法?

谢谢.

编辑:本文中,图中描述的情况被描述为动态朴素贝叶斯,其中 - 在训练和估计算法方面 - 需要对单变量HMM略微扩展Baum-Welch和Viterbi算法.

Ben*_*son 6

最简单的方法是让y_is有条件地独立给定,并使模型保持生成x_is.这导致了平凡的估计量和相对较少的参数,但在某些情况下是一个相当严格的假设(它基本上是朴素贝叶斯分类器的HMM形式).

编辑:这意味着什么.对于每个时间步,我有一个多变量观察y_i = {y_i1...y_in}.在y_ij给定x_i的情况下,您视为条件独立,因此:

p(y_i|x_i) = \prod_j p(y_ij | x_i)
Run Code Online (Sandbox Code Playgroud)

然后,您将有效地为隐藏变量x的每个可能值学习一个朴素的贝叶斯分类器.(条件独立在这里很重要:在ys 的无条件分布中存在依赖性).这可以通过HMM的标准EM来学习.

正如一位评论者所说,你也可以把它y_ijs作为单一观察的连接处理,但如果任何j变量的维数超出微不足道,这将导致很多参数,你需要更多的训练数据.

你特别需要模型生成吗?如果您只是在寻找推理x_is,那么您可能会更好地使用条件随机字段,通过其特征函数可以具有更复杂的观察,而没有相同的限制性独立假设.