首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每种状态的隐马尔可夫模型多重观测值

每种状态的隐马尔可夫模型多重观测值
EN

Stack Overflow用户
提问于 2013-03-12 18:20:00
回答 2查看 4.7K关注 0票数 8

我对隐马尔可夫模型很陌生。我理解主要的想法,我尝试了一些Matlab内置的HMM函数来帮助我理解更多。

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

代码语言:javascript
复制
seq =    2     6     6     1     4     1     1     1     5     4
states = 1     1     2     2     2     2     2     2     2     2

我可以使用 can估计函数来计算转移和发射概率矩阵如下:

代码语言:javascript
复制
[TRANS_EST, EMIS_EST] = hmmestimate(seq, states)

TRANS_EST =

代码语言:javascript
复制
0.5000    0.5000
     0    1.0000

EMIS_EST =

代码语言:javascript
复制
     0    0.5000         0         0         0    0.5000
0.5000         0         0    0.2500    0.1250    0.1250

在这个例子中,观察只是一个单一的值。

下面的示例图片描述了我的情况。

如果我有:{睡眠,工作,运动},而我有一组观察:{发光,亮,心脏rate>100 .}如果我用数字来表示每个观察,在我的情况下,每个状态同时有多个观察,

代码语言:javascript
复制
seq =    {2,3,5}     {6,1}     {2}     {2,3,6}     {4}     {1,2}     {1}    
states = 1             1        2         2         2        2        2    

我不知道如何在Matlab中实现这一点,以得到转换和发射概率矩阵。我很迷茫,下一步该怎么办?我用了正确的方法吗?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2013-03-13 04:29:01

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

在有多个观察变量的情况下,将观测数据编码为向量,其中每个元素都给出该时间步骤中的一个随机变量的值,例如'{lights=1,computer=0,心率>100 = 1,位置=0}‘。关键是,你需要有相同数量的观察在每一时间步骤,否则事情将更加困难。

票数 5
EN

Stack Overflow用户

发布于 2013-03-13 04:43:12

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15369046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档