問題タブ [hidden-markov-models]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - 前方後方アルゴリズムの事前状態ベクトルが、固有値 1 を持つ遷移行列の固有ベクトルではないのはなぜですか?
ウィキペディアによると、最初の状態が何であるかについての知識がないため、前の状態ベクトルで各状態に等しい確率を割り当てる必要があります。しかし、遷移確率行列が何であるかは知っています。その行列の固有値が 1 である固有ベクトルは、HMM の各状態の頻度です (私は思います)。代わりに状態ベクトル?
r - HMMガウス混合分布から次の観測値を取得する
長さ1000の連続した単変量xtsオブジェクトがあり、パッケージで使用するためにxというdata.frameに変換しましたRHmm
。
混合分布には5つの状態と4つのガウス分布があることをすでに選択しました。
私が求めているのは、次の観測の期待平均値です。どうすればそれを取得できますか?
だから私がこれまでに持っているのは:
HMMFit()
関数の実行からの遷移行列- 混合物内の各ガウス分布の平均と分散のセット、およびそれぞれの比率。これらはすべて、
HMMFit()
関数から生成されました。 viterbi
HMMFit関数の出力を使用し、それを関数に入れるときの入力データに関連する過去の非表示状態のリスト
取得したものから次の非表示状態(つまり、1001番目の値)を取得し、それを使用してガウス分布から加重平均を取得するにはどうすればよいでしょうか。
次の部分が何であるかよくわからないので、かなり近いと思います...最後の状態は状態5です。次の状態を取得するために、遷移行列の5番目の行を何らかの方法で使用しますか?
私が求めているのは、次の観測で期待されるものの加重平均だけなので、次の隠れた状態は必要ありません。行5の確率に、各状態の比率に重み付けされた各平均を掛けますか?そしてそれをすべて一緒に合計しますか?
これが私が使用したコードです。
いつものようにどんな助けでも大歓迎です!
machine-learning - 行列 (NxN) 観測値を使用して離散隠れマルコフ モデルを作成しますか?
私が見たすべての離散 HMM で、観測データは整数のストリームで構成されていました。しかし、観測が実際に離散的な特徴ベクトルである場合はどうなるでしょうか? たとえば、HMM を使用して、ビデオ フレームのグレースケール強度値に対するジェスチャ認識を学習しようとするとどうなりますか? つまり、各観測値は、単一の値ではなく、nxn 行列で記述されますか? どうすればこれを行うことができますか?
ありがとう!
android - Androidでjarファイルを実行できるかどうかを知る方法は?
Androidアプリでこの隠れマルコフモデル分類器を使用したいので、これを求めています。lib はグラフィカル UI をまったく使用しないので、そのように使用できると思いますか?
Androidで使用できるjarとそうでないjarを知る方法は?
python - Pythons libghmm ライブラリでの ImportError
インストール手順に従ってGHMM ライブラリをインストールしました。ただし、まだ次のエラーが表示されます。
LD_PRELOAD_PATH
変数を/usr/local/lib
無駄 に変更しようとしました。
また、libghmm を見つけようとすると、次のように表示されるので、ライブラリは間違いなくそこにあります。
何か案は?
python - 可能性のあるGHMM拡張
GHMMライブラリをいじるのがとても楽しいです。マトリックスパラメータを使用してカスタムの放出分布を定義する方法があるかどうか疑問に思っていました。具体的には、次のことを行うことを検討していました。
セットアップの修正版を使用したいと思いghmm.MultivariateGaussianDistribution
ます。ただし、各分布状態が n^2 + n パラメータ (n は放出変数の次元) を持つ完全な共分散行列を持つ多変量法線を許可する代わりに、分布をゼロの多変量法線に制限することを望んでいました。非対角パラメータ (つまり、各排出変数は他の変数から独立しているが、状態 i に応じて一緒に描画される)。したがって、パラメータは各状態で 2n に減少します。これにより、処理するデータ ポイントがあまり多くない状況で最も重要な対角分散項の推定が実際に改善されるはずです。
コードを変更する場所に関するガイダンスをいただければ幸いです。
c++ - 動的ジェスチャーの隠れマルコフ モデル トレーニング?
隠れマルコフ モデルに関連する多くの資料があることを知っており、このトピックに関連するすべての質問と回答も読みました。それがどのように機能し、どのようにトレーニングできるかは理解していますが、単純な動的ジェスチャー用にトレーニングしようとすると、次の問題を解決できません。
OpenCV の HMM 実装を使用しています。 以前に寄せられた質問を調べて、ここで回答しました。これは、マルコフモデルを理解して使用するのに本当に役立ちました。
私は合計 2 つの動的ジェスチャを持っていますが、どちらも対称的です (左にスワイプし、右にスワイプ)。合計 5 つの観察があり、そのうち 4 つはジェスチャの異なる段階であり、5 つ目はこれらの段階が発生していないときの観察です。
左にスワイプするジェスチャは、次の観察で構成されます: 1->2->3->4 (左にスワイプ状態をトリガーする必要があります) 同様に、右にスワイプするジェスチャは、次の観察で構成されます: 4->3->2->1
私は25のシーケンスを持っています。Baum-Welch アルゴリズムを使用して隠れマルコフ モデルをトレーニングするために使用されるシーケンスごとに 20 個の観測値を取得しています。
入力シーケンスは次のとおりです。
このシーケンスでは、左スワイプおよび右スワイプ ジェスチャのパターンを確認できます。
隠れマルコフ モデルをトレーニングするために、次の値で初期化し、train 関数を呼び出して出力を取得しています。
トレーニング後の出力は次のとおりです。
このモデルを認識プログラムで使用しても、結果が得られません。ジェスチャの 1 つが検出されない限り、システムを NULL 状態のままにしたい。トランジションとエミッションのマトリックスでは、これら両方のジェスチャの推測値を示しました。
私が何を間違っていると思いますか?ポインタやヘルプはありますか?
最後に、これを行うために使用しているコードを次に示します (誰かが見たい場合)
ここで fin は、他のコードから得た観察結果を読み取るために使用されます。
c++ - C++ の隠れマルコフ モデル
Linux 環境で Opencv を使用してアクティビティ認識の問題に取り組んでいます。シンボルのシーケンスに到達しました(k-meansクラスタリングを使用)。そして今、C++ の隠れマルコフ モデルを使用して、さまざまなアクティビティのシーケンスをトレーニングしたいと考えています。しかし、どこから始めればよいかわかりません。このコードを調べましたが、別のシーケンスを指定してトレーニング済みのモデルを取得する方法が見つかりませんでしたか?
これに関するヘルプは本当に感謝されます。
matlab - Matlab の隠れマルコフ モデルのデータ予測
私は隠れマルコフ モデル (HMM) を初めて使用し、データ予測のためにそれを試しています。不均一な間隔でサンプリングされた正弦波を考えてみましょう。これらのデータを使用して、将来の瞬間の出力を予測したいと思います。matlab で統計ツールボックスを使用しようとしています。
問題は、与えられた例では、hmm モデルを生成するためにも放出行列と遷移行列が必要になることです。しかし、私が持っているデータだけに基づいて、これらの行列をどのように評価すればよいでしょうか?? 所有しているデータに基づいてモデルをトレーニングするにはどうすればよいですか?
python - GHMM - NULL ポインターで m_free を試みました
Python 2.7 の mac osx で ghmm python モジュールを使用しようとしています。すべてをインストールすることができ、Python 環境で ghmm をインポートできますが、これを (ghmm の「チュートリアル」から) 実行するとエラーが発生します (UnfairCasino はhttp://ghmm.sourceforge.netにあります)。 /UnfairCasino.py ):
具体的には、次のエラーが発生します。
GHMM ghmm.py:148 - sequence.c:ghmm_dseq_free(1199): NULL ポインターで m_free を試みました。悪いプログラム、悪い!あなたのためのクッキーはありません。python(52313,0x7fff70940cc0) malloc: * オブジェクト 0x74706d6574744120 のエラー: 解放中のポインターが割り当てられませんでした * malloc_error_break にブレークポイントを設定してデバッグ中止トラップ
ghmm.py ロガーを「DEBUG」に設定すると、ログは直前に次のように出力します。
GHMM ghmm.py:2333 - HMM.viterbi() -- 開始
GHMM ghmm.py:849 - EmissionSequence.asSequenceSet() -- 開始 >
GHMM ghmm.py:862 - EmissionSequence.asSequenceSet() -- 終了 >
トレースバック (最新の呼び出しが最後):
ファイル「/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/logging/init .py」、行 842、エミット
msg = self.format(レコード)
ファイル「/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/logging/init.py」、行 719、形式
fmt.format(レコード) を返す
ファイル「/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/logging/init.py」、464行目、形式
record.message = record.getMessage()
ファイル "/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/logging/init.py"、328行目、getMessage
msg = msg % self.args
TypeError: 文字列のフォーマット中にすべての引数が変換されるわけではありません
ファイルghmm.pyの1159行目から記録
トレースバック (最新の呼び出しが最後):
ファイル「/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/logging/init .py」、行 842、エミット
msg = self.format(レコード)
ファイル「/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/logging/init.py」、行 719、形式
fmt.format(レコード) を返す
ファイル「/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/logging/init.py」、464行目、形式
record.message = record.getMessage()
ファイル "/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/logging/init.py"、328行目、getMessage
msg = msg % self.args
TypeError: 文字列のフォーマット中にすべての引数が変換されるわけではありません
ファイル ghmm.py の 949 行目から記録
GHMM ghmm.py:2354 - HMM.viterbi() -- 終了
GHMM ghmm.py:1167 - del SequenceSubSet >
したがって、Viterbi 関数が完了するとシーケンスが削除される方法と関係があると思われますが、これが Python コード、C コードを変更する必要があることを意味するのか、それとも ghmm をコンパイルする必要があるのか どうかはわかりません。ラッパーが異なります。過去 4 日間、このライブラリを機能させようとしてきたので、どんな助けや提案も大歓迎です。