隐马尔科夫(HiddenMarkov model)简称为HMM,HMM资料相当丰富,推荐参见《HMM学习最佳范例与崔晓源的博客》一文,本文只对HMM进行简要介绍,然后说明开源GHMM实现在linux环境的搭建,HMM的开源实现有众多不同语言的实现。
马尔科夫模型
一阶马尔科夫模型假设为:
1、t+l时刻系统状态的概率分布只与t时刻的状态有关,与t时刻以前的状态无关;
2、从t时刻到t+l时刻的状态转移与t的值无关。
数学表达为:
依次类推,n阶马尔科夫中当前状态与前面n个时刻的状态有关。
隐马尔科夫模型:
在马尔可夫模型中,状态对于观察者来说是直接可见的,但是而在隐马尔可夫模型中,状态并不是直接可见的,但受状态影响的观测变量则是可见的。如下图,x为不同时刻的状态,y为对应时刻的观察量。
隐马尔科夫模型三要素:
状态转移矩阵:包含了一个隐藏状态到另一个隐藏状态的概率
观测概率矩阵:包含了某一个隐藏状态观察到的某个观察状态的概率。
初始状态概率向量:初始状态t=1下的状态概率。
隐马尔可夫应用:
评估:已知模型参数,求一个观察序列的概率,通常使用forward算法。
解码:给定观察序列搜索最可能的隐藏状态序列,通常使用Viterbi算法。
学习:根据观察序列生成隐马尔科夫模型,通常使用Baum-Welch算法。
GHMM在linux下的搭建
GHMM的主页为http://ghmm.sourceforge.net/index.html,上面提供了相关资源链接下载和文档说明。
依赖文件主要为GCC、Libxml2和GSL等,下载最新的源码包并解压缩,通过一些命令进行安装。
> ./configure
> make
> make install
为了能够在python下使用GHMM模块,还需要以下步骤:
> cd ghmmwrapper
> python setup.py build
> python setup.py install
启动python,输入
>importghmm
会出现如下错误,ImportError : libghmm.so.1: cannot open shared object file: No suchfile or directory
解决方案参见http://blog.csdn.net/tangyongkang/article/details/5390015一文。
具体方法为在.bashrc文件中添加:
exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
并Logout之后再 Login,重新导入ghmm模块,运行正常。
>help(ghmm )后,有详细的ghmm模块相关介绍。
运行实例结果如下:
refer:
http://www.52nlp.cn/hmm-learn-best-practices-and-cui-johnny-blog
http://en.wikipedia.org/wiki/Hidden_Markov_model