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 件のコメント

Matlab2010
Matlab2010 2012 年 11 月 14 日
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/

サインインしてコメントする。

 採用された回答

Sean de Wolski
Sean de Wolski 2012 年 10 月 18 日
編集済み: Sean de Wolski 2012 年 10 月 18 日

0 投票

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 件のコメント

Matlab2010
Matlab2010 2012 年 10 月 18 日
編集済み: Matlab2010 2012 年 11 月 14 日
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!!
Sean de Wolski
Sean de Wolski 2012 年 10 月 18 日
Guessing means we didn't need to know :)
I don't have time to look into your second question today.

サインインしてコメントする。

その他の回答 (2 件)

imene s
imene s 2015 年 3 月 18 日

0 投票

please i need this fuction hmmtrain

1 件のコメント

Sean de Wolski
Sean de Wolski 2015 年 3 月 19 日
It's in the Statistics Toolbox which you or your company/university will need to purchase.

サインインしてコメントする。

amani
amani 2015 年 6 月 18 日

0 投票

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

カテゴリ

ヘルプ センター および File ExchangeMathematics and Optimization についてさらに検索

タグ

質問済み:

2012 年 10 月 18 日

回答済み:

2015 年 6 月 18 日

Community Treasure Hunt

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

Start Hunting!

Translated by