我是隐马尔可夫模型的新手,我目前正在尝试使用连续 HMM 来预测 R 中 UCI 人类事件识别数据集(由加速度计和陀螺仪值组成)的 6 个事件。我有训练数据和测试数据, 总共有 561 个特征。在阅读了几篇论文后,我制作了一个 6 状态 HMM 并使用我拥有的训练数据对其进行训练,假设状态代表一个要分类的事件。之后,我使用 viterbi 来预测 HMM 在应用于测试数据时最可能的序列。使用 HMM 的 depmixS4 包,我尝试输入这些代码:
hmm <- depmix(activity~1,nstates=6,data=train[,-562],family=multinomial("identity"))
fhmm <- fit(hmm)
hmm2 <- depmix(activity~1,nstates=6,data=test[,-562],family=multinomial("identity"))
hmm2 <- setpars(hmm2, getpars(fhmm))
viterbi(hmm2)
我惊讶地发现,当使用所有 561 个特征时,这些代码产生了 100% 的准确率(我使用 Jahmm 只获得了大约 80% 的准确率,但后来我无法使用它的所有 561 个特征,因为它挂起)。 我其实是在联系depmixS4的开发者,他确认代码没问题,还说,“注意下面的拟合模型其实是观察到的或者普通的 马尔可夫模型而不是隐马尔可夫模型,因为所有响应 概率是在边界处估计的。” 他所说的“在边界处估计响应概率”是什么意思?我尝试在网上搜索它的含义,但一无所获。
使用 viterbi 不就意味着它确实是一个隐马尔可夫模型吗?我做错了吗?
请注意,“viterbi()”函数在包中仍然是一个未发布的函数(开发人员好心地告诉我它,以便能够尝试我的想法)。
最佳答案
我会尽力解释。在马尔可夫模型中,状态与观察到的序列之间存在对应关系(一对一的对应关系)。在隐马尔可夫模型中没有对应关系,也有一个或多个隐藏状态,不能通过对应序列来判断系统的状态。
Viterbi 用于在 HMM 中找到状态的最可能序列。为什么包的作者使用维特比?我不确定,也许他只是想证明维特比可以用于可观察状态。
希望这对您有所帮助。
问候。
关于r - 边界处估计的概率是什么意思?使用 depmixS4 包的 R 中的隐马尔可夫模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22494860/