hmmtrain.m with unknown state sequence (Baum-Welch)

I have a vector of observations Y. I do not know the state sequence of the latents. I wish to find the the transistion and emission matrices hence I want Baum-Welch.
My Min Working example is here:
T = 1000; % Number of timesteps
Y= 1000+cumsum(randn(T,1));
K = 200; %number of states
beta = 0.5;
TRGUESS = get_stateTransitionMatrix(K, beta); %flat start model
N = 2;
EMITGUESS = (1/N) .* ones(K,N);
[TRANS,EMIS] = hmmtrain(Y,TRGUESS,EMITGUESS);
function TRGUESS = get_stateTransitionMatrix(K, beta)
TRGUESS = beta.*eye(K,K);
for i=1:K
for j=1:K
if (TRGUESS(i,j)==0)
TRGUESS(i,j) = (1-beta)/(K-1);
end
end
end
end
On running this I get:
Error using hmmdecode (line 100)
SEQ must consist of integers between 1 and 1.
Error in hmmtrain (line 213)
[~,logPseq,fs,bs,scale] = hmmdecode(seq,guessTR,guessE);
I fear I have misunderstood the hmmtrain documentation. Can anyone help?
thanks!
(using 2012A and all the toolboxes)

1 Kommentar

Matlab2010
Matlab2010 am 14 Nov. 2012
Follow up -- just to be clear, hmmtrain.m supports the discrete case.
if you have Gaussian (or other) emissions, then you need to look elsewhere eg http://code.google.com/p/pmtk3/

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Sean de Wolski
Sean de Wolski am 18 Okt. 2012
Bearbeitet: Sean de Wolski am 18 Okt. 2012

0 Stimmen

Y, your input for seqs (the first input) need to be integers ranging from 1:n that are the discrete values for training.
You can map back to the original values (whatever these integers happen to represent) later.
More
T=1000; % Number of timesteps
Y= 1000+cumsum(randn(T,1));
[uV,~,seqs] = unique(Y); %map unique values to their indices
seqs2 = rem(seqs,24)+1; %redefine as only 25 states
N = 5; %states
M = 25; %24+1
A = ones(N)/N;
B = ones(N,M)/M;
[TRANS,EMIS] = hmmtrain(seqs2',A,B);

2 Kommentare

Matlab2010
Matlab2010 am 18 Okt. 2012
Bearbeitet: Matlab2010 am 14 Nov. 2012
ah. thank you! a lot clearer. However, when people say that Baum-Welch is for when you don't know the hidden states, have we not just guessed them here, for the training?
thank you!!
Guessing means we didn't need to know :)
I don't have time to look into your second question today.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

imene s
imene s am 18 Mär. 2015

0 Stimmen

please i need this fuction hmmtrain

1 Kommentar

It's in the Statistics Toolbox which you or your company/university will need to purchase.

Melden Sie sich an, um zu kommentieren.

amani
amani am 18 Jun. 2015

0 Stimmen

Any thoughts about the default prior vector (pi) used in hmmtrain.m ??

Kategorien

Mehr zu Mathematics and Optimization finden Sie in Hilfe-Center und File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by