隐藏马尔可夫模型每个州的多个观察值

leo*_*eon 8 matlab hidden-markov-models

我是Hidden Markov Model的新手.我理解主要的想法,我尝试了一些Matlab内置的HMM功能,以帮助我了解更多.

如果我有一系列观察和相应的状态,例如

seq =    2     6     6     1     4     1     1     1     5     4
states = 1     1     2     2     2     2     2     2     2     2
Run Code Online (Sandbox Code Playgroud)

我可以使用hmmestimate函数来计算过渡和发射概率矩阵:

[TRANS_EST, EMIS_EST] = hmmestimate(seq, states)
Run Code Online (Sandbox Code Playgroud)

TRANS_EST =

0.5000    0.5000
     0    1.0000
Run Code Online (Sandbox Code Playgroud)

EMIS_EST =

     0    0.5000         0         0         0    0.5000
0.5000         0         0    0.2500    0.1250    0.1250
Run Code Online (Sandbox Code Playgroud)

在该示例中,观察仅是单个值.

下面的示例图片描述了我的情况. 我的情况 如果我有状态:{睡眠,工作,运动},我有一组观察结果:{灯光,灯亮,心率> 100 .....}如果我使用数字代表每个观察,在我的情况下每个国家同时有多个观察,

seq =    {2,3,5}     {6,1}     {2}     {2,3,6}     {4}     {1,2}     {1}    
states = 1             1        2         2         2        2        2    
Run Code Online (Sandbox Code Playgroud)

我不知道如何在Matlab中实现这个以获得转换和发射概率矩阵.我很遗憾,下一步该怎么办?我使用正确的方法吗?

谢谢!

jer*_*rad 5

如果您知道隐藏状态序列,那么最大似然估计就很简单:它是标准化的经验计数。换句话说,计算跃迁和发射的数量,然后将每行中的元素除以该行中的总计数。

如果您有多个观察变量,请将观察结果编码为向量,其中每个元素给出该时间步上的随机变量之一的值,例如“{lights=1,computer=0,Heart Rate >100 = 1” ,位置=0}'。关键是你需要在每个时间步进行相同数量的观察,否则事情会变得更加困难。