【机器学习】27. 马尔科夫链和隐马模型HMM

马尔科夫链和隐马模型HMM

  • 1. Markov chain
  • 2. 计算
  • 3. Hidden Markov Model
  • 4. 两个假设
  • 5. 问题1:evaluation
  • 6. Forward 算法
  • 7. 问题2:Decoding
  • 8. Viterbi算法
  • 9. 问题3:Learning
  • 10. 期望最大化算法Expectation Maximization

1. Markov chain

马尔可夫链是描述从一种状态到另一种状态的转换序列的模型,其中每种状态的概率仅取决于前一种状态
假设:
任何具体状态的概率只取决于之前的状态(不取决于更早的历史)。

在这里插入图片描述

2. 计算

在这里插入图片描述
前三天分别是 Sunny, cloudy, sunny, 第二天是sunny的概率是?
P[tomorrow=Sunny | S, C, S ] = P[tomorrow = Sunny | today = Sunny] = 0.8
表格可以用图表示,箭头指向下一个状态。 在这里插入图片描述
加入初始状态概率的计算
在这里插入图片描述
P的|后面是前一个状态
P(Sunny, sunny, cloudy, rainy)
= P(sunny)(sunny|sunnny)(cloudy|sunny)(rainy|cloudy)
= 0.1 * 0.8 * 0.1 *0.2 = 0.0016

3. Hidden Markov Model

马尔可夫模型在需要计算可直接观测状态的概率时很有用。

隐马尔可夫模型用于我们无法直接观察状态(它们是隐藏的),但我们可以根据间接信息对其进行判断的情况。

什么是隐藏的?天气
你能看到什么?衬衫夹克、连帽衫

λ = (π, A, A0)
π 是N个可能的隐藏状态
A是每个状态转换的概率矩阵
A0是每个状态的初始概率

4. 两个假设

  • 齐次性假设: 即假设隐藏的马尔可夫链在任意时刻t的状态只依赖于它在前一时刻的状态, 与其他时刻的状态和观测无关, 也与时刻t本身无关
  • 观测独立性假设: 即假设任意时刻的观测值只依赖于该时刻的马尔可夫链的状态, 与其他观测及状态无关

5. 问题1:evaluation

给定一个λ = (π, A, A0)HMM模型和一个观测序列X = x1, x2, x3, …计算序列出现概率。
在这里插入图片描述
计算 X = shirt, Hoodie的概率
A中的每个概率都要计算X=shirt,Hoodie的概率

在9种组合里先计算Rainy,Cloudy
P(X, {Rainy, Cloudy})

  • 初始状态是Rainy = 0.6
  • 从Rainy 到 Cloudy = 0.3
  • 观测概率
    • 在Rainy的时候,Shirt的概率是0.8
    • 在Cloudy的时候,Hoodie的概率是0.1

结果为0.6 * 0.3* 0.8*0.1 = 0.0144
计算9种组合相加,得到最终概率。
计算的复杂度为2TN^T。T是时间步长,N是状态个数

6. Forward 算法

直接案例理解
在这里插入图片描述

  1. 初始化:计算在t=1的时候,每个状态的前向概率
    f k ( 1 ) = A 0 ( k ) e k ( x 1 ) f_k(1) = A_0(k)e_k(x_1) fk(1)=A0(k)ek(x1)
    f r a i n y ( 1 ) = A 0 ( r a i n y ) e r a i n y ( S h i r t ) = 0.6 ∗ 0.8 f_{rainy}(1) = A_0(rainy)e_{rainy}(Shirt)= 0.6 * 0.8 frainy(1)=A0(rainy)erainy(Shirt)=0.60.8
    可以得到cloud和sunny的f(1)为0.15和0.001
  2. 迭代
    f k ( i ) = e k ( x i ) ∑ j f j ( i − 1 ) a j k f_k(i) = e_k(x_i)\sum_j f_j(i-1)a_{jk} fk(i)=ek(xi)jfj(i1)ajk
    f r a i n y ( 2 ) = e r a i n y ( H o o d i e ) ( f r a i n y ( 1 ) a ( r a i n y , r a i n y ) + f c l o u d y ( 1 ) a ( c l o u d y , r a i n y ) + f s u n n y ( 1 ) a ( s u n n y , r a i n y ) ) = 0.01 ∗ ( 0.48 ∗ 0.6 + 0.15 ∗ 0.4 + 0.001 ∗ 0.1 ) = 0.0035 f_{rainy}(2) = e_{rainy}(Hoodie)(f_{rainy}(1)a(rainy,rainy)+f_{cloudy}(1)a(cloudy,rainy)+f_{sunny}(1)a(sunny,rainy)) = 0.01*(0.48*0.6+0.15*0.4+0.001*0.1) = 0.0035 frainy(2)=erainy(Hoodie)(frainy(1)a(rainy,rainy)+fcloudy(1)a(cloudy,rainy)+fsunny(1)a(sunny,rainy))=0.01(0.480.6+0.150.4+0.0010.1)=0.0035
    3.最后一个步长就等于最后的所有f_k(i)相加,这里是f(2)的和,三个状态,就是cloud,sunny,rainy,各自一个f(2)

7. 问题2:Decoding

问题1是:给定一个λ = (π, A, A0)HMM模型和一个观测序列X = x1, x2, x3, …计算序列出现概率。
问题2是:给定一个λ = (π, A, A0)HMM模型和一个观测序列X = x1, x2, x3, …计算最可能的隐藏序列

8. Viterbi算法

在这里插入图片描述

  1. 初始化
    计算每个状态的Viterbi分数
    V k ( 1 ) = A 0 ( k ) e k ( x 1 ) V_k(1) = A_0(k)e_k(x_1) Vk(1)=A0(k)ek(x1)

V r a i n y ( 1 ) = A 0 ( R a i n y ) e R a i n y ( S h i r t ) = 0.6 ∗ 0.8 = 0.48 V_{rainy}(1) = A_0(Rainy)e_{Rainy}(Shirt) = 0.6 *0.8 = 0.48 Vrainy(1)=A0(Rainy)eRainy(Shirt)=0.60.8=0.48
同理得到cloud和sunny的v1为0.15,0.001
2.迭代
计算状态k在时间i的vierbi得分
V k ( i ) = e k ( x i ) m a x j V j ( i − 1 ) a j k V_k(i) = e_k(x_i)max_jV_j(i-1)a_{jk} Vk(i)=ek(xi)maxjVj(i1)ajk
记录回溯路径
P t r k ( i ) = a r g m a x j V j ( i − 1 ) a j k Ptr_k(i) = argmax_jV_j(i-1)a_{jk} Ptrk(i)=argmaxjVj(i1)ajk
V r a i n y ( 2 ) = e r a i n y ( H o o d i e ) ∗ m a x ( V r a i n y ( 1 ) a r a i n y , r a i n y , V c l o u d y ( 1 ) a c l o u d y , r a i n y , V s u n n y ( 1 ) a s u n n y , r a i n y ) = 0.01 ∗ m a x ( 0.48 ∗ 0.6 , 0.15 ∗ 0.4 , 0.001 ∗ 0.1 ) = 0.0029 V_{rainy}(2) = e_{rainy}(Hoodie) * max(V_{rainy}(1)a_{rainy,rainy}, V_{cloudy}(1)a_{cloudy,rainy},V_{sunny}(1)a_{sunny, rainy}) = 0.01 * max(0.48*0.6, 0.15*0.4, 0.001*0.1) = 0.0029 Vrainy(2)=erainy(Hoodie)max(Vrainy(1)arainy,rainy,Vcloudy(1)acloudy,rainy,Vsunny(1)asunny,rainy)=0.01max(0.480.6,0.150.4,0.0010.1)=0.0029
Ptr的最大索引是rainy,1(假设)
3.终止
Ptr2是rainy
Ptr3 = argmax(V_k(2)),最大是Sunny
所以最终答案是Rainy,sunny

9. 问题3:Learning

问题1是:给定一个λ = (π, A, A0)HMM模型和一个观测序列X = x1, x2, x3, …计算序列出现概率。
问题2是:给定一个λ = (π, A, A0)HMM模型和一个观测序列X = x1, x2, x3, …计算最可能的隐藏序列
问题3是:给定一个一个观测序列X = x1, x2, x3, …找到λ = (π, A, A0)HMM模型

10. 期望最大化算法Expectation Maximization

  1. λ = (π, A, A0) 随机初始化
  2. 计算每个状态下的概率分布
  3. 利用2中的概率更新λ = (π, A, A0),使得给定预测数据的似然函数最大化,涉及预测最可能序列并于实际观测序列进行比较
  4. 如果模型更新后,p(x|λ)增加,就回第二步继续迭代,否则停止

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

向量和矩阵的范数

一般,实数的绝对值来表示“实数”的大小;复数的模来表示复数的大小。这在实际应用中,带来了非常大的便利。 对于一个平面向量 a a a ,当其在直角坐标系中的分量分别为 x 0 x_0 x0​和 y 0 y_0 y0​时,我们常用 x 0 2 y 0 2 \sq…

树莓派开发相关知识七 -串口数码管

1、概述 一个普通的数码管实际上为71个LED灯。 上图可知,A-G加上DP点8个LED,通过不同的亮暗来显示出所需的数字。 如果同时要控制多个数码管,则需要的GPIO未免太多。 我们选择控制4个数码管,通过串行转并行的方式实现控制。 所…

基于IMX6ULL的电子产品量产工具

参考博客: https://blog.csdn.net/m0_63168877/article/details/138545059一、设计思路 软件框架及目录 二、显示系统 2.1显示管理器框架 2.2DispOpr 结构体 在disp_manager.h这一层抽象出显示结构体 在底层显示模块分配、设置这个结构体,并且向本层…

React 中使用 Redux Toolkit 状态管理

在现代 React 应用程序中,状态管理是一个至关重要的部分。使用 Redux Toolkit 可以简化 Redux 的配置和管理。本文将通过三个文件的示例,详细讲解如何使用 Redux Toolkit 创建和管理一个简单的计数器状态,并通过类比源 store 和根 store 的概…

3、liunx系统网络配置

一、liunx网络配置 Linux服务器网卡默认配置文件在/etc/sysconfig/network-scripts/下,命名的名称一般为:ifcfg-eth0 ifcfg-eth1 ,eth0表示第一块网卡,eth1表示第二块网卡,依次类推,例如DELL R720标配有4块千兆网卡&am…

【零售和消费品&存货】快递包裹条形码与二维码识别系统源码&数据集全套:改进yolo11-RFCBAMConv

改进yolo11-RVB等200全套创新点大全:快递包裹条形码与二维码识别系统源码&数据集全套 1.图片效果展示 项目来源 人工智能促进会 2024.11.01 注意:由于项目一直在更新迭代,上面“1.图片效果展示”和“2.视频效果展示”展示的系统…

牛客网最新Java高频面试题汇总(2024最新含答案)

作为一名优秀的程序员,技术面试都是不可避免的一个环节,一般技术面试官都会通过自己的方式去考察程序员的技术功底与基础理论知识。 如果你参加过一些大厂面试,肯定会遇到一些这样的问题: 1、看你项目都用的框架,熟悉…

电科金仓(人大金仓)更新授权文件(致命错误: XX000: License file expired.)

问题:电科金仓(人大金仓)数据库链接异常,重启失败,查看日志如下: 致命错误: XX000: License file expired. 位置: PostmasterMain, postmaster.c:725 解决方法: 一、下载授权文件 根据安装版本在官网下载授权文件(电科金仓-成为世界卓越的数据库产品与服务提供商)…

Hadoop期末复习(完整版)

前言(全部为语雀导出,个人所写,仅用于学习!!!!) 复习之前我们要有目的性,明确考什么,不考什么。 对于hadoop来说,首先理论方面是跑不掉的&#x…

河北冠益荣信科技公司洞庭变电站工程低压备自投装置的应用

摘 要:随着电力需求增长,供电可靠性变得至关重要,许多系统已有多回路供电。备用电源自动投入装置能提升供电可靠性,它能在主电源故障时迅速切换到备用电源。本文介绍的AM5-DB低压备自投装置,为洞庭变电站提供多种供电方…

Spring Boot:打造动态定时任务,开启灵活调度之旅

一、描述 在 Spring Boot 中设置动态定时任务是一种非常实用的功能,可以根据实际需求在运行时动态地调整定时任务的执行时间、频率等参数。以下是对 Spring Boot 设置动态定时任务的简单介绍: 1、传统定时任务的局限性 在传统的 Spring Boot 定时任务…

Lua 从基础入门到精通(非常详细)

目录 什么是 Lua? Lua 环境安装 Lua基本语法 注释 数据类型 nil(空) Boolean number(数字) string(字符串) function(函数) userdata thread table&#xff…

PostgreSQL 到 PostgreSQL 数据迁移同步

简述 PostgreSQL 是一个历史悠久且广泛使用的数据库,不仅具备标准的关系型数据库能力,还具有相当不错的复杂 SQL 执行能力。用户常常会将 PostgreSQL 应用于在线事务型业务,以及部分数据分析工作,所以 PostgreSQL 到 PostgreSQL …

GESP4级考试语法知识(捕捉异常)

参考程序代码&#xff1a; #include <iostream> using namespace std;double divide(double a, double b) {if (b 0) {throw "Division by zero error"; // 抛出异常}return a / b; }int main() {double num1, num2;cout << "Enter two numbers:…

新老项目不同node版本,使用nvm控制node版本切换(mac、window)

window系统电脑的链接&#xff1a;https://blog.csdn.net/qq_40269801/article/details/136450961 以下是mac版本的操作方式&#xff1a; 1、打开终端 克隆 NVM 仓库&#xff1a; git clone https://github.com/nvm-sh/nvm.git ~/.nvm 2、运行安装脚本&#xff1a; cd ~/.n…

HTTP与HTTPS协议

HTTP协议&#xff0c;即超文本传输协议&#xff08;HyperText Transfer Protocol&#xff09;&#xff0c;是互联网中一种用于在Web浏览器与Web服务器之间传输数据的应用层协议。它的核心理念是提供一种简单、灵活的方式来请求和响应信息&#xff0c;是现代万维网的基础。 1. 什…

R语言机器学习与临床预测模型79--机器学习总览

R小盐准备介绍R语言机器学习与预测模型的学习笔记 你想要的R语言学习资料都在这里&#xff0c; 快来收藏关注【科研私家菜】 01 机器学习分类 机器学习模型主要分为有监督、无监督和强化学习方法。 监督学习 监督学习是教师向学生提供关于他们在考试中是否表现良好的反馈。其中…

Diving into the STM32 HAL-----HAL_GPIO

1、怎么看待外设&#xff1a; 从总线连接的角度看&#xff0c;外设和Core、DMA通过总线交换数据&#xff0c;正所谓要想富先修路。要注意&#xff0c;这些总线中的每一个都连接到不同的时钟源&#xff0c;这些时钟源决定了连接到该总线的外设操作的最大速度。 从内存分配的角度…

FlinkCDC-MYSQL批量写入

一、运行环境 &#xff08;1&#xff09;Flink&#xff1a;1.17.2 &#xff08;2&#xff09;Scala&#xff1a;2.12.20 &#xff08;3&#xff09;Mysql&#xff1a;5.7.43 ##开启binlog 二、代码示例 思路&#xff1a;通过滚动窗口收集一批数据推给sink消费。binlog日志对…

集合(数组、链表、map)

目录 Collection包结构 和collections区别 List 数组和arrayList 区别 数组下标为什么从0开始&#xff1f; ArrayList 动态数组 LinkedList双向链表增删快 增删快 链表 单链表和双链表区别 Arraylist VS LinkedList 区别 数组和List之间转换 ArrayList 、LinkedList…