2017-05-05 3 views
0

で使用しています。baumWelchというパッケージHMMの使用方法を理解する上で問題があります。HMMパッケージをR

documentationによると、我々は最初にこれは状態が「A」と命名され、「B」の排出量が「L」と「R」と命名されていることを意味

hmm = initHMM(c("A","B"), c("L","R"), transProbs=matrix(c(.8,.2,.2,.8),2), 
       emissionProbs=matrix(c(.6,.4,.4,.6),2) 

私たちの隠れマルコフモデルを初期化する必要があり、我々は送信を持っています排出確率も同様に考慮する。

は、これまでのところは良いが、今のチュートリアルでは、観測値のリストを作成します。

observations = sample(c("L","R"),prob=c(.8,.2),size=100,replace=TRUE) 

これは観測のリストとして1次元のベクトルです。 Rabinerの古典的論文の記述によれば、ForwardとBackwardの確率は、上記のコードの変数observationsのような一連の観測で計算されます。つまり、リモートで何かを訓練するために、observationsの行列が必要です。ここではどうしたらいいですか?

EDIT:排出上記の例で

は "L" と "R" です。これらの排出量を用いて肥沃度系列Oを作成すべきである。例えばO = LRRRLLLRR等であると仮定する。

この種の観測は、完全なマルコフモデルと観測シーケンスOを与えられたフォワードアルゴリズムで使用され、nは次元数nxtの行列を生成する我々のHMMでは、このような行列のij_th要素は、「時刻jにあり、観測シーケンスの最初のj個の要素を生成し、状態iにある」と解釈される。

ここで、Baum-Welchトレーニングアルゴリズムでは、前方および後方のアルゴリズムが使用されています。

私は、Baum-Welchへの入力は観測シーケンスのリストであり、排出物リストではないと信じています。私のバージョンでは、行列入力の次元はt回mでなければならず、ここでtは観測シーケンスの長さであり、mはそのようなシーケンスの数です。

ここで入力をどのように理解できますか? 1の長さの観測シーケンスが100個ありますか?どのようにHMMのbaumWelchメソッドにそのような行列を提供するのですか

+0

統計的方法の原則を理解できない場合は、[stats.se]または[datascience.se]にお尋ねください。これは実際にスタックオーバーフローに適した特定のプログラミングに関する質問ではありません。 – MrFlick

+0

私は原則を理解しています、実際には、私はそれをよく言い換えるべきでした。私は観察がマトリックスでなければならないとは思いません。私がここで尋ねるのは、誰もがパッケージを扱っているかどうかであり、この特定の例を理解する方法と正しいことをコードする方法を明確にすることができます。 –

+0

あなたの質問が何であるかはまだ分かりません。彼らは行列ではなく観測のベクトルを作る理由を理解していませんか?あなたの期待されるマトリックスの次元は何であり、その内容は何ですか?ドキュメントのどの部分を正確に言及していますか? – MrFlick

答えて

0

私は同じことで混乱したときにこの質問を見つけました。 An Intoduction to Hidden Markov Models and Bayesian Networks 7ページからGhahramaniを引用

:「対数尤度関数の各項より観測ベクトルは、ベイジアンネットワーク内のすべての変数が含まれている場合は、さらに要因として...」

see equation here

基本的に何から私は、ネットワークの各ノードは親に依存しているので、トレーニングベクトルを行列に分割する必要はなく、1つの完全なトレーニングベクトルを代わりに使うことができるからです。私は唯一の問題は新しいトレーニングベクトルの冒頭にあると思いますが、新しいシーケンスの最初の状態である特別な開始状態「*」を作成することでこれを克服できます。

0

HMMbaumWelchの機能は、2番目の引数として1つの観測シーケンスのみを受け入れることを理解しています。トレーニングデータが複数のシーケンスで構成されている場合は、aphidパッケージを試すことができます。これは、Baum WelchとViterbiモデルトレーニングの両方をサポートしています。免責事項:私は同じ問題を抱えていたため、パッケージを作成しました。