matlab中的隐马尔可夫模型(HMM)实现

news2024/11/15 6:01:26

隐马尔可夫模型(HMM)简介

隐马尔可夫模型(HMM)是一个在你观察到的输出顺序,但不知道状态序列模型产生输出的过程。

去年,我们为一家公司进行了短暂的咨询工作,该公司正在构建一个主要基于隐马尔可夫模型(HMM)的分析应用程序。隐马尔可夫模型的分析试图从观察到的数据中恢复状态序列。

 

 相关视频:马尔可夫链原理可视化解释与R语言区制转换Markov regime switching实例

马尔可夫链原理可视化解释与R语言区制转换Markov regime switching实例

,时长07:25

 相关视频:马尔可夫链蒙特卡罗方法MCMC原理与R语言实现|数据分享

马尔可夫链蒙特卡罗方法MCMC原理与R语言实现

,时长08:47

例如,考虑具有两个状态和六个可能输出的马尔可夫模型。该模型使用:

  • 红色骰子,有六个面,标记为1到6。

  • 一个绿色骰子,具有十二个侧面,其中五个侧面标记​​为2到6,其余七个侧面标记​​为1。

  • 加权的红色硬币,正面出现概率为.9,背面出现概率为1.。

  • 加权绿色硬币,其正面概率为0.95,背面概率为.05。

该模型使用以下规则从集合{1、2、3、4、5、6}中创建数字序列:

  • 首先滚动红色骰子,然后写下出现的数字 。

  • 投掷红色硬币并执行以下操作之一:

    • 如果结果为正面,则滚动红色骰子并记下结果。

    • 如果结果是反面,则滚动绿色骰子并记下结果。

  • 在随后的每个步骤中,您翻转与上一步中滚动的骰子颜色相同的颜色的硬币。如果硬币正面朝上,则与上一步骤滚动相同的骰子。如果硬币出现反面,请切换到另一个骰子。

该模型的状态图具有红色和绿色两种状态,如下图所示。

您可以通过滚动具有与状态相同颜色的骰子来确定状态的发射。您可以通过翻转与状态相同颜色的硬币来确定到下一个状态的过渡。

转换矩阵为:

= [0.90.050.10.95]

输出矩阵为:

该模型不是隐藏的,因为您可以从硬币和骰子的颜色知道状态的顺序。但是,假设其他人 没有向您显示骰子或硬币。您所看到的只是输出的顺序。如果开始看到的数字比其他数字多1,则可能会怀疑骰子处于绿色状态,但由于无法看到要滚动的骰子的颜色,因此无法确定。

隐藏的马尔可夫模型提出以下问题:

  • 给定一系列输出,最可能的状态路径是什么?

  • 给定一系列输出,您如何估算模型的转换和输出概率?

  • 什么是后验概率

分析隐马尔可夫模型

本节说明如何来分析隐马尔可夫模型。

生成测试序列

TRANS = [.9 .1; .05 .95];

EMIS = [1/6, 1/6, 1/6, 1/6, 1/6, 1/6;...
7/12, 1/12, 1/12, 1/12, 1/12, 1/12];

要从模型生成状态和发射的随机序列 :

输出seq是序列,输出states是状态序列。

估计状态序列

likelystates是与长度相同的序列seq

要测试的准确性hmmviterbi 

sum(states==likelystates)/1000
ans =
   0.8200

在这种情况下,最有可能的状态序列在82%的时间内与随机序列一致。

估算转移和输出矩阵

 返回转换矩阵和输出矩阵的估计值:

您可以将输出与原始 矩阵进行比较, TRANS并且EMIS

TRANS
TRANS =
0.9000    0.1000
0.0500    0.9500

EMIS
EMIS =
0.1667    0.1667    0.1667    0.1667    0.1667    0.1667
0.5833    0.0833    0.0833    0.0833    0.0833    0.0833

 

假设您对TRANS和 有以下初步猜测EMIS

TRANS_GUESS = [.85 .15; .1 .9];
EMIS_GUESS = [.17 .16 .17 .16 .17 .17;.6 .08 .08 .08 .08 08];

您估计TRANSEMIS如下:


TRANS_EST2 =
0.2286    0.7714
0.0032    0.9968

EMIS_EST2 =
0.1436    0.2348    0.1837    0.1963    0.2350    0.0066
0.4355    0.1089    0.1144    0.1082    0.1109    0.1220

 如果算法在最大迭代次数(默认值为)内未能达到此容差100,则算法将暂停。 

如果算法未能达到所需的容差,请使用以下命令增加最大迭代次数的默认值:

其中,maxiter是算法执行的最大步骤数。

估计后验状态概率

输出PSTATESM × L矩阵,其中M为状态数,L为的长度seqPSTATES(i,j)是条件概率,该模型处于状态i时,它产生j的 seq给出的是,seq 

要返回序列概率的对数seq,请使用第二个输出参数hmmdecode

随着序列长度的增加,序列的概率趋于0 。

更改初始状态分布

默认情况下, 隐藏的Markov模型函数从状态1开始。换句话说,初始状态的分布将其所有概率质量都集中在状态1处。要分配不同的概率分布,p = [ 1,2,...,M ],到M个初始状态,执行以下操作:

如果转换矩阵和发射矩阵分别为TRANSEMIS,则可以使用以下命令来创建增强矩阵:

TRANS_HAT = [0 p; zeros(size(TRANS,1),1) TRANS];

EMIS_HAT = [zeros(1,size(EMIS,2)); EMIS];

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/64786.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

借助PyCharm在代码中自动添加作者、日期

名人说:闻道有先后,术业有专攻。——韩愈 Code_流苏(CSDN) o(‐^▽^‐)o很高兴你打开了本篇博客,跟着步骤一起去设置吧! Pycharm安装教程请点这里 目录一、背景缘由二、设置方法三、补充一、背景缘由 在用…

左神:中级提升班5

1.斐波那切数列套路 1.1F(N)F(N-1)F(N-2) 1.2F(N)3F(N-1)-4F(N-3)6F(N-5) 1.3生牛问题 1.4达标串数量 1.5取最少的木棍 2.背包问题 3.找工作 4.判断是否符合人类正常书写 1.斐波那切数列套路 1.1F(N)F(N-1)F(N-2) 线性代数: 1. 利用初始项可以吧a,b,c,d算出来 2…

【面试题】https协议

1. http和https的区别 http是明文传输,敏感信息容易被中间劫持。https在http协议的基础上,增加了加密的特性,数据被劫持了也无法解密。现代浏览器已经开始强制使用https协议。 2. https的加密方式 2.1 对称加密 对称加密:使用…

[激光原理与应用-38]:《光电检测技术-5》- 光学测量基础 - 光调制

目录 一、光调制概述 1.1 什么是光调制 1.2 激光的光调制方法 1.3 光调制的调制 二、直接调制法 三、腔内调制法 3.1 被动调制: 3.2 主动调制: 四、腔外调制法 五、新型光调制 5.1 基于强度调制 5.2 基于相位调制 5.3 基于偏振调制 一、光调…

【前端】面试题6~10

目录 一、说一说BFC 1、BFC的概念 2、BFC布局规则 3、BFC形成的条件 3、BFC解决能的问题 4、BFC的其他 5、总结 二、说一说Vuex是什么,每个属性是干嘛的,如何使用 ? 1、Vuex是什么 2、Vuex 的属性 3、使用方法 4、简单总结 三、说…

Jsp基础了解(二)

文章目录Jsp基础了解(一)7,MVC模式和三层架构7.1 MVC模式7.2 三层架构7.3 MVC 和 三层架构8,案例8.1 环境准备8.1.1 创建工程8.1.2 创建包8.1.3 创建表8.1.4 创建实体类8.1.5 准备mybatis环境8.2 查询所有8.2.1 编写BrandMapper8.…

无模型深度强化学习算法

无模型深度强化学习算法:直接训练类神经网络模型来表示策略。这里的“无模型”指的是不建立环境模型,而非不建立任何机器学习模型。这样的策略模型可以直接用策略梯度(policy gradient)[3]训练,但是策略梯度的变异性太…

使用extundelete恢复文件-尚文网络xUP楠哥

~~全文共1462字,阅读需约5分钟。 进Q群11372462,领取专属报名福利,包含云计算学习路线图代表性实战训练大厂云计算面试题资料! 假如遇到一些恶意者试图入侵服务器或者遇到Linux系统架构师不小心误删文件或目录,可以通过extundele…

DFS 、BFS、回溯

1、dfs(res,当前结构,当前候选热数据,当前目标值,当前搜索的层级) 2、BFS(Breadth first search) 对于树来说,BFS就是层次遍历 而图的BFS 与树的BFS 不同点在于,树有根节点&#xf…

GPIO口,232串口,USB接口,485接口等接口保护电路

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录前言一、GPIO口1、输入端2、输出端二、USB口三、232口前言 送给大学毕业后找不到奋斗方向的你(每周不定时更…

Ansible最佳实践之 AWX 启用facts缓存和模板问卷调查

写在前面 分享一些 AWX 启用facts缓存和模板问卷调查的笔记博文内容涉及: 启动facts缓存相关配置Demo启用模板调查来设置变量demo 食用方式: 需要了解 Ansible理解不足小伙伴帮忙指正 傍晚时分,你坐在屋檐下,看着天慢慢地黑下去&a…

基础入门 - Spring Boot HelloWorld 第二节

简化配置 Spring Boot 把所有的配置都固定编写在 application.properties 里,文件名是固定写法,不能改 我们如果想更改配置,几乎所有的配置都在这里面更改就可以,而且,就算你不更改,不编写配置,…

计算机毕业设计java基于springboot医院急诊挂号系统

项目介绍 开发语言:Java 开发工具:IDEA /Eclipse 数据库:MYSQL5.7 应用服务:Tomcat7/Tomcat8 使用框架:springbootvue 人难免会有生病的时候,尤其是当一些突发情况下,一旦发生一些疾病很可能会危及生命。这时候如果按照常规的方式进行挂号是很浪费时间…

SwiftUI 中的水平条形图

水平条形图以矩形条的形式呈现数据类别,其宽度与它们所代表的数值成正比。本文展示了如何在垂直条形图的基础上创建一个水平柱状图。 水平条形图不是简单的垂直条形图的旋转。在 Numbers 等应用程序中,水平条形图被定义为独立的图表类型,而不是垂直条形图。除了条形差异外…

Jsp基础了解(一)

文章目录JSP1,JSP 概述2,JSP 快速入门2.1 搭建环境2.2 导入 JSP 依赖2.3 创建 jsp 页面2.4 编写代码2.5 测试3,JSP 原理4,JSP 脚本4.1 JSP 脚本分类4.2 案例4.2.1 需求4.2.2 实现4.2.3 成品代码4.2.4 测试4.3 JSP 缺点5&#xff0…

实验模拟TCP连接的各种异常情况(三次握手丢包,两端异常)

实验模拟TCP连接的各种异常情况(三次握手丢包,两端异常) 环境搭建 秋招结束,闲来无事,正好把计算机网络一些协议实验过一遍,于是用vmware搭建了一个两机通信的环境,在建立环境的过程中遇到了一…

HTTP Mime-Type对照表

HTTP Mime-Type对照表 : Content-Type(Mime-Type) 文件扩展名 小贴士:CtrlF 快速查找 Mime-Type类型 文件扩展名Content-Type(Mime-Type)文件扩展名Content-Type(Mime-Type).*(二进制流,不知道下载文件类型&#xff09…

Java基础教程:多线程(4)-----线程的生命周期

任何对象都有生命周期,线程也不例外,它也有自己的生命周期。线程的整个生命周期分为六个阶段,分别是新建状态(New)、可运行状态(Runnable)、运行状态(Running)、阻塞状态(Blocked)、等待状态(Waiting)和死亡状态(Terminated),线程…

1 基础知识

基础知识 1 汇编语言产生 1.1 机器指令 机器语言是机器指令的集合。机器指令展开来讲就是一台机器可以正确执行的命令。电子计算机的机器指令是一列二进制数字。计算机将之转变为一列高低电平,以使计算机的电子器件受到驱动,进行运算。 每一种微处理…

r语言绘制动态统计图:绘制世界各国的人均GDP,出生时的期望寿命和人口气泡图动画动态gif图

使用的数据 nations.csv 来自世界银行指标的数据。warming.csv 有关1880年至2017年全球年平均温度 。 yearvalue 全球平均温度,与1900-2000年的平均温度相比。 simulations.csv美国国家航空航天局(NASA)对历史温度的模拟数据,估计…