隐性马尔科夫模型简介,只聊原理,(保证没有数学)

HMM 隐性马尔科夫模型

隐马尔科夫模型(Hidden Markov Model,HMM)通常用于处理时间序列数据,即样本之间有时间序列关系的数据。学生的作答信息是天然的、有时间属性的序列,非常适合用HMM进行建模。其他的场景还有股票时长,天气,等等

马尔科夫模型

为了更好地理解HMM,我们可以先从"一阶马尔科夫模型"说起 [1] 一阶马尔科夫模型的基本思想是,一系列事件会相继发生,后一个事件发生的概率仅仅取决于前一个事件的状态。这一系列事件就像串起来的珠子。下图表示一个简单的马尔科夫模型,x1 是第一个事件,第二个事件x2 是否发生,以及如何发生,都依赖于x1。依次类推,x3的情况仅仅依赖于x2,x4的情况仅仅依赖于x3 ... ...

隐性马尔科夫模型简介,只聊原理,(保证没有数学)

马尔科夫模型

高阶马尔科夫模型

然而很多实际问题的依赖关系往往没有这么简单,x4的情况可能不仅依赖于x3,还与x2有关。为了表达当前状态与更早的状态之间的关系(例如 x4 和 x2),可以引入高阶马尔科夫。概括来说,M阶马尔科夫性是指当前状态取决于之相邻的前M个状态,但是与更早的状态无关。高阶马尔科夫性虽然达到了关联当前状态与更早的状态的目的,但是因为模型参数呈指数性爆炸,计算复杂度大大增加。

隐性马尔科夫模型

那么,有没有一种方法即能将当前状态与更早的状态关联起来,又不需要那么多参数呢?当然,这里有一种非常强大的手段,即引入隐变量。这里如果假设隐变量构成一阶马尔科夫模型 (z1, z2, z3, z4, ... ),而在每一个时间点上我们所观测到的情况仅仅和当前的隐变量有关 (x1 和 z1 相关,x2 和 z2 相关 .... )。这个就是HMM模型。这里隐变量 (z)就是我们无法观测的,比如学生对知识点的掌握情况: 不会,不熟练 等等。 而可见变量(x)就是我们从学生作答中看到的,比如 作答正确,选择错误选项B,选择错误答案C,等等。

隐性马尔科夫模型简介,只聊原理,(保证没有数学)

隐马尔科夫模型

HMM模型有三个非常重要的参数:初始概率分布(start probability)、转移概率模型(transition matrix)和发射概率矩阵(emission matrix)。对状态空间模型建模实际就是对这三者进行建模。而且此时观测变量(x)之间不再具有任何马尔科夫性。

隐性马尔科夫模型简介,只聊原理,(保证没有数学)

参数说明

案例分析

我有两个色子,一个是正常的包含1,2,3,4,5,6 这六个个点 (A),一个是特殊的,有1,2,3,4,四个点(B),下图展示了各种色子:

隐性马尔科夫模型简介,只聊原理,(保证没有数学)

市面上各种各样的色子


隐性马尔科夫模型简介,只聊原理,(保证没有数学)

一个完整的可用的HMM模型就是需要知道上边的三个参数比如: 
初始概率分布: 初始选择A色子的概率是 0.45 ,那么选择B色子的概率是0.55
转移概率: 如果前一个是A色子,那么接下来 40%的概率还是A 60% 的概率是B, 如果前一个是B色子,50% 的概率是A,50% 的概率是B,这个是一个矩阵

隐性马尔科夫模型简介,只聊原理,(保证没有数学)

结合上边的数字就是:

隐性马尔科夫模型简介,只聊原理,(保证没有数学)

发射概率矩阵: 也是一个矩阵,表示从色子的类别,到观察到的点数的概率,针对我们这个情况,他的形式如下

隐性马尔科夫模型简介,只聊原理,(保证没有数学)

因为色子是均匀的,我们可以得到

隐性马尔科夫模型简介,只聊原理,(保证没有数学)

那么模型的完整工作流程是下边这样的:

隐性马尔科夫模型简介,只聊原理,(保证没有数学)

隐性马尔科夫模型

关于HMM有两个主要问题:

已知上述三个参数,和当前观测序列,求解隐藏状态的变化
所有参数未知,只有数据,如何获得三个参数
python 提供了hmmlearn包,可以非常方便的实现以上两个问题,我们会在下一个文章中介绍如何实现

[1] . farewell (2018.4.22), 隐马尔科夫模型, 知乎 [blog post]. Retrieved from https://zhuanlan.zhihu.com/p/27907806


分享到:


相關文章: