我正在尝试使用隐马尔可夫模型(HMM)来解决我在每个时间点t都有M个不同的观测变量(Yti)和一个隐藏变量(Xt)的问题。为清楚起见,让我们假设所有观察到的变量(Yti)都是分类的,其中每个Yti传达不同的信息,因此可能具有不同的基数。 下图给出了一个说明性的例子,其中M = 3。
我的目标是使用Baum-Welch算法从我观察到的变量序列(Yti)中训练HMM的过渡,发射和先验概率。比方说,Xt最初会有2个隐藏状态。
我已经阅读了一些教程(包括着名的Rabiner论文),并浏览了一些HMM软件包的代码,即“ HML Toolbox in MatLab ”和“ hmmpytk package in蟒”。总的来说,我进行了广泛的网络搜索,我所能找到的所有资源 - 仅涵盖了每个时间点只有一个观察变量(M = 1)的情况。这越来越让我觉得HMM不适用于有多个观测变量的情况。
感谢。
修改 在这个paper中,图中描述的情况被描述为动态朴素贝叶斯,其中 - 在训练和估计算法方面 - 需要稍微扩展Baum-Welch和Viterbi算法用于单变量HMM
答案 0 :(得分:6)
执行此操作的最简单方法是让模型保持生成性,即在x_is
给出y_is条件独立的情况下。这导致了平凡的估计量和相对较少的参数,但在某些情况下是一个相当严格的假设(它基本上是朴素贝叶斯分类器的HMM形式)。
y_i = {y_i1...y_in}
。鉴于x_i,您将y_ij
视为有条件独立,因此:
p(y_i|x_i) = \prod_j p(y_ij | x_i)
然后,您将有效地为隐藏变量x的每个可能值学习一个朴素的贝叶斯分类器。 (条件独立在这里很重要:ys的无条件分布中存在依赖关系)。这可以通过HMM的标准EM来学习。
正如一位评论者所说,您也可以将y_ijs
的连接视为单个观察,但如果任何j变量的维数超出微不足道,则会导致批次< / em>参数,你需要更多的训练数据。
您是否特别需要该模型具有生成性?如果你只是在x_is
中寻找推理,你可能会更好地使用conditional random field,通过它的特征函数可以有更复杂的观察,而没有相同的限制性独立假设
答案 1 :(得分:2)
我发现这可以通过将系统建模为动态朴素贝叶斯分类器(DNB)来实现,这是普通(单变量)HMM的一个小扩展,可以满足多个 - 观察场景如图所示。
建议注意,DNB仍然具有隐藏状态,因此不应被视为原始朴素贝叶斯分类器的直接顺序扩展。天真的&#39;在算法的名称来自于所有观察到的变量在给定隐藏状态变量的情况下彼此独立的事实。
与HMM类似,该模型的参数估计可以通过Baum Welch(或EM,无论您更喜欢命名)算法来实现。由于每个时间步的发射分布现在是每个观测变量Yti的P(Yti | Xt)的乘积,因此前向,后向和联合变量方程需要稍微修改,如本{{3}的第3节所述。由Aviles-Arriaga等人
答案 2 :(得分:2)
你正在寻找的东西叫做结构感知器。请参阅第42页的以下内容。 http://www.cs.umd.edu/class/fall2015/cmsc723/slides/inclass_09.pdf
答案 3 :(得分:0)
您可以使用张量对问题进行建模 使用两个时间序列构造张量,然后识别HMM参数。 “通过张量的隐马尔可夫模型识别”是一个很好的参考。
Matlab提供张量工具箱。
fyi,我正在处理相关问题,如果您想以更私密的方式讨论,请随时给我发电子邮件
答案 4 :(得分:0)
您可以尝试隐藏的半马尔可夫模型,它是hmm的扩展。它允许每个州持续多个时间段。
答案 5 :(得分:0)
This paper提出了一种解决问题的算法