4

MATLAB 統計ツールボックスの関数 hmmtrain.m は、トレーニング シーケンスの前にモデルが最初は状態 1 にあると想定しているようです。この「機能」をオフにする方法はありますか? 例:

>> y = [ 3 3 1 2 3 ];
>> H = eye( 3 );
>> T = ones(3)/3;
>> [ T, H ] = hmmtrain( y, T, H )

T =

         0    0.5000    0.5000
         0         0    1.0000
    0.5000         0    0.5000


H =

     1     0     0
     0     1     0
     0     0     1

トレーニング セットには 1 から 3 への遷移が含まれていません。なぜ T(1,3) は非ゼロなのですか?!

4

1 に答える 1

3

モデルの初期状態にのみ使用される特別な状態1を作成する、hmmtrain用の次のラッパー関数を作成しました。外部の呼び出し元の観点からは、それは存在せず、トレーニングシーケンスのシンボル間の遷移の統計のみを取得します。システムの初期状態については何も学習しません。

  % MYHMMTRAIN - Wrapper on HMMTRAIN that removes "initial state" effects

  function [ T, H ] = myhmmtrain( y, T, H, varargin )

  % hmmtrain assumes the system always starts in state 1, 
  % so we create a "state 1" that isn't used for anything else
  N = size(T,1);
  T = [ 0           ones(1,N)/N; ...
        zeros(N,1)  T ];
  M = size(H,2);
  H = [ zeros(1,M); H ];

  % train
  [ T, H ] = hmmtrain( y, T, H, varargin{:} );

  % remove false state 1
  T = T(2:end,2:end);
  H = H(2:end,:);

  end
于 2012-03-21T02:06:09.227 に答える