分享

隐马尔可夫模型的原理及实现 HMM(一)

 子歌-特斯拉 2016-06-03

马尔可夫模型(Markov Model)是通过寻找事物状态的规律对未来事物状态进行预测的概率模型,在马尔可夫模型中假设当前事物的状态只与之前的n个状态有关。n=1时表示事物当前的状态只与上一个状态有关,这也是最简单的一阶马尔可夫模型。隐马尔科夫模型(Hidden Markov Model)是马尔可夫模型中的一种。马尔可夫模型的使用场景非常广泛,包括语言识别,自然语言处理和生物信息领域。Google的PageRank算法中也使用到了马尔可夫模型。

我们以天气预测的示例来说明马尔可夫模型和隐马尔可夫模型的作用。现实中每一天的天气状态都可能会不同,比如:晴天,多云,或是雷雨等。我们希望通过天气状态的变化规律生成一个模型对未来一天的天气状态进行预测。为了简化计算过程,只选择三种天气状态进行说明。通过观察,我们发现晴天,多云和雷雨三种天气状态间的变化概率。下图详细说明了每种天气状态之间相互转换的概率。

马尔可夫链

以晴天为例,假设每一天的天气状态只与前一天的天气状态有关(n=1)。如果第一天是晴天,那么第二天转换为多云的概率为0.38,转换为雷雨的概率为0.13,依旧是晴天的概率为0.50。晴天转换为这三种天气状态的概率的总和为1。下面我们通过概率矩阵列出了三种从昨天到今天三种天气状态之间的转换概率。注意,每一行的概率总和为1。

天气对应概率矩阵

除了天气间状态转换概率,我们还需要一个初始概率,就是昨天的天气状态,这里假设昨天的天气状态是晴天。

初始概率矩阵

到这里,我们定义了一个一阶的马尔可夫模型,分别为:

  • 状态:晴天,多云,雷雨
  • 状态转换概率:三种天气状态间的转换概率
  • 初始概率:晴天

我们将马尔可夫模型转换为表格,用于计算今天天气状态的概率。昨天的天气状态为“晴天”,因此在第一个初始状态表中Sun的概率为1.0。转换概率表中,昨天为初始状态,今天为最终状态,相交处为初始天气状态到最终天气状态的转化概率。

对应矩阵1

通过初始状态和转换概率,我们可以求出今天三种天气状态发生的概率。并以概率最高的天气状况作为对今天天气的预测。下面列出计算今天(t=1)三种天气状况的公式:

  • 今天为晴天的概率=初始晴天概率X晴天转晴天概率+初始多云概率X多云转晴天概率+初始雷雨概率X雷雨转晴天概率。
  • 今天为多云的概率=初始晴天概率X晴天转多云概率+初始多云概率X多云转多云概率+初始雷雨概率X雷雨转多云概率。
  • 今天为雷雨的概率=初始晴天概率X晴天转雷雨概率+初始多云概率X多云转雷雨概率+初始雷雨概率X雷雨转雷雨概率。

明天(t=2)的天气状况预测方法与今天(t=1)的类似,只不过初始概率变为了今天(t=1)。以下列出了今天(t=1),明天(t=2)和后天(t=3)的天气状况预测数据。

马尔科夫结果

在前面的例子中,我们可以直接观察到天气的情况,并且根据每一天的天气状况预测第二天的天气。当我们无法直接获得天气状况,只能获得一些间接的信息时,就需要一个模型通过间接的信息来预测直接的信息了。这个模型就是隐马尔可夫模型(Hidden Markov Model)。在天气预测的例子中,水藻和天气状况的变化存在紧密的联系,如果我们不能直接获得每天的天气状况,就需要通过每天水藻的状态的变化来推测。下图显示了水藻的状态与天气状态的对应关系。其中水藻的状态为我们能看到的观察状态,天气状态为我们看不到的隐藏状态。

隐马尔可夫链

在隐马尔可夫模型中,有三个必须的元素,分别是初始概率(π),转换概率矩阵(A)和对应概率矩阵(B)。初始概率和转换概率矩阵与前面的马尔可夫模型一样。对应概率矩阵是指观察状态与隐藏状态间的对应关系。在天气预测的例子中,就是水藻状态与天气状态间的对应概率。以下是隐马尔可夫模型的三元素。

HMM

第一个元素初始概率(π),也就是昨天的天气状态我们设定为晴天,概率为1.0。

初始概率矩阵

第二个元素(A)是天气状态间的转换概率,这里使用的数值和前面马尔可夫例子中的值是完全一样的。表示的意义也完全相同。

转移概率矩阵

第三个元素(B)是观察状态与隐藏状态的对应概率矩阵,在天气预测的例子中就是水藻状态与天气状态对应概率矩阵,观察状态可能和隐藏状态的数量一致,也可能不一致。对应概率矩阵中显示了每一种水藻状态对应的天气状态概率,例如,当天气状态是晴天时,水藻为干燥的状态为0.6,微湿的概率为0.2,湿润的概率为0.15,湿透的概率为0.05。这些状态的汇总概率为1。

对应概率矩阵

我们把隐马尔可夫模型中的三个元素转化为表格,根据观察状态推测哪一种隐藏状态出现的概率最大。简单来说就是根据水藻的不同状态再结合不同天气状态间的转换概率来推测未来三天的天气状态概率。

HMM三要素

这里我们使用穷举的方法来找出概率最高的天气状态组合。下图中显示了未来三天可能出现的所有天气状态。每一天都可能是晴天,多云和雷雨三种天气状态中的一种,因此未来三天一共有3*3*3=27种可能的天气状态序列。

Pr(dry,damp,soggy | HMM) = Pr(dry,damp,soggy | sunny,sunny,sunny) + Pr(dry,damp,soggy | sunny,sunny ,cloudy) + Pr(dry,damp,soggy | sunny,sunny ,rainy) + . . . . Pr(dry,damp,soggy | rainy,rainy ,rainy)

穷举

经过计算预测观察状态所对应的隐藏状态为晴天,多云,雷雨。

参考文章:http://www.comp./roger/HiddenMarkovModels/html_dev/main.html

—【所有文章及图片版权归 蓝鲸(王彦平)所有。欢迎转载,但请注明转自“蓝鲸网站分析博客”。】—

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多