隐马尔可夫模型(三)预测问题

article/2025/9/17 5:49:45

概率计算问题

已知模型λ和观测序列O,求对给定观测序列条件概率P(I|O)最大的状态序列。即给定观测序列,求最有可能的对应的状态序列。


解决算法

近似算法

近似算法的核心思想是在每个时刻t选择在该时刻最有可能出现的状态 it*,从而得到一个近似状态序列。

具体算法流程如下:
给定隐马尔可夫模型λ和观测序列O,在时刻t处于状态qi的概率为:(详见向前向后算法)

在每一时刻t最有可能的状态 it* 是:

从而得到状态序列 I*:

这种算法的优点是算法简单易理解。
缺点是预测的序列可能有实际不发生的部分,即有可能出现转移概率为0的相邻状态,没法保证整体上的状态序列是最有可能的。该算法每次都是求解局部最优(贪心原则),不能保证全局最优。


Viterbi算法(维特比算法)

维特比算法通过动态规划求概率最大的路径(最优路径),这时每一条路径即对应着一个状态序列。
最优路径的特性:如果最优路径在时刻t通过结点it,那么最优路径中从结点it到最终结点iT的部分路径是所有可能从it到iT路径中最优的(同时从i1到it的路径也是最优的)。

维特比算法从时刻t=1开始,递推地计算在时刻t状态为i的各条部分路径的最大概率,直到得到时刻t=T状态为i的各条路径的最大概率,我们用一个变量来记录到达最优路径的上一个结点的状态。

所以我们首先确定t=T时刻的状态值,然后根据到达该状态的上一个结点状态来递推到 iT-1* ,…,i1*

首先定义两个变量δ和ψ,定义在时刻t状态为i的所有单个路径(i1,i2,…,it)中概率最大值为:

由定义可得δ的递推公式:

定义在时刻t状态为i的所有单个路径(i1,i2,…,it-1,i)中概率最大的路径的第t−1个结点为:

具体流程如下:

  1. 计算初值:
  1. 递推计算t=2,3,···,T:
  1. 在t=T时,终止递归:
  1. 最终路径回溯,对t=T-l,T-2,…,1,求得最优路径I*=(i1* ,i2* ,…,iT*)

其中值得注意的是,ψ1(i)=0是无用的,在前向递推到时刻T获得最大概率的同时也获得了最优的最终状态iT*,回溯的过程只需要从T-1开始,不需要任何计算,因为 ψ中保存了到达当前最优路径状态的上一状态。

具体递归形式

给定状态数量N,观测数量M

  1. 对于观测值o1:状态a从1取到N,共N项
    P(观测1,状态a)=P(观测1->状态a) * P(状态a初始概率)
    =发射矩阵中状态a观测为o1的概率 * 初始概率矩阵中初始状态为a的概率

  2. 对于观测值o2:状态b从1取到N,共N项
    P(观测2,状态b)=max{ P(观测1,状态a) * P(状态a->状态b),…共N项 } * P(观测2->状态b)
    =max{上一步N个P(观测1,状态a) * 转移矩阵中每一个状态a对应转移到状态b的概率} * 发射矩阵中状态b观测为观测2的概率

  1. 对于观测值os:状态m从1取到N,共N项
    P(观测s,状态t)=max{ P(观测s-1,状态m) * P(状态m->状态t),共N项}*P(观测s->状态t)
    =max{上一步N个P(观测s-1,状态m) * 转移矩阵中每一个状态m对应转移到状态t的概率} * 发射矩阵中状态t观测为观测s的概率

  2. 设s已经是最后一个观测值,从所有概率值中选出最大的那个P(观测s,状态t),则状态t就是我们的观测s的最优状态。在每一步时记录了取得的max值时的P(观测s-1,状态m)的状态m,通过回溯从最后一个观测值开始得到每一个观测值的最优状态。最后得到一个和观测序列对应的完整的状态序列。


具体应用

问题描述

假设已知模型 λ
状态集合 S:健康,发烧;
可观测集合 O:正常、冷、头晕;
初始概率的状态矩阵 π

转移矩阵 A

观测状态转移概率矩阵(发射矩阵)B

已知:观测序列 O :正常,冷,头晕

问:在该模型 λ 下,求这个人这三天最有可能的状态序列?

问题分析

  1. 第一天:对第一个状态:正常
    P(第一天正常,第一天健康)=P1(S1)=π1 * b1(o1)=0.6 * 0.5=0.3
    P(第一天正常,第一天发烧)=P1(S2)=π1 * b2(o1)=0.4 * 0.1=0.04
    记录每个概率P取的状态,P(第一天正常,第一天健康)取的是健康;P(第一天正常,第一天发烧)取的是发烧。

  2. 第二天:对第二个状态:冷
    P(第二天冷,第二天健康)=P2(S1)=max{ P1(S1) * a11,P1(S2) * a21} * b1(o2)
    =max{0.3 * 0.7,0.04 * 0.4} * 0.4=0.084
    P(第二天冷,第二天发烧)=P2(S2)=max{ P1(S1)) * a12,P1(S2) * a22} * b1(o2)
    =max{0.3 * 0.3,0.04 * 0.6} * 0.3=0.027
    记录每个P中max取的上一次的概率,P(第二天冷,第二天健康)取的是P(第一天正常,第一天健康);P(第二天冷,第二天发烧)取的是P(第一天正常,第一天健康)。

  3. 第三天:对第二个状态:头晕
    P(第三天头晕,第三天健康)=P3(S1)=max{P2(S1) * a11,P2(S2) * a21} * b1(o3)
    =max{0.0840.7,0.0270.4}*0.1=0.00588
    P(第三天头晕,第三天发烧)=P3(S1)=max{P2(S1) * a12,P2(S2) * a22} * b1(o3)
    =max{0.084 * 0.3,0.027 * 0.6} * 0.6=0.01512
    记录每个P中max取的上一次的概率,P(第三天头晕,第三天健康)取的是P(第二天冷,第二天健康);P(第三天头晕,第三天发烧)取的是P(第二天冷,第二天健康)。

  4. 回溯:
    最后一个状态最大概率是P(第三天头晕,第三天发烧)= 0.01512,记录对应状态是发烧。max中取的是P(第二天冷,第二天健康)。即倒数第二个观测取的状态是健康。P(第二天冷,第二天健康)max中取的是P(第一天正常,第一天健康),所以第一个观测取的状态是健康。
    所以最终的最优状态序列为:健康、健康、发烧。

参考文献

  • https://blog.csdn.net/zgcr654321/article/details/92639420
  • https://zhuanlan.zhihu.com/p/95986693
  • https://www.cnblogs.com/jiangxinyang/p/9279711.html

http://chatgpt.dhexx.cn/article/9kKFfZFj.shtml

相关文章

win10c盘扩容_Win10中无损分区扩容调整大小

各位看官,上回书表到那里小生不记得了。今天咱们表一表在win10中无损分区扩容调整大小的方法。全程图文并茂,深入浅出,谁都可以一看就会。 所需工具:1、win10系统 2、DiskGenius软件 最终目的:你的C盘空间渐小需要扩容。选择C盘外的任何物理分区比如d盘,将之分出10G大小增…

win2008服务器c盘在线扩容,win7 win10 win2008系统给主分区C盘增加空间 不破坏原硬盘内容扩充C盘 MiniTool Partition Wizard...

最近一直苦恼win7的C盘的问题,当初给C盘分区分了40G,感觉够大的了,可是现在却不够用,每天见红。网上搜索的教程大多是把扩展分区的逻辑盘删除,再扩充C盘。但本人电脑东西太多,搬运太麻烦。肯定不能删。于是…

win7如何调整计算机c盘,win7系统让c盘和d盘合并的两种方法

有时我们可能需要将雨林木风win7系统电脑的两个盘符合并,这样可以增大内存空间,比如让c盘和d盘合并,这样就有足够的空间了。之前小编教程分享win7系统分区的方法,但是要让c盘和d盘合并该怎么操作呢?相信还是有很多小伙…

计算机c盘无法扩展,电脑c盘怎么扩大_C盘空间不足的扩大步骤-win7之家

C盘是电脑中重要的系统盘,我们电脑使用时间久了之后空间就会变得越来越小,导致C盘空间不足影响电脑运行速度,有些用户可能不想要删除C盘文件,那么我们可以通过扩大C盘空间来解决,很多用户不知道电脑c盘怎么扩大&#x…

计算机管理扩展灰色,为什么c盘扩展卷灰色?win7系统c盘扩展卷灰色如何解决

在Widow7系统使用一段时间后,发现C盘的空间越来越小,严重时出现卡顿问题。有什么办法不重转系统就可以加大C盘的空间?可以通过扩展卷功能用于扩展C盘的容量,遇到c盘扩展卷灰色问题怎么办?下面给大家介绍win7系统c盘扩展卷灰色的解…

计算机把C盘无法扩展,如何解决可分配空间却无法扩展C盘的问题?

4个人同意答案 谢谢. 仅相邻分区可以扩展或合并. 您还可以将可用分区移至c驱动器,然后进行扩展. 以您的分区为例. 在移动过程中,本质是复制先前的恢复分区的数据粘贴到后空区域,大小与先前的恢复分区一样大,然后删除先前的恢复分区…

计算机C盘能扩展吗,为什么电脑c盘没有扩展卷(原因揭秘及扩大c盘空间的方式)...

经常有人跟我说,自己的C盘越来越小了,或者C盘太小,怎么扩大?C盘空间越来越小,会导致电脑运行速度变慢,当C盘满了,估计开机都要开不了!究其原因,大部分都是在安装软件的时…

虚拟机扩展C盘容量方法

目的:扩展虚拟机C盘容量 问题:01:如何增加虚拟机硬盘容量? 02:右键C盘,扩展卷选项为什么是灰色的? 03:如何删除不想使用的分区?右键分区删除卷选项为什么是灰色的&#x…

计算机d盘给c盘,win10电脑D盘合并分区到c盘的两种方法

电脑安装上win10系统后发现C盘太小了,要把D盘里面的容量给合并到C盘里面去的,扩大系统盘容量。相信很多win10网友们都不会win10电脑D盘合并分区到c盘的操作,我们可以用自带的工具合并到C盘,下文给大家分享win10电脑D盘合并分区到c…

d盘莫名其妙被占空间 win10_Win10系统C盘空间突然爆满的解决方法

当电脑操作系统使用很久后,你就会发现系统盘C盘的容量越来越小,而C盘容量大小还影响到系统运行速度的快慢,那么我们该怎么解决C盘容量变小的情况呢,下面,小编就给大家分享Win10系统C盘突然爆满的解决方法。 系统自带软件就能扩容C盘! 很多朋友在装系统时给C盘分配容量太小…

计算机把C盘无法扩展,c盘不能扩展卷【解决教程】

喜欢使用电脑的小伙伴们一般都会遇到win7系统c盘不能扩展卷的问题,突然遇到win7系统c盘不能扩展卷的问题就不知道该怎么办了,其实win7系统c盘不能扩展卷的解决方法非常简单,按照 1:打开计算机页面选择计算机使用鼠标右键单击弹出下…

计算机管理为什么不能扩展卷,Win10 C盘不能扩展卷怎么解决?

在使用电脑的过程中,如果一个磁盘空间不足,通常我们可以在其它磁盘中分割一部分空间给空间不足的磁盘,也就是我们常用的磁盘管理中的压缩卷和扩展卷了,但是最近有Win10系统用户C盘空间不足,想要扩展卷可是发现扩展卷是…

windows10 C盘后面有一个恢复分区,无法扩展C盘的解决办法

像我的电脑那样,安装的是win10操作系统,会自动建立恢复分区 导致我d盘压缩出来的空间,无法扩展到c盘上 解决方案: 下载DiskGenius 数据恢复软件,硬盘分区工具,系统备份软件 - DiskGenius官方网站 安装下面教程给C盘扩容&#…

WIN7系统怎样增加C盘空间

警告:Warning......大家这里首先暂停一下!提醒大家,使用本方法会使电脑除C盘以外的所有电脑数据丢失!请谨慎操作!使用本经验对你的电脑数据造成了损害,小编不负任何责任!如果继续,说…

win10磁盘分区合并(win10磁盘分区合并c盘时扩展卷点不开)

WIN10如何合并同一个磁盘的分区? WIN10合并同一个磁盘的分区的具体步骤如下: 1、首先我们在系统桌面,右键单击此电脑目录下的管理。 2、然后我们再管理界面点击打开磁盘管理。 3、然后进入磁盘管理界面,找到你要合并的分区。 4、右…

关于Win10扩展C盘,导致主分区丢失的记录

环境 系统:win10 专业版 引导类型:BIOSMBR 问题描述 起因是系统的固态盘100g爆了,不够用了,转而使用diskgenius合并扩展C盘为200g 合并后,开机命令行界面,无法进入系统,主分区丢失。 问题解…

计算机c盘无法扩展,win10c盘无法扩展卷怎么办

对于一台长时间使用的win10系统电脑,可能会出现c盘空间不足的情况,这时就容易导致系统运行出现卡顿,因此有用户就会通过扩展卷对c盘内存进行扩大,可是却遇到了无法扩展卷的现象,那么win10c盘无法扩展卷怎么办呢&#x…

AWS VPC(二)-----创建VPC Peering

本文任务: 实现VPC Peering。VPC Peering的作用,就是不同的VPC之间的通信,原理图如下(其中instance1和instance2是public的,它们有public ip;instance3是private的,它只有private ip&#xff0…

AWS Direct connect,VPC Peering,VPC endpoint

AWS Connection 当我们面对不同的场景时,可能需要不同的AWS Connection 方案,下面我们一一介绍这些AWS连接服务,具体包括VPN,Direct connect,VPC Peering,VPC endpoint。 VPN(Virtual Private…

Ceph:pg peering过程分析

转自:https://www.ustack.com/blog/ceph%ef%bc%8dpg-peering/ Peering:互为副本的三个(此处为设置的副本个数,通常设置为3)pg的元数据达到一致的过程。官方解释如下: the process of bringing all of the OSDs that store a Place…