隐式马尔科夫模型 及 Python + HMMlearn的使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了隐式马尔科夫模型 及 Python + HMMlearn的使用相关的知识,希望对你有一定的参考价值。
参考技术A hmmlearn隐式马尔科夫模型Hidden Markov Models(HMMs) 是一种通用的概率模型。一个可观测的变量X的序列被一个内部的隐藏状态Z所生成。其中,隐藏状态Z无法被直接观测。在隐藏状态之间的转移被假设是通过 马尔科夫链(Markov chain) 的形式。
模型可以表示为 起始概率向量 和转移概率矩阵 . 一个观测量生成的概率可以是关于 的任意分布, 基于当前的隐藏状态。
HMMs的3个基本问题:
hmmlearn 是Python支持HMMs的包。原来是sklearn的一部分,后来由于接口不一致分成单独的包了。不过使用起来和sklearn的其他模型类似。
构造HMM model:
初始化的参数主要有 n_components , covariance_type , n_iter 。每个参数的作用我还没有研究。
通过 fit 方法。
输入是一个矩阵,包含拼接的观察序列concatenated sequences of observation (也就是samples),和序列的长度。
EM算法是背后拟合模型的算法。基于梯度优化的方法。通常会卡到一个局部极优值上。通常用户需要用不同的初始化跑多次 fit ,然后选择分数最高的模型。
分数通过 score 方法计算。
推导出的最优的隐藏状态可以调用 predict 方法获得。 predict 方法可以指定解码器算法。当前支持的有 viterbi (Vierbi algorithm)和 map (posteriori estimation)。
马尔科夫链
马尔科夫链定义本身比较简单,它假设某一时刻状态转移的概率只依赖于它的前一个状态。举个形象的比喻,假如每天的天气是一个状态的话,那个今天是不是晴天只依赖于昨天的天气,而和前天的天气没有任何关系。当然这么说可能有些武断,但是这样做可以大大简化模型的复杂度,因此马尔科夫链在很多时间序列模型中得到广泛的应用,比如循环神经网络RNN,隐式马尔科夫模型HMM等,当然MCMC也需要它。
以上是关于隐式马尔科夫模型 及 Python + HMMlearn的使用的主要内容,如果未能解决你的问题,请参考以下文章
深度剖析HMM(附Python代码)1.前言及隐马尔科夫链HMM的背景