隐式马尔科夫模型Hidden Markov Models(HMMs) 是一种通用的概率模型。一个可观测的变量X的序列被一个内部的隐藏状态Z所生成。其中,隐藏状态Z无法被直接观测。在隐藏状态之间的转移被假设是通过 马尔科夫链(Markov chain) 的形式。
模型可以表示为 起始概率向量和转移概率矩阵. 一个观测量生成的概率可以是关于的任意分布,基于当前的隐藏状态。
HMMs的3个基本问题:
- 给定模型参数和观测数据,评估隐藏状态的最优序列
- 给定模型参数和观测数据,计算数据的似然估计
- 仅给定观测数据,评估模型参数
hmmlearn
hmmlearn 是Python支持HMMs的包。原来是sklearn的一部分,后来由于接口不一致分成单独的包了。不过使用起来和sklearn的其他模型类似。
构造HMM model:
model = hmm.GaussianHMM(各种参数初始化)
# 还支持 GMMHMM, MultinomialHMM
初始化的参数主要有n_components
, covariance_type
, n_iter
。每个参数的作用我还没有研究。
training
通过fit
方法。
输入是一个矩阵,包含拼接的观察序列concatenated sequences of observation (也就是samples),和序列的长度。
EM算法是背后拟合模型的算法。基于梯度优化的方法。通常会卡到一个局部极优值上。通常用户需要用不同的初始化跑多次fit
,然后选择分数最高的模型。
分数通过score
方法计算。
推导出的最优的隐藏状态可以调用predict
方法获得。predict
方法可以指定解码器算法。当前支持的有viterbi
(Vierbi algorithm)和map
(posteriori estimation)。
网友评论