我是隐马尔可夫模型的新手,我目前正在尝试使用连续 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()”函数仍然是包上未发布的函数(开发人员好心地告诉我它能够尝试我的想法)。