首页 文章

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

提问于
浏览
8

我是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

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

[TRANS_EST, EMIS_EST] = hmmestimate(seq, states)

TRANS_EST =

0.5000    0.5000
     0    1.0000

EMIS_EST =

0    0.5000         0         0         0    0.5000
0.5000         0         0    0.2500    0.1250    0.1250

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

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

seq =    {2,3,5}     {6,1}     {2}     {2,3,6}     {4}     {1,2}     {1}    
states = 1             1        2         2         2        2        2

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

谢谢!

2 回答

  • 1

    如果您知道隐藏的状态序列,那么最大似然估计是微不足道的:它是标准化的经验计数 . 换句话说,计算转换和排放,然后将每行中的元素除以该行中的总计数 .

    在您有多个观察变量的情况下,将观察值编码为向量,其中每个元素给出该时间步长中的一个随机变量的值,例如, '{lights = 1,computer = 0,Heart Rate> 100 = 1,location = 0}' . 关键是你需要在每个时间步骤获得相同数量的观察结果,否则事情将变得更加困难 .

  • 3

    我认为你有两种选择 . 1)将多个观察值编码成一个数字 . 例如,如果你知道观测的最大可能值是N,并且在每个状态你最多可能有K个观测值,那么你可以将任何观测组合编码为0到N ^ K-1之间的数字 . 这样做,你假设{2,3,6}和{2,3,5}不分享任何东西,它们完全不同于两个观察 . 2)或者您可以为每个州提供多个排放分配 . 我没有在matlab中使用内置函数进行HMM估计,所以我不知道它是否支持它 . 但是这个想法是,如果你在一个州有多个排放分布,那么排放可能性就是它们的产物 . 这就是杰拉德的建议 .

相关问题