隠れマルコフモデル(HMM)を、各時点tでM個の異なる観測変数(Yti)と単一の隠れ変数(Xt)がある問題に使用しようとしています。明確にするために、観測されたすべての変数(Yti)がカテゴリカルであり、各Ytiが異なる情報を伝達するため、異なるカーディナリティを持つ可能性があると仮定します。次の図に例を示します。ここで、M = 3です。
私の目標は、Baum-Welchアルゴリズムを使用して、観測された変数シーケンス(Yti)から、HMMの遷移、放出、および事前確率をトレーニングすることです。たとえば、Xtには最初に2つの非表示の状態があります。
私はいくつかのチュートリアル(有名なRabinerの論文を含む)を読み、いくつかのHMMソフトウェアパッケージのコード、つまり「MatLabのHMMツールボックス」を調べました。および 'Pythonのhmmpytkパッケージ'。全体として、私は広範なWeb検索を行い、すべてのリソース(見つけることができた)は、各時点で観測された変数が1つ(M = 1)しかない場合のみをカバーしています。これにより、HMMは複数の観測変数がある状況には適していないように思われます。
ありがとう。
編集:この 紙 では、図に示されている状況は、動的ナイーブベイズとして記述されています。トレーニングおよび推定アルゴリズム-単一変数HMMのバウムウェルチアルゴリズムおよびビタビアルゴリズムをわずかに拡張する必要があります。
これを行い、モデルを生成性のままにする最も簡単な方法は、x_is
が与えられた場合にy_isを条件付き独立にすることです。これは、取るに足らない推定量と比較的少数のパラメーターにつながりますが、場合によってはかなり制限的な仮定になります(基本的には単純ベイズ分類器のHMM形式です)。
編集:これが何を意味するか。タイムステップiごとに、多変量観測値y_i = {y_i1...y_in}
があります。 y_ij
を、x_iが与えられた場合に条件付き独立であるとして扱うと、次のようになります。
p(y_i|x_i) = \prod_j p(y_ij | x_i)
次に、隠れた変数xの可能な値ごとに単純ベイズ分類器を効果的に学習します。 (ここでは条件付き独立性が重要です。ysの無条件分布には依存関係があります)。これは、HMMの標準EMで学習できます。
あるコメント提供者が言ったように、y_ijs
の連結を単一の観測値として扱うこともできますが、j変数のいずれかの次元が自明ではない場合、これはlotのパラメータがあり、さらに多くのトレーニングデータが必要になります。
モデルを生成する必要がありますか? x_is
でのみ推論を探している場合は、 条件付き確率場 を使用した方がはるかに良いでしょう。これは、その機能関数を介して、独立性の同じ制限的な仮定。
あなたが探しているものは構造化パーセプトロンと呼ばれています。 42ページの次のスライドをご覧ください。 http://www.cs.umd.edu/class/fall2015/cmsc723/slides/inclass_09.pdf
これは、システムをDynamic Naive Bayes分類器(DNB)としてモデル化することで実現できることがわかりました。これは、通常の(single-変数)図に示すように、複数の観測シナリオに対応できるHMM。
DNBはまだ非表示の状態であるため、元の単純ベイズ分類器の直接の順次拡張と見なすべきではないことに注意してください。アルゴリズムの名前の「ナイーブ」は、非表示の状態変数が与えられた場合、観測されたすべての変数が互いに独立しているという事実に由来します。
HMMと同様に、このモデルのパラメーター推定は、バウムウェルチ(またはEM、どちらか名前を付けたい方)アルゴリズムを介して実行できます。各タイムステップでの放出分布は、観測された各変数YtiのP(Yti | Xt)の積であるため、こののセクション3で説明するように、順方向、逆方向、および結合変数の方程式をわずかに変更する必要があります 紙 Aviles-Arriaga etal。
うーんの拡張である隠れセミマルコフモデルを試すことができます。これにより、各状態が複数の期間続くことができます。
この論文 問題を解決するためのアルゴリズムを提案しました
テンソルを使用して問題をモデル化し、2つの時系列を使用してテンソルを構成し、HMMパラメーターを特定できます。 「テンソルによる隠れマルコフモデルの識別可能性」は、このための良いリファレンスです。
Matlabはテンソルツールボックスを提供します。
fyi、私は関連する問題に取り組んでいるので、もっとプライベートな方法で話し合いたい場合は、遠慮なく私にメールしてください