Main Content

hmmdecode

隠れマルコフ モデル事後状態確率

構文

PSTATES = hmmdecode(seq,TRANS,EMIS)
[PSTATES,logpseq] = hmmdecode(...)
[PSTATES,logpseq,FORWARD,BACKWARD,S] = hmmdecode(...)
hmmdecode(...,'Symbols',SYMBOLS)

説明

PSTATES = hmmdecode(seq,TRANS,EMIS) は、隠れマルコフ モデルからシーケンス seq の事後状態確率 PSTATES を計算します。事後状態確率は、シンボルの観測シーケンス sym が与えられた場合にステップ "i" で状態 "k" になる条件付き確率です。遷移確率行列 TRANS と出力確率行列 EMIS を基準にモデルを指定します。TRANS(i,j) は、状態 i から状態 j への遷移の確率です。EMIS(k,seq) は、seq が状態 k から出力される確率です。

PSTATES は、seq と同じ長さで、モデルの状態ごとに 1 行をもっている配列です。PSTATES の (i, j) 番目の要素は、モデルが状態 i で j 番目のステップにあるときに系列 seq が与えられる確率を示します。

メモ:

関数 hmmdecode は、最初の出力の前に状態が 1 でステップが 0 のモデルから開始します。hmmdecode は、モデルが状態 1 から始まるという事実に基づいて PSTATES の確率を計算します。

[PSTATES,logpseq] = hmmdecode(...) は、遷移行列 TRANS と出力行列 EMIS を与えて、系列 logpseq の確率の対数である seq を返します。

[PSTATES,logpseq,FORWARD,BACKWARD,S] = hmmdecode(...) は、S によってスケーリングされたシーケンスの前方および後方の確率を返します。

hmmdecode(...,'Symbols',SYMBOLS) は、出力されるシンボルを指定します。SYMBOLS は、シンボルの名前の数値配列、string 配列または cell 配列です。既定の設定のシンボルは、1N の整数です。ここで、N は、可能な出力数です。

trans = [0.95,0.05;
         0.10,0.90];
emis = [1/6 1/6 1/6 1/6 1/6 1/6;
   1/10 1/10 1/10 1/10 1/10 1/2];
 
[seq,states] = hmmgenerate(100,trans,emis);
pStates = hmmdecode(seq,trans,emis);
[seq,states] = hmmgenerate(100,trans,emis,...
   'Symbols',{'one','two','three','four','five','six'})
pStates = hmmdecode(seq,trans,emis,...
   'Symbols',{'one','two','three','four','five','six'});

参考文献

[1] Durbin, R., S. Eddy, A. Krogh, and G. Mitchison. Biological Sequence Analysis. Cambridge, UK: Cambridge University Press, 1998.

バージョン履歴

R2006a より前に導入