炎热天气看书还是钓鱼?隐马尔科夫模型教你预测!

管理员账号

2017-02-16

小编说:隐马尔科夫模型(Hide Markov Model)是一种概率统计模型,非常适合用于有未知条件的问题。气候变化万千,我们的行动也会因天气不同而改变,那么在不清楚天气状况的情况下,如何预测未来几天我们的行动呢?本文选自《大数据时代的算法:机器学习、人工智能及其典型实例》。

高温天气与行为概率

夏季是一年最热的时候,气温普遍偏高,一般把日最高气温达到35℃以上的天气叫作高温天气,但是一般情况下高温天气分为两类。

(1)干热型高温。一般是指气温较高、太阳辐射强而且空气的湿度较小的高温天气。

(2)闷热型高温。一般是指水汽丰富,但是气温相对而言并不算太高,给人感受闷热。

小张在不同类型下的高温天气下会有不同的行为,但是归纳起来为主要为散步、垂钓、看书三类,分别在干热型高温和闷热型高温下对应行为的概率见下表。

假设干热型高温和闷热型高温之间会进行相互转变,每天可能都会发生改变,但都是二者之一,相互转变的概率见表。

除此之外,还已知每年进入夏季的高温天气时,干热型高温的概率是0.6,闷热型高温的概率是0.4。
因此,总结上述内容可以整理为下图。

根据上述已知信息,则小张最近三天做的事情分别是:散步、垂钓、看书的概率是多少?

原理分析

隐马尔科夫模型(Hide Markov Model)是一种概率统计模型,实质是一种隐藏状态马尔科夫模型,在一般的马尔科夫模型中,状态对于观察者是显示可见的,但是在隐马尔科夫模型中,状态被隐藏不被观察者显示可见,但是与状态相关的某些变量则是已知可获取的。

在了解隐马尔科夫模型之前,需要提前了解马尔科夫过程,可以将马尔科夫过程视为一个自动机,各个状态之间的转换存在一定的概率。若某个系统中存在N个状态,在某个时间点t时刻都处于N个状态中的一个状态,将这N个状态的集合视为{S1,S2,S3,…,SN},利用Q表示在时间1,2,3,…,t时的状态{Q1,Q2,Q3,…,Qt},使用马尔科夫模型,则需要理解马尔科夫模型在使用之前的两点假设。

(1)当前状态的可能性只可能与前一个状态有关,与其他时刻无直接关系。

(2)状态的转移概率与时间无直接关系,时间只是一个状态表现系数。

基于假设1,需要一个初始概率分布PI,其中PI(SN)表示在最初时刻(t=1)时当前状态为SN的概率,这种概率与时间t无关系,一个马尔科夫过程的示例如下,即在不同时刻的状态及状态之间的转移概率。

隐马尔科夫模型适合用于有未知条件的问题,它将隐藏的状态映射到N个可能的变量中,因此在某个时间t时,隐藏的状态则会有N种可能,依次类推,以1为时间单位,则在t+1时隐藏状态也会有N中可能性,在t+1时刻的状态与时间t的状态是密切相关,因此从时间t到时间t+1,隐藏状态有N2种可能性。即图7-3中的状态信息是N种可能变量,因此隐马尔科夫模型实际是包含两重随机过程,一方面状态之间的转移是一个随机过程;另一方面状态和可能的变量也是一个随机过程,它的过程如下。

上图中,将状态S替换为了函数X,函数X表示在t时刻最大可能的状态,因此这里也不难看出隐马尔科夫模型的“隐”所表达的含义。在隐马尔科夫模型中,有五个非常重要的参数。结合医生给疑似感冒病人看病的过程解释该参数,中医一般通过“望闻问切”的方法给病人看病,病人只有“正常”和“感冒”两种可能,但是无法直接给出疑似病人“正常”或“感冒”,需要对疑似病人进行观察,目的是推断疑似感冒病人是否真实感冒,见下表。

隐马尔科夫模型作为一种有监督的模型,需要通过语料库对模型进行训练,而训练过程中主要的任务是获得上述五个参数的值,求解相应的问题。使用隐马尔科夫模型可以求解三类常见的数学问题。

(1)已知模型的五个参数,求解某一特定序列的输出概率。此类问题一般用于预测可能所属的序列概率,在获得五个参数之后,可以采用forward算法进行后续求解。

(2)已知模型的五个参数,求解某一特定序列的隐藏状态序列。主要用于分析观察序列可能对应的隐藏状态。例如,利用观察状态“流鼻涕、打喷嚏、咳嗽”去分析疑似病人属于隐藏“正常”或“感冒”的概率。一般采用维特比算法进行后续求解。

(3)已知模型的最终输出序列,求解可能的状态转移概率,一般采用Baum-Welch算法及Reversed Viterbi算法进行后续求解。

高温天气与行为概率

根据上面“高温天气的类型与行为活动之间关系”图的内容,且已知小张最近三天做的事情分别是散步、垂钓、看书,最直观的解法是利用穷举的方式,将所有的高温天气类型在每天进行穷举,第一天只有两种类型,第一天与第二天的高温天气类型有四种,连续三天的高温天气类型序列则有八种, 计算每种情况下的散步、垂钓、看书的概率,此种方法虽然便于理解,但是随着计算的观察序列不断增加,计算耗费的性能则会指数级上升。

因此,为简化计算性能可以利用向前算法进行推算。计算步骤如下所示。

(1)计算第一天时小张进行散步的概率。

如果是干热型高温,则

P(散步,干热型高温)=P(第一天干热型高温)×P(散步|干热型高温)

=0.6×0.31

=0.186

同理,如果是闷热型高温,则

P(散步,闷热型高温)=P(第一天闷热型高温)×P(散步|闷热型高温)

=0.4×0.46

=0.184

(2)计算第二天小张进行垂钓的概率。

根据马尔科夫的性质,计算第二天的概率,则是依赖于第一天的结果,因此在基于第一天的基础上,分别计算在两种高温天气的类型下,小张进行垂钓的概率。
如果是干热型高温,则
P(第一天散步,第二天垂钓,第二天干热型高温)=[P(第一天散步,干热型高温)×P(第二天干热型高温|第一天干热型高温)+P(第一天散步,闷热型高温)×P(第二天干热型高温|第一天闷热型高温)]×P(第二天垂钓|第二天干热型高温)

= (0.186×0.7+0.184×0.6)×0.24

= 0.057744

如果是闷热型高温,则
P(第一天散步,第二天垂钓,第二天闷热型高温)= [P(第一天散步,闷热型高温)×P(第二天闷热型高温|第一天闷热型高温)+P(第一天散步,干热型高温)×P(第二天闷热型高温|第一天干热型高温)]×P(第二天垂钓|第二天闷热型高温)

= (0.184×0.6+0.186×0.3)×0.33

= 0.054846

(3)计算第三天小张看书的概率。

如果是干热型高温,则:
P(第一天散步,第二天垂钓,第三天看书,第三天干热型高温)=[(第一天散步,第二天垂钓,第二天干热型高温)×P(第三天干热型高温| 第二天干热型高温)+P(第一天散步,第二天垂钓,第二天闷热型高温)×P(第三天干热型高温| 第二天闷热型高温)]×P(第三天看书| 第三天干热型高温)

= (0.057744×0.7+0.054846×0.6)×0.45

= 0.03299778

如果是闷热型高温,则:
P(第一天散步,第二天垂钓,第三天看书,第三天闷热型高温)=[(第一天散步,第二天垂钓,第二天闷热型高温)×P(第三天闷热型高温| 第二天闷热型高温)+P(第一天散步,第二天垂钓,第二天干热型高温)×P(第三天闷热型高温| 第二天干热型高温)] ×P(第三天看书| 第三天闷热型高温)

= (0.054846×0.6+ 0.057744×0.3)×0.21

= 0.010548468

则P(第一天散步,第二天垂钓,第三天看书)的概率,则为第三天干热型高温和闷热型高温之和,即
P(第一天散步,第二天垂钓,第三天看书)=P(第一天散步,第二天垂钓,第三天看书,第三天闷热型高温)+P(第一天散步,第二天垂钓,第三天看书,第三天干热型高温)=0.0435

上述过程利用向前算法可能序列的概率预测,是隐马尔科夫模型的典型应用之一,是将未发生的事情进行概率性预测,倘若将问题改为已发生的事件“求最近三天小张进行的活动是散步、垂钓、看书,则最近三天可能的高温天气类型”,则需要利用本书3.4节中介绍的维特比算法选择最可能的概率路径。

隐马尔科夫模型还被应用到语言识别领域,科大讯飞曾利用隐马尔科夫模型进行语音训练,取得了较好的效果。除此之外,该模型还在生物基因领域也有深入应用,主要对基因序列的分析和预测,此外还有自然语言处理领域。在中文中也可以采用隐马尔科夫模型进行中文分词、词性分析等,并可进行机器翻译,如果利用隐马尔科夫模型进行中文分词,则隐马尔科夫模型训练的五个参数见下表。

中文分词实际是求给定汉字的序列,求汉字隐藏的状态,即单字成词、词头、词中、词尾,通过这些状态将汉字组成词,达到分词的目的。求可能的状态可以利用维特比算法进行求解。

总之,有关数据序列及数据概率的问题,都可以利用隐马尔科夫模型的思想进行分析,甚至求解获得解决方案。

读者评论

相关专题

相关博文

  • Spark四大特征分析介绍

    Spark四大特征分析介绍

    Jessica瑾妞 2018-03-21

    Spark是一种基于内存的、分布式的、大数据处理框架,在 Hadoop 的强势之下,Spark凭借着快速、简洁易用、通用性以及支持多种运行模式四大特征,冲破固有思路成为很多企业标准的大数据分析框架。 1 快速 面向磁盘的MapRed...

    Jessica瑾妞 2018-03-21
    4277 0 1 1
  • 如何成为一名糟糕的大数据平台工程师

    如何成为一名糟糕的大数据平台工程师

    管理员账号 2018-08-17

    要想成为一名优秀的大数据平台开发工程师,只要做到深度与广度并重,钻研技术、理解产品、能搭架构、能解Bug,那就妥妥的了。优秀的人都是类似的,说起来就太过无聊了。所以,本文换一个角度,聊聊如何做到不那么优秀,要想成为一名糟糕的开发工程师...

    管理员账号 2018-08-17
    571 0 0 0
  • 京东大数据技术揭秘:数据采集与数据处理

    京东大数据技术揭秘:数据采集与数据处理

    管理员账号 2018-06-21

    1 大数据综述 随着DT(数据技术)时代的到来,人们能比以往更容易、更多地获取更丰富的数据。数据作为一种新的能源形式,正在源源不断地发挥其巨大的价值,帮助我们激发更多的技术驱动力,提供更优质的服务。 在京东,有着EB 级规模的历...

    管理员账号 2018-06-21
    2688 0 1 0