私は隠れマルコフモデルを初めて使用し、現在、連続HMMを使用して、RのUCIヒューマンアクティビティ認識データセット(加速度計とジャイロスコープの値で構成される)で6つのアクティビティを予測しようとしています。トレーニングデータとテストデータの両方があります。全部で 561 個の機能があります。いくつかの論文でそれを読んだ後、私は単一の 6 状態 HMM を作成し、私が持っているトレーニング データを使用してそれをトレーニングしました。状態は分類される 1 つのアクティビティを表していると仮定します。その後、ビタビを使用して、テスト データに適用されたときに 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()」関数は、パッケージではまだ公開されていない関数であることに注意してください (開発者は、私が考えていることを試すことができるように親切に教えてくれました)。