目录

前言

一、目标案例

1.需求

2.依赖

3.计算

4.Python模拟

二、马尔科夫链

二、马尔科夫性质

1.不可约性(irreducibility)

2.常返性(recurrence)

3.周期性(periodicity)

4.遍历性(ergodicity)

点关注,防走丢,如有纰漏之处,请留言指教,非常感谢

参阅:



前言

博主参与八次数学建模大赛,其实数学建模和大数据分析有很多相似之处,可以说差不多是共通的。经历了这么多次比赛个人总结一些建模必备的数据分析方法是必须要完全掌握。在人类发展的历史上,马尔可夫链是第一个从理论上被提出并加以研究的随机过程模型。在我以前的机器学习模型学习研究中,马尔可夫链算法可算是用途最广泛的算法之一了。现代生活可以说的上是基本都蕴含着马尔科夫链基础算法原理所在,要理解马尔科夫链算法原理并不难,但是衍生思想和优化思想却很难让人考虑到。特别是基于现在大数据时代,海量数据统计下概率匹配是相当恐怖的,使用马尔科夫衍生算法能够渗透到很多方面。本篇文章将详细讲述马尔科夫链基本算法原理和使用案例。


理论比较难以一下明白,但是通过例子就好理解了。这里我们采用倒叙方法先从一个简单的案例入手,再到解释原理:

一、目标案例

我们拿一个场景的地铁拥堵系数来进行分析:

1.需求

我周一到周五都需要坐地铁上班,但是经常会发生地铁拥堵的情况,我把地铁拥堵系数设置为三个可选参数(1,2,3)。1代表地铁很拥堵,人挤人,体验感很差都不想坐地铁了。2代表地铁还行,虽然挤但是还算的过去。3代表通畅,地铁里面都没什么人来坐,随随便便就能找到个座位。那么我前一个小时坐地铁的情况都记录了下来,如何判断我将来一个小时的地铁拥堵情况呢?

面对这种情况我们并没有像传统的机器学习算法可用的特征,能够在强关联特征时序或者前后顺序下预测出后一个标签,那么马尔科夫模型就很适用。

2.依赖

要想开展马尔科夫算法需要两个依赖条件:

第一我们要清楚前一个小时中,我们了解到站一个站台为5分钟,这里我们需要根据上一个站的情况,统计并计算后一个站拥堵系数情况的状态发生概率,由于我们这里有三种拥堵系数状态,故为一个一维矩阵:[0.3,0.4,0.3].该矩阵我们称之为(状态分布矩阵S

第二个站台之间是具有强关联性质的,也就是说路过了上一个站台那么下一个站台发生拥堵的可能性是具有一定的规律性的,有一定的概率可以统计得出。

比如我们这里设置:

当前一个站台拥堵系数为1时,后一个站台拥堵系数为1的概率为0.6,为2的概率为0.2,为3的概率为0.2.

当前一个站台拥堵系数为2时,后一个站台拥堵系数为1的概率为0.5,为2的概率为0.2,为3的概率为0.3

当前一个站台拥堵系数为3时,后一个站台拥堵系数为1的概率为0.2,为2的概率为0.4,为3的概率为0.4

这里我们可以构建一个矩阵:

前一个站台拥堵系数概率\后一个站台拥堵系数概率 1 2 3
1 0.6 0.2 0.2
2 0.5 0.2 0.3
3 0.2 0.4 0.4

而我们构建的这个矩阵就是转移概率矩阵P,它是时间齐次性的,也就是说转移概率矩阵P它是保持不变的,前一站台到后一站台的转移概率矩阵跟后一站台到再后一站台的转移概率矩阵是一样的。

3.计算

有了这个转移概率矩阵P,再加上已知的第一天的状态分布矩阵,就可以计算出N天后的状态分布了。

站台状态分布矩阵 计算公式
S2 S1*P
S3 S2*P
S4 S3*P

Sn

Sn-1*P

以上来看马尔科夫链算法预测出来的过程只取决与现在。当然和历史数据存在间接关系。

4.Python模拟

import numpy as npmatrix = np.matrix([[0.6, 0.2, 0.2],[0.5, 0.2, 0.3],[0.2, 0.4, 0.4]])
vector1 = np.matrix([[0.3, 0.4, 0.3]])for i in range(50):vector1 = vector1 * matrixprint('第{}轮'.format(i+1))print(vector1)

我们会发现最后几站的概率会逐渐的收敛为一个固定的概率矩阵。

第44轮
[[0.46153846 0.25641026 0.28205128]]
第45轮
[[0.46153846 0.25641026 0.28205128]]
第46轮
[[0.46153846 0.25641026 0.28205128]]
第47轮
[[0.46153846 0.25641026 0.28205128]]
第48轮
[[0.46153846 0.25641026 0.28205128]]
第49轮
[[0.46153846 0.25641026 0.28205128]]
第50轮
[[0.46153846 0.25641026 0.28205128]]

此时我们修改初始第一个站台的拥堵系数的概率:

import numpy as npmatrix = np.matrix([[0.6, 0.2, 0.2],[0.5, 0.2, 0.3],[0.2, 0.4, 0.4]])
vector1 = np.matrix([[0.6, 0.2, 0.2]])for i in range(50):vector1 = vector1 * matrixprint('第{}轮'.format(i+1))print(vector1)
第45轮
[[0.46153846 0.25641026 0.28205128]]
第46轮
[[0.46153846 0.25641026 0.28205128]]
第47轮
[[0.46153846 0.25641026 0.28205128]]
第48轮
[[0.46153846 0.25641026 0.28205128]]
第49轮
[[0.46153846 0.25641026 0.28205128]]
第50轮
[[0.46153846 0.25641026 0.28205128]]

由此我们得到一个非常重要的性质:马尔可夫链模型的状态转移矩阵收敛到的稳定概率分布与初始状态概率分布无关

看完上述案例后我们再由理论过一遍理解的更加透彻

二、马尔科夫链

马尔可夫链(Markov Chain, MC)是概率论和数理统计中具有马尔科夫性质(Markov property)且存在于离散的指数集(index set)和状态空间(state space)内的随机过程(stochastic process)。适用于连续指数集的马尔可夫链被称为马尔科夫过程(Markov process),但有时也被视为马尔可夫链的子集,即连续时间马尔科夫链(Continuous-Time MC, CTMC),与离散时间马尔可夫链(Discrete-Time MC, DTMC)相对应,因此马尔可夫链是一个较为宽泛的概念。

马尔可夫链可通过转移矩阵和转移图定义,除马尔可夫性外,马尔可夫链可能具有不可约性、常返性、周期性和遍历性。一个不可约和正常返的马尔可夫链是严格平稳的马尔可夫链,拥有唯一的平稳分布。遍历马尔可夫链(ergodic MC)的极限分布收敛于其平稳分布。

马尔可夫链可被应用于蒙特卡洛方法中,形成马尔可夫链蒙特卡罗(Markov Chain Monte Carlo, MCMC) ,也被用于动力系统、化学反应、排队论、市场行为和信息检索的数学建模。此外作为结构最简单的马尔科夫模型(Markov model),一些机器学习算法,例如隐马尔科夫模型(Hidden Markov Model, HMM)、马尔科夫随机场(Markov Random Field, MRF)和马尔科夫决策过程(Markov decision process, MDP)以马尔可夫链为理论基础。

二、马尔科夫性质

马尔可夫性质是概率论中的一个概念,因为俄国数学家安德雷·马尔可夫得名。当一个随机过程在给定现在状态及所有过去状态情况下,其未来状态的条件概率分布仅依赖于当前状态;换句话说,在给定现在状态时,它与过去状态(即该过程的历史路径)是条件独立的,那么此随机过程即具有马尔可夫性质。具有马尔可夫性质的过程通常称之为马尔科夫过程

马尔可夫链中随机变量的状态随时间步的变化被称为演变(evolution)或转移(transition)。这里介绍描述马尔可夫链结构的两种途径,即转移矩阵和转移图,并定义了马尔可夫链在转移过程中表现出的性质。

马尔可夫链中随机变量间的条件概率可定义为如下形式的(单步)转移概率和n-步转移概率

式中下标表示第n 步的转移。由马尔可夫性质可知,在给定初始概率后,转移概率的连续乘法可以表示马尔科夫链的有限维分布(finite-dimensional distribution)

式中的为样本轨道(sample path),即马尔可夫链每步的取值。对n-步转移概率,由Chapman–Kolmogorov等式可知,其值为所有样本轨道的总和:

上式表明,马尔可夫链直接演变n步等价于其先演变n-k步,再演变k步(k处于该马尔可夫链的状态空间内)。n-步转移概率与初始概率的乘积被称为该状态的绝对概率。

若一个马尔可夫链的状态空间是有限的,则可在单步演变中将所有状态的转移概率按矩阵排列,得到转移矩阵

马尔可夫链的转移矩阵是右随机矩阵(right stochastic matrix),矩阵的第行表示时,

取所有可能状态的概率(离散分布),因此马尔可夫链完全决定转移矩阵,转移矩阵也完全决定马尔可夫链  。由概率分布的性质可得,转移矩阵是一个正定矩阵,且每行元素之和等于1:

按相同的方式也可定义n-步转移矩阵:,由n-步转移概率的性质(Chapman–Kolmogorov等式)可知,n-步转移矩阵是其之前所有转移矩阵的连续矩阵乘法:

这里对马尔可夫链的4个性质:不可约性、常返性、周期性和遍历性进行定义。与马尔可夫性质不同,这些性质不是马尔可夫链必然拥有的性质,而是其在转移过程中对其状态表现出的性质。上述性质都是排他的,即不具有可约性的马尔可夫链必然是不可约的,以此类推。

1.不可约性(irreducibility)

如果一个马尔可夫链的状态空间仅有一个连通类,即状态空间的全体成员,则该马尔可夫链是不可约的,否则马尔可夫链具有可约性(reducibility) 。马尔可夫链的不可约性意味着在其演变过程中,随机变量可以在任意状态间转移。

2.常返性(recurrence)

若马尔可夫链在到达一个状态后,在演变中能反复回到该状态,则该状态是常返状态,或该马尔可夫链具有(局部)常返性,反之则具有瞬变性(transience)的。正式地,对状态空间中的某个状态,马尔可夫链对一给定状态的返回时间(return time)是其所有可能返回时间的下确界(infimum):

,则该状态不存在瞬变性或常返性;若,则该状态的瞬变性和常返性的判断准则如下:

在时间步趋于无穷时,常返状态的返回概率(return probability)的和,即总访问次数的期望也趋于无穷:

此外,若状态具有常返性,则可计算其平均返回时间(mean recurrence time):

若平均返回时间,该状态是“正常返的(positive recurrent)”,否则为“零常返的(null recurrent)”。若一个状态是零常返的,那意味着马尔可夫链两次访问该状态的时间间隔的期望是正无穷。

3.周期性(periodicity)

个正常返的马尔可夫链可能具有周期性,即在其演变中,马尔可夫链能够按大于1的周期常返其状态。正式地,给定具有正常返的状态,其返回周期按如下方式计算:

4.遍历性(ergodicity)

若马尔可夫链的一个状态是正常返的和非周期的,则该状态具有遍历性 。若一个马尔可夫链是不可还原的,且有某个状态是遍历的,则该马尔可夫链的所有状态都是遍历的,被称为遍历链。由上述定义,遍历性有如下推论:

  1. 推论:若状态A是吸收态,且A是状态B的可达状态,则A是遍历的,B不是遍历的。

  2. 推论:若多个状态的马尔可夫链包含吸收态,则该马尔可夫链不是遍历链。

  3. 推论:若多个状态的马尔可夫链形成有向无环图,或单个闭环,则该马尔可夫链不是遍历链。

遍历链是非周期的平稳马尔可夫链,有长时间尺度下的稳态行为,因此是被广泛研究和应用的马尔可夫链。


点关注,防走丢,如有纰漏之处,请留言指教,非常感谢

以上就是本期全部内容。我是fanstuck ,有问题大家随时留言讨论 ,我们下期见。

参阅:

马尔科夫链

写给小白看的马尔科夫链(Markov Chain)最佳入门教程

马尔科夫链(Markov Chain, MC)算法详解及Python实现相关推荐

  1. 马尔可夫 java_马尔可夫过程(以马尔科夫链Markov为例)

    马尔可夫过程(以马尔科夫链Markov为例) 马尔可夫过程 马尔可夫过程的大概意思就是未来只与现在有关,与过去无关. 简单理解就是渣男只在乎下一刻会不会爱你只取决于这一时刻对你的新鲜感,而与你之前对这 ...

  2. 【有限马尔科夫链状态分解+Kosaraju 算法】基于Kosaraju 算法和可达矩阵的有限马尔科夫链状态分解

    有限马尔科夫链状态分解+Kosaraju 算法 1 实验内容 2 理论基础 3 题目分析 4 按常返性和互通性对状态空间进行分解算法流程 4.1 强连通性和强连通分量 4.2 基于有向图 Kosara ...

  3. 马尔科夫链Markov以及空间Markov Matlab代码

    翻阅众多帖子没有一个帖子给出来,正确的清晰地马尔科夫链代码,实属悲哀.  本人在发表上一篇论文中用到了 普通马尔科夫链,顺便有偿分享一下代码,属实辛苦工作.  现代码可以计算四区间(论文中最常用的 低 ...

  4. 【强化学习】MOVE37-Introduction(导论)/马尔科夫链/马尔科夫决策过程

    写在前面的话:从今日起,我会边跟着硅谷大牛Siraj的MOVE 37系列课程学习Reinforcement Learning(强化学习算法),边更新这个系列.课程包含视频和文字,课堂笔记会按视频为单位 ...

  5. 蒙特卡洛法(三)马尔科夫链蒙特卡洛法

    马尔科夫链蒙特卡洛法适合于随机变量是多元的.密度函数是非标准形式的随机变量各分量不独立的情况.如何构建具体的马尔科夫链是这个方法的关键,离散变量的时候,需要定义转移矩阵,构建可逆马尔科夫链,保证遍历定 ...

  6. 马尔科夫链(Markov Chain)

    1,马尔可夫性 马尔可夫性(Markov Property)是指系统的下一个状态仅与当前状态有关,而与以前的状态无关 (即无记忆性(memorylessness),系统不记得当前状态以前的状态,仅仅基 ...

  7. 蒙特卡罗 马尔科夫链 与Gibbs采样

    这几个概念看了挺多遍都还是含混不清,最近看了几篇博客,才算大致理解了一点点皮毛,所以来总结一下. MCMC概述 从名字我们可以看出,MCMC由两个MC组成,即蒙特卡罗方法(Monte Carlo Si ...

  8. MCMC(一):蒙特卡罗方法和马尔科夫链

    作为一种随机采样方法,马尔科夫链蒙特卡罗(Markov Chain Monte Carlo,以下简称MCMC)在机器学习,深度学习以及自然语言处理等领域都有广泛的应用,是很多复杂算法求解的基础.比如分 ...

  9. 从马尔科夫链到吉布斯采样与PageRank

    马尔科夫链表示state的链式关系,下一个state只跟上一个state有关. 吉布斯采样通过采样条件概率分布得到的样本点,近似估计概率分布P(z)P(z).PageRank通过节点间的连接,估计节点 ...

  10. 通过Python实现马尔科夫链蒙特卡罗方法的入门级应用

    通过把马尔科夫链蒙特卡罗(MCMC)应用于一个具体问题,本文介绍了 Python 中 MCMC 的入门级应用. GitHub 地址:https://github.com/WillKoehrsen/ai ...

最新文章

  1. UGUI 中Dropdown控件的使用经验
  2. boost::safe_numerics::checked_result相关的测试程序
  3. mongodb shell基础命令
  4. int、bigint、mediumint、smallint、tinyint的比较
  5. 掌握JVM 运行时数据区,其实不是很难,加薪也是要技巧可言的!!!
  6. 解决: IDEA 代码 commit 后,Local Changes 中代码依旧在,提交失败,报错:is out of date
  7. 北京高院宣判:微信商标案终审驳回上诉 维持原判
  8. ospf避免环路_13、OSPF的选路规则及路由控制
  9. 多线程模拟渡河 C语言 Linux
  10. 怎么用小学生计算机玩游戏,小学生不应该玩电脑游戏作文
  11. 46. 考虑使用函数对象而不是函数作为STL算法的参数
  12. 科技爱好者周刊:第 91 期
  13. hp 官方没有针对 mac 的显示器驱动
  14. 【总目录】机器学习原理剖析、开源实战项目、全套学习指南(50篇合集)
  15. 暴力破解Windows密码(二、三):使用getpass内存提取windows用户密码、使用quarkpwdump导出windows用户密码hash值
  16. python全栈开发包括那些_什么是全栈工程师?有哪些知识?
  17. vb.net 简单登录界面(三层架构思想)
  18. 洛谷P5071 [YNOI2015]此时此刻的光辉 莫队+玄学优化+卡常QWQ
  19. Android Studio 代理问题总结(Gradle代理,模拟器代理)
  20. 一、如何完全卸载Anaconda(如何下载Anaconda-Clean package)

热门文章

  1. 软著申请流程与方法详解
  2. 冰点还原精灵如何卸载
  3. Android App开发常用尺寸规范
  4. 使用plsql登陆oracle数据库,使用PLSQL 创建Oracle数据库用户
  5. 如何用matlab建立风力机模型,风力机的Matlab模型及其应用
  6. 离散时间傅里叶变换Matlab实现
  7. onlyoffice+vue实现在线预览在线编辑
  8. 电工知识:常用电子元件名称及其对应图片实用大全
  9. 目标检测论文综述(一)深度卷积神经网络
  10. 复化科特斯公式matlab_基于牛顿—科特斯积分的误差分析