隠れマルコフ モデルを使用する必要があるプロジェクトに取り組んでいます。Kevin Murphy のツールボックスをダウンロードしました。使用上の問題がいくつかあります。ツールボックスの Web ページで、彼は dhmm_em と dhmm_logprob の最初の入力がシンボル シーケンス データであると述べています。彼らの例では、行ベクトルをデータとして与えています。したがって、シンボル シーケンスを行ベクトルとして指定すると、エラーが発生します。
??? Error using ==> assert at 9
assertion violated:
Error in ==> fwdback at 105
assert(approxeq(sum(alpha(:,t)),1))
Error in ==> dhmm_logprob at 17
[alpha, beta, gamma, ll] = fwdback(prior,
transmat, obslik, 'fwd_only', 1);
Error in ==> mainCourseProject at 110
loglik(train_act) =
dhmm_logprob(orderedSymbols,
hmm{train_act}.prior,
hmm{train_act}.trans,
hmm{act}.emiss);
ただし、このエラーが発生する前に、コードはいくつかのシンボル ベクトルに対して機能します。データを列ベクトルとして与えると、関数は正常に動作し、エラーは発生しません。では、なぜこのエラーが発生するのでしょうか?
単一のベクトルではなくベクトル セットを指定する必要があると言うかもしれませんが、特徴ベクトルを構造体に収集して行ベクトルをそのまま指定しようとしましたが、何も変更されず、まだアサーション エラーが発生します。
ちなみに、私のシンボルシーケンスにはゼロがありません。例で示したのとほぼ同じようにすべてを行っているので、誰かが私を助けてくれれば幸いです。