【机器学习】马尔可夫链与隐马尔可夫模型(HMM)

news2024/10/7 14:28:57

1.马尔可夫链(Markov Chain)

        马尔可夫链(Markov chain),又称离散时间马尔可夫链(discrete-time Markov chain),因俄国数学家安德烈·马尔可夫(A.A.Markov)得名。描述的是状态空间中经过从一个状态到另一个状态的转换的随机过程。该过程要求具备“无记忆”的性质:下一状态的概率分布只能由当前状态决定,在时间序列中它前面的事件均与之无关。这种特定类型的“无记忆性”称作马尔可夫性质。马尔科夫链作为实际过程的统计模型具有许多应用。

        在马尔可夫链的每一步,系统根据概率分布,可以从一个状态变到另一个状态,也可以保持当前状态。状态的改变叫做转移,与不同的状态改变相关的概率叫做转移概率。随机漫步就是马尔可夫链的例子。随机漫步中每一步的状态是在图形中的点,每一步可以移动到任何一个相邻的点,在这里移动到每一个点的概率都是相同的(无论之前漫步路径是如何的)

        举例说明1:

                一只被切除了大脑的白鼠被随机丢进如下洞穴, 小白鼠在洞穴间随机蹿动。

         窜动的路线就构成一个马尔科夫链。因为这只白鼠已没有了记忆,瞬间产生的念头决定了它从一个洞穴蹿到另一个洞穴;当其所在位置确定时,它下一步蹿往何处与它以往经过的路径无关。

         这种在已知“现在”的条件下,“未来”与“过去彼此独立的特性就被称为马尔科夫性,具有这种性质的随机过程就叫做马尔科夫过程,其最原始的模型就是马尔科夫链。

  举例说明2:

        设定一个人有三种状态分布,分别是吃、睡、玩。假设他每个状态的转移都是有概率的。

        转移概率矩阵P,是保持不变的,就是说第一天到第二天的转移概率矩阵跟第二天到第三天的转移概率矩阵是一样的。有了这个矩阵,再加上已知的第一天的状态分布,就可以计算出第N天的状态分布了。

        S1 是4月1号中午12点的的状态分布矩阵 [0.6, 0.3, 0.1],里面的数字分别代表吃的概率,玩的概率,睡的概率。

        4月2号的状态分布矩阵 S2 = S1 * P (俩矩阵相乘)。

        4月3号的状态分布矩阵 S3 = S2 * P (看见没,跟S1无关,只跟S2有关)。

        4月4号的状态分布矩阵 S4 = S3 * P (看见没,跟S1,S2无关,只跟S3有关)。

        4月n号的状态分布矩阵 Sn = Sn-1 * P (看见没,只跟它前面一个状态Sn-1有关)。

4月2号的状态分布矩阵计算过程:

2.隐马尔科夫模型(Hidden Markov Model,HMM)

        隐马尔科夫模型(Hidden Markov Model,HMM)是结构最简单的动态贝叶斯网络(dynamic bayesian network),也是一种有向图模型隐马尔科夫模型相比马尔科夫链多了一个观测链 O,即马尔科夫链中每到一个状态,都会有一个观测输出。隐马尔科夫模型里面的“隐”字就是说有一种隐含状态,我们不能直接观测得到,而是根据另一种与之有关的可以直接观测到的可见状态去推算隐含状态最有可能的结果。

        假设观察者距离洞穴很远, 看不见老鼠窜动的轨迹, 但是每个洞穴中都装有不同颜色的灯, 当老鼠进入到该洞穴时会触发开关将灯点亮, 观察者可以看清被点亮的灯的颜色。

 假设老鼠窜动的轨迹如下

 那么观察者看到的灯亮的顺序则为

 一个隐马尔可夫模型则可以如下表示

 小白鼠在洞穴(状态)之间的转移存在转移概率, 可由矩阵表示:

        这个矩阵称为状态转移概率分布矩阵, 如小白鼠从房间F窜到房间C的概率为0.33

        假如实验中开关发生故障, 每次进入洞穴后点亮的灯的颜色不再确定, 而是每种颜色的灯亮存在概率, 如下矩阵:

        这个矩阵称为观测状态概率矩阵, 如小白鼠进到F洞穴, 红灯亮的概率为0.15, 绿灯亮的概率为0.7, 蓝灯亮的概率为0.15。

        小白鼠最初被随机丢进每个洞穴的初始概率为:

        隐马尔科夫模型由初始状态概率向量\pi、状态转移概率矩阵A和观测概率矩阵B决定。\piA决定状态序列,B决定观测序列。因此,隐马尔科夫模型λ可以由三元符号表示,即:\lambda =(\pi,A,B)A,B,\pi称为隐马尔科夫模型的三要素。

        隐马尔可夫模型中存在两个很重要的假设:

        (1)次马尔科夫链假设。即任意时刻的隐藏状态只依赖于它前一个隐藏状态。

        (2)观测独立性假设。即任意时刻的观察状态只仅仅依赖于当前时刻的隐藏状态。

        隐马尔可夫模型属于有向图模型, 需要计算的概率是“观测序列(输入)和状态序列(输出)的联合概率”,即P(状态序列, 观测序列), 然后再根据贝叶斯公式求解出P(状态序列|观测序列), 构建它们的联合概率分布P(Y,X)的模型属于生成式模型

Reference:
        1.https://www.jianshu.com/p/667f5bb15367

        2.马尔可夫链 (Markov Chain)是什么鬼 - 知乎

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

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

相关文章

Win11系统user profile service服务登录失败解决方法

Win11系统user profile service服务登录失败解决方法分享。有用户在使用电脑的时候遇到了一些问题,系统的user profile service服务无法登录了。出现这个问题可能是系统文件损坏,或者中了病毒。接下来我们一起来看看如何解决这个问题的操作方法分享吧。 …

【unity细节】基于unity子对象(如相机)为什么无法进行z轴的拖拽移动和z轴自动归位的问题

👨‍💻个人主页:元宇宙-秩沅 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 秩沅 原创 收录于专栏:unity细节和bug ⭐基于unity子对象为什么无法进行z轴的拖拽移动和z轴自动归位⭐ 文章目录⭐基于u…

学习系统编程No.5【虚拟地址空间】

引言: 北京时间:2023/2/22,离补考期末考试还有5天,不慌,刚午觉睡醒,闹钟2点20,拖到2点50,是近以来,唯一一次有一种睡不醒的感觉,但是现在却没有精神,因为听了…

【Spring Cloud Alibaba】007-Nacos 配置*

【Spring Cloud Alibaba】007-Nacos 配置* 文章目录【Spring Cloud Alibaba】007-Nacos 配置*一、概述1、概述2、对比 spring cloud config二、基本使用1、在管理界面新建配置2、启动权限3、 搭建 nacos-config 服务第一步:引入依赖第二步:修改 yaml 配置…

交叉编译 MQTT/Mosquitto

交叉编译 MQTT/Mosquitto 概述 Eclipse Mosquitto 是一个开源(EPL/EDL许可)消息代理,它实现了 MQTT 协议版本 5.0、3.1.1 和 3.1。Mosquitto 重量轻,适用于从低功耗单板计算机到全服务器的所有设备。 MQTT 协议提供了一种使用发…

【Linux】-- 开发工具(vim、gcc、g++、make/Makefile)

目录 Linux编辑器-vim使用 vim的基本概念 vim的简单配置 vim的基本操作 vim进阶命令集 插入模式 从插入模式切换为命令模式 移动光标 删除文字 复制 替换 撤销上一次操作 更改 跳至指定的行 vim底行模式命令集 列出行号 跳到文件中的某一行 查找字符 保存文…

黑马程序员 Java 项目《瑞吉外卖》

教程链接:https://www.bilibili.com/video/BV13a411q753 Gitee 仓库:https://gitee.com/weixinyang1980/reggie_take_out 运行视频: 瑞吉外卖后台运行视频 瑞吉外卖用户端运行视频 目录开发环境搭建数据库环境搭建Maven 项目搭建后台登录功能…

通过连接另一个数组的子数组得到一个数组

给你一个长度为 n 的二维整数数组 groups ,同时给你一个整数数组 nums 。 你是否可以从 nums 中选出 n 个 不相交 的子数组,使得第 i 个子数组与 groups[i] (下标从 0 开始)完全相同,且如果 i > 0 ,那么…

Python四大主题之一【 Web】 编程框架

目前Python的网络编程框架已经多达几十个,逐个学习它们显然不现实。但这些框架在系统架构和运行环境中有很多共通之处,本文带领读者学习基于Python网络框架开发的常用知识,及目前的4种主流Python网络框架:Django、Tornado、Flask、Twisted。 …

论文复现:风电、光伏与抽水蓄能电站互补调度运行(MATLAB-Yalmip全代码)

论文复现:风电、光伏与抽水蓄能电站互补调度运行(MATLAB-Yalmip全代码) 针对风电、光伏与抽水蓄能站互补运行的问题,已有大量通过启发式算法寻优的案例,但工程上更注重实用性和普适性。Yalmip工具箱则是一种基于MATLAB平台的优化软件工具箱,被广泛应用于工程界优化问题和…

JVM知识最强总结

类加载运行全过程1.java.exe调用底层jvm.dll创建java虚拟机,2.创建引导类加载器实例,3.完成实例的创建后需要一个启动器,这个是通过sun.misc.launcher类实现,通过该类的getLaunch()方法启动,4.然后调用该类的getClassL…

梳理数字资产,亚马逊云科技助力致盛咨询带来药物研发新福音

作为医疗保健领域的咨询公司,ZS需要保证服务可靠性、敏捷性和安全性的同时,获得经济效益。亚马逊云科技丰富的云服务产品简化了ZS基础架构的搭建,为ZS节省了大量的人力与资金成本。同时,缩短了ZS扩展基础设施的周转时间&#xff0…

一篇文章读懂Android Framework

本文旨在将Framework的框架描绘出来,希望抛砖引玉,对于读者有一定的帮助。前言写在前面:1、有没有必要学习linux内核?我认为是很有必要的。学习linux内核有助于我们加深对一些概念的理解,比如“进程”、“线程”。推荐…

JVM18运行时参数

4. JVM 运行时参数 4.1. JVM 参数选项 官网地址:https://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html 4.1.1. 类型一:标准参数选项 > java -help 用法: java [-options] class [args...](执行类)或 java [-options] -jar …

图解LeetCode——剑指 Offer 47. 礼物的最大价值

一、题目 在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值&…

mongoTemplate Aggregation 多表联查 排序失效问题解决

目录说明说明 接着上一个文章的例子来说:mongoTemplate支持多表联查 排序 条件筛选 分页 去重分组 在按照上一个demo的代码执行后,可能会发生排序失效的问题,为什么说可能呢?每个人负责业务不同,不可能是最简单的dem…

树莓派CM4基础设置

安装系统1.1 软件和硬件准备硬件:CM4(4GB DDR32GB EMMC 板载WIFI和蓝牙)CM4-to-Pi4-Adapter软件:Raspberry Pi或者 Win32DiskImagerRaspberry Pi下载链接:点击直接下载Win32DiskImager下载链接:链接&#x…

el-table大数据量渲染卡顿问题

1、场景描述 在项目开发中,遇到在表格中一次性加载完的需求,且加载数量不少,有几百几千条,并且每条都可能有自己的下拉框,输入框来做编辑功能,此时普通的el-table肯定会导致浏览器卡死,那么怎么…

【Python小程序】怀旧经典 | 特色玩法,代码版本的钢琴小游戏了解下?初学钢琴,能提高双手协调与反应能力哦~(源码分享)

导语 哈喽,我是木木子鸭! 最近给大家悄悄的更新了一些关于爬虫的内容呢~有想学习爬虫的小可爱可以学习一整子啦。 今天来给大家写一款界面化的(Tkinter)电子钢琴小程序。 ​ 所有文章完整的素材源码都在👇&#x1…

Qt程序使用路径方式和注意事项

Qt程序使用路径方式和注意事项 更多精彩内容👉个人内容分类汇总 👈👉Qt开发经验 👈文章目录Qt程序使用路径方式和注意事项[toc]前言一、Windows下Qt程序使用路径1.准备工作2.测试结果二、Linux下Qt程序使用路径1.准备工作2.测试结…