Hmmtrain MATLAB предполагает первоначальный переход из состояния 1 - PullRequest
4 голосов
/ 20 марта 2012

Функция набора инструментов статистики 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) ненулевое?!

1 Ответ

3 голосов
/ 21 марта 2012

Я написал следующую функцию-обертку для hmmtrain, которая создает специальное состояние 1, которое используется только для начального состояния модели. С точки зрения внешнего абонента его не существует, и вы получаете только статистику переходов между символами вашей обучающей последовательности; он ничего не изучает относительно начального состояния системы.

  % 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...