hmmtrain
出力からの隠れマルコフ モデルのパラメーター推定
構文
[ESTTR,ESTEMIT] = hmmtrain(seq,TRGUESS,EMITGUESS)
hmmtrain(...,'Algorithm',algorithm
)
hmmtrain(...,'Symbols',SYMBOLS)
hmmtrain(...,'Tolerance',tol)
hmmtrain(...,'Maxiterations',maxiter)
hmmtrain(...,'Verbose',true)
hmmtrain(...,'Pseudoemissions',PSEUDOE)
hmmtrain(...,'Pseudotransitions',PSEUDOTR)
説明
[ESTTR,ESTEMIT] = hmmtrain(seq,TRGUESS,EMITGUESS)
は、隠れマルコフ モデルの遷移確率と出力確率を Baum-Welch アルゴリズムを使用して推定します。seq
は、単一列を含む行ベクトル、各列が 1 行の行列、または各セルに 1 列を含む cell 配列です。TRGUESS
および EMITGUESS
は、遷移および出力確率行列の初期推定です。TRGUESS(i,j)
は、状態 i
から状態 j
への遷移の推定確率です。EMITGUESS(i,k)
は、シンボル k
が状態 i
から出力される推定確率です。
hmmtrain(...,'Algorithm',
は、学習アルゴリズムを指定します。algorithm
)algorithm
は、'BaumWelch'
または 'Viterbi'
のいずれかです。既定の設定のアルゴリズムは、'BaumWelch'
です。
hmmtrain(...,'Symbols',SYMBOLS)
は、出力されるシンボルを指定します。SYMBOLS
は、シンボルの名前の数値配列、string 配列または cell 配列です。既定の設定のシンボルは、1
~ N
の整数です。ここで、N
は、可能な出力数です。
hmmtrain(...,'Tolerance',tol)
は、反復推定処理の収束テストに使用する許容誤差を指定します。既定の設定の許容誤差は 1e-4
です。
hmmtrain(...,'Maxiterations',maxiter)
は、推定処理の最大反復回数を指定します。既定の設定の最大値は 100
です。
hmmtrain(...,'Verbose',true)
は、各反復でのアルゴリズムの状態を返します。
hmmtrain(...,'Pseudoemissions',PSEUDOE)
は、ビタビ学習アルゴリズムの出現頻度の出力値を指定します。この引数を使用すると、標本列で表されない可能性のある非常に低い確率の出力の確率推定がゼロになることを回避できます。PSEUDOE
は、サイズが m 行 n 列の行列です。ここで、m は、隠れマルコフ モデル内の状態数、n は可能な出力数です。i→k 出力が seq
内で発生しない場合、PSEUDOE(i,k)
を列 seq
内でこのような出力の期待値の推定を表す正の数になるように設定します。
hmmtrain(...,'Pseudotransitions',PSEUDOTR)
は、ビタビ学習アルゴリズムの出現頻度の遷移値を指定します。この引数を使用すると、標本列で表されない可能性のある非常に低い確率の遷移の確率推定がゼロになることを回避できます。PSEUDOTR
は、サイズが m 行 m 列の行列です。ここで、m は隠れマルコフ モデル内の状態数です。i→j 遷移が states
内で発生しない場合、PSEUDOTR(i,j)
を列 states
内でこのような遷移の期待値の推定を表す正の数になるように設定します。
列に該当する状態が既知である場合は、hmmestimate
を使用するとモデル パラメーターを推定できます。
許容誤差
入力引数 'tolerance'
は、関数が応答を返す前に hmmtrain
アルゴリズムが実行するステップ数を抑制します。アルゴリズムは、以下の 3 つの値がすべて tolerance
に指定されている値より小さい場合に終了します。
遷移行列と出力行列の現在の推定値を使用して入力列
seq
が生成した対数尤度行列のサイズで正規化された遷移行列のノルムでの変更
行列のサイズで正規化された出力行列のノルムでの変更
'tolerance'
の既定値は 1e-6
です。許容誤差を大きくすると、hmmtrain
アルゴリズムが終了前に実行するステップ数が減少します。
maxiterations
最大反復回数 'maxiterations'
は、アルゴリズムが終了前に実行するステップ数の最大値を抑制します。アルゴリズムが指定されている許容誤差に達する前に maxiter
回の反復を実行すると、アルゴリズムは終了し、関数は警告を返します。この場合、'maxiterations'
の値を大きくすると、アルゴリズムが終了する前に目的の許容誤差に達するようにすることができます。
例
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]; seq1 = hmmgenerate(100,trans,emis); seq2 = hmmgenerate(200,trans,emis); seqs = {seq1,seq2}; [estTR,estE] = hmmtrain(seqs,trans,emis);
参考文献
[1] Durbin, R., S. Eddy, A. Krogh, and G. Mitchison. Biological Sequence Analysis. Cambridge, UK: Cambridge University Press, 1998.
バージョン履歴
R2006a より前に導入