【转】Matlab的HMM(隐马尔可夫模型)相关函数介绍

声明:本文主要介绍Matlab2011b中 Statistics Toolbox工具箱里与隐马尔科夫模型相关的函数及其用法(请勿与其它HMM工具箱混淆)。本文的主要内容来自Matlab 2011b的帮助文档,为作者自学笔记。水平有限,笔记粗糙,本着“交流探讨,知识分享”的宗旨,,希望对HMM感兴趣的同学有些许帮助,欢迎指教,共同进步。

变量说明:

设有M个状态,N个符号Markov模型。

TRANS:对应状态转移矩阵,大小为M*M,表示各状态相互转换的概率,TRANS(i,j)表示从状态i转换到状态j的概率。

EMIS:对应符号生成矩阵,又叫混淆矩阵,观察符号概率分布。EMIS(i,j)代表在状态i时,产生符号j的概率。

函数介绍:

hmmgenerate— Generates a sequence of states and emissions from a Markov model

从一个马尔科夫模型产生状态序列和输出序列,该序列具有模型所表达的随机性特征。

A random sequence seq of emission symbols

A random sequence states of states

用法:

[seq,states] = hmmgenerate(len,TRANS,EMIS)

hmmgenerate(…,’Symbols’,SYMBOLS)hmmgenerate(…,’Statenames’,STATENAMES)

示例:

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];

[seq,states] = hmmgenerate(100,trans,emis)

[seq,states] =hmmgenerate(100,trans,emis,…

‘Symbols’,{‘one’,’two’,’three’,’four’,’five’,’six’},…

‘Statenames’,{‘fair’;’loaded’})

估计状态序列:Estimatingthe State Sequence

hmmviterbi— Calculates the most probable state path for a hidden Markov model

Given the transition and emission matricesTRANS and EMIS, the functionhmmviterbiuses the Viterbi algorithm to compute the most likely sequence of states themodel would go through to generate a given sequence seq of emissions:

给定状态转移矩阵TRANS和混淆矩阵EMIS,hmmviterbi使用Viterbi算法计算该模型最相似的状态序列。

用法:

STATES = hmmviterbi(seq,TRANS,EMIS)hmmviterbi(…,’Symbols’,SYMBOLS)hmmviterbi(…,’Statenames’,STATENAMES)

示例:

likelystates = hmmviterbi(seq, TRANS,EMIS);

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];

[seq,states] = hmmgenerate(100,trans,emis);

estimatedStates =hmmviterbi(seq,trans,emis);

[seq,states] =hmmgenerate(100,trans,emis,…

‘Statenames’,{‘fair’;’loaded’});

estimatesStates = hmmviterbi(seq,trans,emis,…

‘Statenames’,{‘fair’;’loaded’});

hmmestimate和hmmtrain用于通过给定的输出序列估计转移矩阵TRANS和混淆矩阵EMIS。

hmmestimate— Calculates maximum likelihood estimates of transition and emissionprobabilities from a sequence of emissions and a known sequence of states

通过一个输出序列和已知的状态序列,计算转移概率和输出概率的最大似然估计。

用法:

[TRANS,EMIS] = hmmestimate(seq,states)hmmestimate(…,’Symbols’,SYMBOLS)hmmestimate(…,’Statenames’,STATENAMES)hmmestimate(…,’Pseudoemissions’,PSEUDOE)hmmestimate(…,’Pseudotransitions’,PSEUDOTR)

示例:

通过已知的输出序列和状态序列估计出转移状态和混淆矩阵。

[TRANS_EST, EMIS_EST] = hmmestimate(seq,states)

TRANS_EST =

0.89890.1011

0.05850.9415

EMIS_EST =

0.17210.1721 0.1749 0.16120.1803 0.1393

0.58360.0741 0.0804 0.07890.0726 0.1104

都懒得写日记来记录,可见内心底对旅行是多么的淡漠。

【转】Matlab的HMM(隐马尔可夫模型)相关函数介绍

相关文章:

你感兴趣的文章:

标签云: