3

我是隐马尔可夫模型的新手,我目前正在尝试使用连续 HMM 来预测 R 中 UCI 人类活动识别数据集(由加速度计和陀螺仪值组成)上的 6 个活动。我有训练数据和测试数据,还有总共有 561 个功能。在阅读了几篇论文后,我制作了一个 6 状态 HMM,并使用我拥有的训练数据对其进行了训练,假设状态代表一个要分类的活动。之后,我使用维特比来预测 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()”函数仍然是包上未发布的函数(开发人员好心地告诉我它能够尝试我的想法)。

4

1 回答 1

0

我会尽力解释。在马尔可夫模型中,状态和观察到的序列之间存在对应关系(一对一对应)。在隐马尔可夫模型中没有对应关系,也有一个或多个隐藏状态,你不能通过查看对应序列来判断系统的状态。

Viterbi 用于在 HMM 中找到最可能的状态序列。为什么包的作者使用维特比?我不确定,也许他只是想表明维特比可以用于可观察状态。

希望这可以帮助。

问候。

于 2014-03-27T23:46:10.593 回答