Matlab2011b的HMM(隐马尔可夫模型)相关函数介绍

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Matlab2011bStatisticsToolboxHMM作者:yuheng666Email:wuyuheng666@163.com关键字:HMM,隐马尔科夫模型,Matlab,StatisticsToolbox声明:本文主要介绍Matlab2011b中StatisticsToolbox工具箱里与隐马尔科夫模型相关的函数及其用法(请勿与其它HMM工具箱混淆)。本文的主要内容来自Matlab2011b的帮助文档,为作者自学笔记。水平有限,笔记粗糙,本着“交流探讨,知识分享”的宗旨,希望对HMM感兴趣的同学有些许帮助,欢迎指教,共同进步。有关马尔科夫模型的基本知识,请参考其他资料。如:~lliao/cis841s06/hmmtutorialpart1.pdf~lliao/cis841s06/hmmtutorialpart2.pdf://jedlik.phy.bme.hu/~gerjanos/HMM/node2.html变量说明:设有M个状态,N个符号Markov模型。TRANS:对应状态转移矩阵,大小为M*M,表示各状态相互转换的概率,TRANS(i,j)表示从状态i转换到状态j的概率。EMIS:对应符号生成矩阵,又叫混淆矩阵,观察符号概率分布。EMIS(i,j)代表在状态i时,产生符号j的概率。函数介绍:hmmgenerate—GeneratesasequenceofstatesandemissionsfromaMarkovmodel从一个马尔科夫模型产生状态序列和输出序列,该序列具有模型所表达的随机性特征。ArandomsequenceseqofemissionsymbolsArandomsequencestatesofstates用法:[seq,states]=hmmgenerate(len,TRANS,EMIS)hmmgenerate(...,'Symbols',SYMBOLS)hmmgenerate(...,'Statenames',STATENAMES)示例:trans=[0.95,0.05;0.10,0.90];emis=[1/61/61/61/61/61/6;1/101/101/101/101/101/2];[seq,states]=hmmgenerate(100,trans,emis)[seq,states]=hmmgenerate(100,trans,emis,...'Symbols',{'one','two','three','four','five','six'},...'Statenames',{'fair';'loaded'})估计状态序列:EstimatingtheStateSequencehmmviterbi—CalculatesthemostprobablestatepathforahiddenMarkovmodelGiventhetransitionandemissionmatricesTRANSandEMIS,thefunctionhmmviterbiusestheViterbialgorithmtocomputethemostlikelysequenceofstatesthemodelwouldgothroughtogenerateagivensequenceseqofemissions:给定状态转移矩阵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/61/61/61/61/61/6;1/101/101/101/101/101/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—Calculatesmaximumlikelihoodestimatesoftransitionandemissionprobabilitiesfromasequenceofemissionsandaknownsequenceofstates通过一个输出序列和已知的状态序列,计算转移概率和输出概率的最大似然估计。用法:[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.10110.05850.9415EMIS_EST=0.17210.17210.17490.16120.18030.13930.58360.07410.08040.07890.07260.1104hmmtrain—Calculatesmaximumlikelihoodestimatesoftransitionandemissionprobabilitiesfromasequenceofemissions.在知道输出序列,不知道状态转移序列,但是对转移矩阵和混淆矩阵有个初始猜测的情况下,可以使用hmmtrain估计转移状态和混淆矩阵,改函数可以选择使用BaumWelch或者Viterbi算法,通过迭代的方式进行估计,可以设置迭代次数Maxiterations和精度Tolerance。用法:[ESTTR,ESTEMIT]=hmmtrain(seq,TRGUESS,EMITGUESS)hmmtrain(...,'Algorithm',algorithm)hmmtrain(...,'Symbols',SYMBOLS)hmmtrain(...,'Tolerance',tol)hmmtrain(...,'Maxiterations',maxiter)hmmtrain(...,'Verbose',true)hmmtrain(...,'Pseudoemissions',PSEUDOE)hmmtrain(...,'Pseudotransitions',PSEUDOTR)示例:TRANS_GUESS=[.85.15;.1.9];EMIS_GUESS=[.17.16.17.16.17.17;.6.08.08.08.0808];YouestimateTRANSandEMISasfollows:[TRANS_EST2,EMIS_EST2]=hmmtrain(seq,TRANS_GUESS,EMIS_GUESS)TRANS_EST2=0.22860.77140.00320.9968EMIS_EST2=0.14360.23480.18370.19630.23500.00660.43550.10890.11440.10820.11090.1220hmmdecode—Calculatestheposteriorstateprobabilitiesofasequenceofemissions用于估计后验状态概率。对于一个输出序列seq的后验状态概率,是指这个模型在确定的状态下产生seq中一个符号的条件概率。PSTATES=hmmdecode(seq,TRANS,EMIS)TheoutputPSTATESisanM-by-Lmatrix,whereMisthenumberofstatesandListhelengthofseq.PSTATES(i,j)istheconditionalprobabilitythatthemodelisinstateiwhenitgeneratesthejthsymbolofseq,giventhatseqisemitted.PSTATES是一个M×L的矩阵,M是状态的个数,L是输出序列seq的长度。PSTATES(i,j)是在状态i时,产生seq的第j个符号的条件概率。细心的读者可能会发现,上面都没有使用到Markov模型的初始状态概率矩阵。实际上,如果指定初始状态的概率,则上述函数默认从第一个状态开始,即初始状态为第一个状态的概率是1。但是statisticstoolbox也提供了修改初始状态概率矩阵的方法。设实际的状态转移矩阵和混淆矩阵分别是TRANS和EMIS,初始状态的概率分布为p=[p1,p2,p3,...,pm],则可以通过以下方式重新设置初始状态。TRANS_HAT=[0p;zeros(size(TRANS,1),1)TRANS];EMIS_HAT=[zeros(1,size(EMIS,2));EMIS];即:

1 / 5
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功