【转】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 function
hmmviterbiuses 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.8989   0.1011

0.0585   0.9415

EMIS_EST =

0.1721   0.1721    0.1749    0.1612   0.1803    0.1393

0.5836   0.0741    0.0804    0.0789   0.0726    0.1104

hmmtrain— Calculates maximum likelihood estimates of transition and emissionprobabilities from a sequence of emissions.在知道输出序列,不知道状态转移序列,但是对转移矩阵和混淆矩阵有个初始猜测的情况下,可以使用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 .08 08];

You estimate TRANS and EMIS as follows:

[TRANS_EST2, EMIS_EST2] = hmmtrain(seq,TRANS_GUESS, EMIS_GUESS)

TRANS_EST2 =

0.2286   0.7714

0.0032   0.9968

EMIS_EST2 =

0.1436   0.2348    0.1837    0.1963   0.2350    0.0066

0.4355   0.1089    0.1144    0.1082   0.1109    0.1220

hmmdecode— Calculates the posterior state probabilities of a sequence of emissions

用于估计后验状态概率。对于一个输出序列seq的后验状态概率,是指这个模型在确定的状态下产生seq中一个符号的条件概率。

PSTATES = hmmdecode(seq,TRANS,EMIS)

The output PSTATES is an M-by-L matrix,where M is the number of states and L is the length of seq. PSTATES(i,j) is theconditional probability that the model is in state i when it generates the
jthsymbol of seq, given that seq is emitted.

PSTATES是一个M×L的矩阵,M是状态的个数,L是输出序列seq的长度。PSTATES(i,j)是在状态i时,产生seq的第j个符号的条件概率。

细心的读者可能会发现,上面都没有使用到Markov模型的初始状态概率矩阵。实际上,如果指定初始状态的概率,则上述函数默认从第一个状态开始,即初始状态为第一个状态的概率是1。但是statisticstoolbox也提供了修改初始状态概率矩阵的方法。

设实际的状态转移矩阵和混淆矩阵分别是TRANS和EMIS,初始状态的概率分布为p=[p1,p2,p3,...,pm],则可以通过以下方式重新设置初始状态。

TRANS_HAT = [0 p; zeros(size(TRANS,1),1)TRANS];

EMIS_HAT = [zeros(1,size(EMIS,2)); EMIS];

即:

时间: 2024-10-07 09:02:22

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

HMM隐马尔科夫模型

马尔科夫过程 在概率论及统计学中,马尔可夫过程(英语:Markov process)是一个具备了马尔可夫性质的随机过程,因为俄国数学家安德雷·马尔可夫得名.马尔可夫过程是不具备记忆特质的(memorylessness).换言之,马尔可夫过程的条件概率仅仅与系统的当前状态相关,而与它的过去历史或未来状态,都是独立.不相关的. 一个马尔科夫过程是状态间的转移仅依赖于前n个状态的过程.这个过程被称之为n阶马尔科夫模型,其中n是影响下一个状态选择的(前)n个状态.最简单的马尔科夫过程是一阶模型,它的状态

复习NLP-实战(七)----HMM隐马尔科夫模型

直接入正题吧,不想等了 第七章 HMM隐马尔科夫模型 1.马尔科夫模型 状态转移矩阵 一阶马尔科夫模型: (1)状态 (2)状态转换概率 (3)初始概率 2.隐马尔可夫模型 观察状态 和 隐藏状态(需要得到的),他们并不是一一对应的关系. 原文地址:https://www.cnblogs.com/maowuyu-xb/p/11540009.html

隐马尔科夫模型(HMM)

HMM简介 HMM用于研究非确定性生成模式,HMM是一个与时间无关的模型(有待改进),并且n阶HMM模型是指下一个状态只与前n个有关,通常只研究一阶HMM模型(有待改进).从可观察的参数中确定该过程的隐含参数,然后利用这些参数来作进一步的分析,例如模式识别. 下面可以使用一个案例来解释HMM模型. 假设有三种色子,分别是标有123456的立方体.标有1234的三菱锥.标有12345678的八面体.它们分别记为D6.D4.D8,假设我们从三个色子中任意挑一个色子的概率为1/3,然后我们可以随意掷色

隐马尔可夫模型的前向算法(java实现),今天奉上

隐马尔可夫模型的前向算法(手动实现),今天奉上,由于研究生期间,实现的时候没有多加注释,这里为了让更好的人进入自然语言处理领域,特此,将前向算法奉上,具体公式可参考52nlp的HMN系列博客. 参考了大部分网站公式和借鉴.在此表示感谢. 后向算法和维特比算法,后续更新. HMM类: 1 package jxutcm.edu.cn.hmm.model;  2   3 import jxutcm.edu.cn.hmm.bean.HMMHelper;  4   5 /**  6  * 实现了 HMM(

隐马尔科夫模型python实现简单拼音输入法

在网上看到一篇关于隐马尔科夫模型的介绍,觉得简直不能再神奇,又在网上找到大神的一篇关于如何用隐马尔可夫模型实现中文拼音输入的博客,无奈大神没给可以运行的代码,只能纯手动网上找到了结巴分词的词库,根据此训练得出隐马尔科夫模型,用维特比算法实现了一个简单的拼音输入法.githuh地址:https://github.com/LiuRoy/Pinyin_Demo 原理简介 隐马尔科夫模型 抄一段网上的定义: 隐马尔可夫模型 (Hidden Markov Model) 是一种统计模型,用来描述一个含有隐含

HMM基本原理及其实现(隐马尔科夫模型)

HMM(隐马尔科夫模型)基本原理及其实现 HMM基本原理 Markov链:如果一个过程的“将来”仅依赖“现在”而不依赖“过去”,则此过程具有马尔可夫性,或称此过程为马尔可夫过程.马尔可夫链是时间和状态参数都离散的马尔可夫过程.HMM是在Markov链的基础上发展起来的,由于实际问题比Markov链模型所描述的更为复杂,观察到的时间并不是与状态一一对应的,而是通过一组概率分布相联系,这样的模型称为HMM.HMM是双重随机过程:其中之一是Markov链,这是基本随机过程,它描述状态的转移,是隐含的.

一文搞懂HMM(隐马尔可夫模型)

本文转自于:http://www.cnblogs.com/skyme/p/4651331.html 隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,它用来描述一个含有隐含未知参数的马尔可夫过程.其难点是从可观察的参数中确定该过程的隐含参数.然后利用这些参数来作进一步的分析,例如模式识别. 是在被建模的系统被认为是一个马尔可夫过程与未观测到的(隐藏的)的状态的统计马尔可夫模型. 下面用一个简单的例子来阐述: 假设我手里有三个不同的骰子.第一个骰子是我们平常见的骰子(称这

隐马尔可夫模型(HMM)总结

摘要: 1.算法概述 2.算法推导 3.算法特性及优缺点 4.注意事项(算法过程,调参等注意事项) 5.实现和具体例子 6.适用场合 内容: 1.算法概述 隐马尔科夫模型(Hidden Markov Model)是关于时序的概率模型,描述由一个隐含的马尔科夫链生成不可观测的状态序列,再由状态序列生成观测序列的过程.这种通过观测序列预测隐含的标记序列的问题叫做标注. 下图来自维基百科: 并且本文有如下符号表示: 其中就是我们需要求得的一个三元组:拿中文分词的例子来说,分词中的状态序列是{ Begi

隐马尔可夫模型(HMM:Hidden Markov Models)

理论部分转载自:http://blog.csdn.net/likelet/article/details/7056068 手动计算例子转载自:http://blog.sina.com.cn/s/blog_953f8a550100zh35.html 隐马尔可夫模型 (Hidden Markov Model,HMM) 最初由 L. E. Baum 和其它一些学者发表在一系列的统计学论文中,随后在语言识别,自然语言处理以及生物信息等领域体现了很大的价值.平时,经常能接触到涉及 HMM 的相关文章,一直