`

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

阅读更多

高温天气与行为概率

  夏季是一年最热的时候,气温普遍偏高,一般把日最高气温达到35℃以上的天气叫作高温天气,但是一般情况下高温天气分为两类。 
  (1)干热型高温。一般是指气温较高、太阳辐射强而且空气的湿度较小的高温天气。 
  (2)闷热型高温。一般是指水汽丰富,但是气温相对而言并不算太高,给人感受闷热。 
  小张在不同类型下的高温天气下会有不同的行为,但是归纳起来为主要为散步、垂钓、看书三类,分别在干热型高温和闷热型高温下对应行为的概率见下表。 
【图1】

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

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

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

原理分析

  隐马尔科夫模型(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无关系,一个马尔科夫过程的示例如下,即在不同时刻的状态及状态之间的转移概率。 
【图4】
  隐马尔科夫模型适合用于有未知条件的问题,它将隐藏的状态映射到N个可能的变量中,因此在某个时间t时,隐藏的状态则会有N种可能,依次类推,以1为时间单位,则在t+1时隐藏状态也会有N中可能性,在t+1时刻的状态与时间t的状态是密切相关,因此从时间t到时间t+1,隐藏状态有N2种可能性。即图7-3中的状态信息是N种可能变量,因此隐马尔科夫模型实际是包含两重随机过程,一方面状态之间的转移是一个随机过程;另一方面状态和可能的变量也是一个随机过程,它的过程如下。 
【图5】
  上图中,将状态S替换为了函数X,函数X表示在t时刻最大可能的状态,因此这里也不难看出隐马尔科夫模型的“隐”所表达的含义。在隐马尔科夫模型中,有五个非常重要的参数。结合医生给疑似感冒病人看病的过程解释该参数,中医一般通过“望闻问切”的方法给病人看病,病人只有“正常”和“感冒”两种可能,但是无法直接给出疑似病人“正常”或“感冒”,需要对疑似病人进行观察,目的是推断疑似感冒病人是否真实感冒,见下表。 
【图6】

  隐马尔科夫模型作为一种有监督的模型,需要通过语料库对模型进行训练,而训练过程中主要的任务是获得上述五个参数的值,求解相应的问题。使用隐马尔科夫模型可以求解三类常见的数学问题。 
  (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节中介绍的维特比算法选择最可能的概率路径。 
  隐马尔科夫模型还被应用到语言识别领域,科大讯飞曾利用隐马尔科夫模型进行语音训练,取得了较好的效果。除此之外,该模型还在生物基因领域也有深入应用,主要对基因序列的分析和预测,此外还有自然语言处理领域。在中文中也可以采用隐马尔科夫模型进行中文分词、词性分析等,并可进行机器翻译,如果利用隐马尔科夫模型进行中文分词,则隐马尔科夫模型训练的五个参数见下表。 
【图7】
  中文分词实际是求给定汉字的序列,求汉字隐藏的状态,即单字成词、词头、词中、词尾,通过这些状态将汉字组成词,达到分词的目的。求可能的状态可以利用维特比算法进行求解。 
  总之,有关数据序列及数据概率的问题,都可以利用隐马尔科夫模型的思想进行分析,甚至求解获得解决方案。 
  本文选自《大数据时代的算法:机器学习、人工智能及其典型实例》,点此链接可在博文视点官网查看此书。 
                     图片描述

  想及时获得更多精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。
                 图片描述

 

 

分享到:
评论

相关推荐

    基于隐马尔科夫模型的动作识别论文

    ### 基于隐马尔科夫模型的动作识别论文 #### 概述 本文献探讨了一种基于隐马尔科夫模型(Hidden Markov Model, HMM)的动作识别技术,特别是针对手势识别的研究。该研究旨在解决自动手势识别中面临的挑战,即处理...

    隐马尔科夫模型Python实现

    机器学习中的隐马尔科夫模型的Python实现,包括参考资料链接等

    基于隐马尔科夫模型

    基于隐马尔科夫模型的语音合成 本文对基于隐马尔科夫模型的语音合成进行了详细的描述,它最近已经重新被证明是在合成语音上是非常有效地。这种方法的主要优点是它在对于改变说话人的个性,情感和说话人的风格上具有...

    matlab_HMM天气预测_用隐马尔科夫模型进行未来天气的预测_带GUI

    《基于MATLAB的HMM天气预测系统:隐马尔科夫模型与GUI界面的应用》 在信息技术日益发达的今天,数据科学与机器学习已经成为解决复杂问题的重要工具。本项目聚焦于一个具体应用——利用MATLAB中的隐马尔科夫模型...

    隐半马尔科夫,隐马尔科夫模型,matlab

    隐半马尔科夫模型(Hidden Semi-Markov Model,HSMM)是一种在统计和机器学习领域广泛应用的概率模型,尤其在语音识别、自然语言处理、生物信息学等领域有着重要的作用。与传统的马尔科夫模型(Markov Model)相比,...

    隐马尔科夫模型的与词性标注

    ### 隐马尔科夫模型与词性标注 #### 隐马尔科夫模型简介 隐马尔科夫模型(Hidden Markov Model,HMM)是一种统计模型,它基于观测序列通过学习未知参数来推断最有可能的序列状态。在自然语言处理领域,HMM 被广泛...

    基于隐马尔科夫模型的中文分词研究_魏晓宁1

    【总结】基于隐马尔科夫模型的中文分词研究针对汉语的特性,利用统计模型和马尔科夫假设,提高分词效率和准确性。随着技术的发展,HMM结合其他技术如深度学习,将进一步推动中文分词技术的进步。

    HMM隐马尔科夫模型

    隐马尔科夫模型用Python写的,程序中实现了前向算法、后向算法、维特比算法、前向后向算法,前面的算法比较简单,后面的前向后向算法是用于训练模型的,稍微复杂一点。从测试的结果来看,模型训练有可能收敛于局部...

    HMM (隐马尔科夫模型)详细资料(含语音识别介绍)

    隐马尔科夫模型(Hidden Markov Model, HMM)是一种统计模型,它用来描述一个含有隐含未知参数的马尔科夫过程。HMM在时间序列数据的分析中非常有用,尤其是当观测数据是由无法直接观测到的隐状态序列决定时。在语音...

    隐马尔科夫模型

    介绍隐马尔科夫模型的定义,三个基本问题的求解算法

    隐马尔科夫模型程序范例

    隐马尔科夫模型(Hidden Markov Model,简称HMM)是概率统计领域中的一个重要模型,常用于处理序列数据,如语音识别、自然语言处理、生物信息学等。在这个MATLAB编写的程序范例中,我们可以深入理解HMM的原理及其在...

    马尔科夫模型预测方法的研究及其应用

    根据给定文件的信息,本文将深入探讨马尔科夫模型预测方法的研究及其应用。主要从以下几个方面进行详细解析: ### 一、马尔科夫理论概述 #### 马尔科夫理论的发展历程 马尔科夫理论起源于20世纪初俄国数学家...

    隐马尔科夫模型(HMM)的MATLAB程序和工具箱

    隐马尔科夫模型(Hidden Markov Model,简称HMM)是一种统计建模方法,尤其在自然语言处理、语音识别、生物信息学等领域有广泛应用。HMM的核心思想是假设观察序列是由不可见的状态序列生成的,而这些状态遵循...

    隐马尔科夫分词源代码

    隐马尔科夫模型(Hidden Markov Model,简称HMM)是统计建模方法中的一种,常用于自然语言处理中的序列标注任务,如中文分词。在这个任务中,HMM被用来识别和分割中文文本中的词语,以实现对文本的准确理解和分析。...

    隐马尔科夫模型.zip_python_机器学习_隐马尔科夫_隐马尔科夫模型_马尔科夫

    机器学习 李航统计学习 隐马尔科夫模型代码实现

    隐马尔科夫模型教材ppt

    **隐马尔科夫模型(Hidden Markov Model, HMM)**是一种统计建模方法,常用于处理序列数据,如语音识别、自然语言处理和生物信息学等领域。HMM模型假设有一个不可见的状态序列,这些状态按照马尔可夫过程演变,并且每...

    隐马尔科夫模型及其在语音处理中的应用

    隐马尔科夫模型及其在语音处理中的应用

    隐马尔科夫模型介绍

    隐马尔科夫模型(Hidden Markov Models, HMM)是一种统计模型,用于描述一个含有隐含未知参数的马尔科夫过程。马尔科夫过程是一种随机过程,它具有无记忆性,即过程在未来某一时刻的状态仅与当前状态有关,与过去...

Global site tag (gtag.js) - Google Analytics