参考文章:MCMC(二)马尔科夫链 - 刘建平Pinard - 博客园

写给小白看的马尔科夫链(Markov Chain)最佳入门教程_许进进的博客-CSDN博客_markov链

目录

1.马尔科夫链概述

1.1股票市场模型

2.马尔科夫链模型状态转移矩阵的性质 (本节重点)

2.1代码实例

2.2实现结果

2.3马尔科夫链收敛性质总结


1.马尔科夫链概述

假某一时刻的状态转移的概率只与它本身前一个状态有关,与前前一个、前前前一个状态都无关,用途:这样做可以大大简化模型的复杂度,因此马尔科夫链在时间序列模型中可以得到广泛的应用,比如循环神经网络RNN、隐式马尔科夫模型HMM、MCMC....

精确的数学定义:假设序列状态是,那么在时刻的状态的条件概率仅仅依赖于前一个时刻,即:

既然某一时刻状态转移的概率只依赖于它的前一个状态,那么我们只要求出系统任意两个状态之间的转换概率,这个马尔科夫链的模型就确定下来了。

1.1股票市场模型

这个马尔科夫链是表示股市模型的,共有三种状态:牛市(Bull market)、熊市(Bear market)、横盘(Stagnant market) 。每一个状态都以一定的转换概率转化到下一个状态。

具体求解过程:http://t.csdn.cn/XVM6f

2.马尔科夫链模型状态转移矩阵的性质 (本节重点)

马尔科夫链模型的状态转移矩阵最终收敛得到的稳定概率分布与初始状态概率分布无关。用途:得到了这个稳定概率分布对应的马尔科夫链模型的状态转移矩阵,则我们可以用任意的概率分布样本开始,代入马尔科夫模型的状态转移矩阵,经过一些的序列的转换,最终可以得到符合对应稳定概率分布的样本。

这个性质不光对我们上面的状态转移矩阵有效,对于绝大多数的其他的马尔科夫链模型的状态转移矩阵也有效。同时不光是离散状态,连续状态时也成立。

对于一个确定的状态转移矩阵,它的n次幂 在当n大于一定的值时,也可以发现是确定的概率分布。

2.1代码实例

import numpy as np
matrix =  np.matrix([[0.9,0.075,0.025],[0.15,0.8,0.05],[0.25,0.25,0.5]], dtype=float)
#vector1 = np.matrix([[0.7,0.1,0.2]], dtype = float)for i in range(10):matrix = matrix*matrixprint ("Current round:", i+1)print (matrix)

2.2实现结果

Current round: 1
[[0.8275  0.13375 0.03875]
 [0.2675  0.66375 0.06875]
 [0.3875  0.34375 0.26875]]
Current round: 2
[[0.73555  0.212775 0.051675]
 [0.42555  0.499975 0.074475]
 [0.51675  0.372375 0.110875]]
Current round: 3
[[0.65828326 0.28213131 0.05958543]
 [0.56426262 0.36825403 0.06748335]
 [0.5958543  0.33741675 0.06672895]]
Current round: 4
[[0.62803724 0.30972343 0.06223933]
 [0.61944687 0.3175772  0.06297594]
 [0.6223933  0.3148797  0.062727  ]]
Current round: 5
[[0.62502532 0.31247685 0.06249783]
 [0.6249537  0.31254233 0.06250397]
 [0.62497828 0.31251986 0.06250186]]
Current round: 6
[[0.625  0.3125 0.0625]
 [0.625  0.3125 0.0625]
 [0.625  0.3125 0.0625]]
Current round: 7
[[0.625  0.3125 0.0625]
 [0.625  0.3125 0.0625]
 [0.625  0.3125 0.0625]]
Current round: 8
[[0.625  0.3125 0.0625]
 [0.625  0.3125 0.0625]
 [0.625  0.3125 0.0625]]
Current round: 9
[[0.625  0.3125 0.0625]
 [0.625  0.3125 0.0625]
 [0.625  0.3125 0.0625]]
Current round: 10
[[0.625  0.3125 0.0625]
 [0.625  0.3125 0.0625]
 [0.625  0.3125 0.0625]]

我们可以发现,在 以后, 的值稳定不再变化,而且每一行都为[0.625  0.3125 0.0625],这和我们前面的稳定分布是一致的,这个性质不光是离散状态成立,连续状态时也成立。

2.3马尔科夫链收敛性质总结

如果一个非周期的马尔科夫链有状态转移矩阵 ,并且它的任何两个状态是联通的,那么 与i无关,我们有:

(1)

(2)

(3)

(4)  是方程 的唯一非负解,其中:

我们对上面总结的性质做出解释:

(1)非周期的马尔科夫链:这个主要是指马尔科夫链的状态转化不是循环的,如果是循环的则永远不会收敛。幸运的是,我们遇到的马尔科夫链一般都是非周期性的。

用数学方式表述则是:对于任意某一状态i,d为集合{}的最大公约数,如果d=1,则该状态为非周期的。

(2)任何两个状态是连通的:指的是从任意一个状态可以通过有限步数达到其他任意一个状态,不会出现条件概率一直为0导致无法到达的现象。

(3)马尔科夫链的状态数可以是有限的,也可以是无限的,因此可以用于连续概率分布和离散概率分布。

(4) 通常称为马尔科夫链的平稳分布

MCMC学习笔记-马尔科夫链概述相关推荐

  1. MCMC原理解析(马尔科夫链蒙特卡洛方法)

    马尔科夫链蒙特卡洛方法(Markov Chain Monte Carlo),简称MCMC,MCMC算法的核心思想是我们已知一个概率密度函数,需要从这个概率分布中采样,来分析这个分布的一些统计特性,然而 ...

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

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

  3. MCMC(二)马尔科夫链

    在MCMC(一)蒙特卡罗方法中,我们讲到了如何用蒙特卡罗方法来随机模拟求解一些复杂的连续积分或者离散求和的方法,但是这个方法需要得到对应的概率分布的样本集,而想得到这样的样本集很困难.因此我们需要本篇 ...

  4. 马尔科夫链与MCMC方法

    马尔科夫链概述 基本思想: 过去所有的信息都已经被保存到了现在的状态,基于现在就可以预测未来. Example: 假如每天的天气是一个状态的话,那今天是不是晴天只依赖于昨天的天气,而和前天的天气没有任 ...

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

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

  6. 蒙特卡洛分析_随机模拟:马尔科夫链蒙特卡洛采样MCMC与EM算法「2.3」

    最近学习了机器学习中的马尔科夫链蒙特卡洛(Markov Chain Monte Carlo, 简称MCMC) 相关的知识. 主要内容包括: [1]蒙特卡洛原则,及其应用于采样的必要性(已经发布在头条) ...

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

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

  8. MCMC+马尔科夫链蒙特卡罗

    MCMC+马尔科夫链蒙特卡罗 为了解决什么问题,所以出现了这一种方法? 后来又因为出现了什么新情况,所以产生了对应的变种?

  9. PRML第八章读书笔记——Graphical Models 生成式模型/超先验/层次贝叶斯模型、d-分离/朴素贝叶斯、有向分解/马尔可夫毯、D图I图完美图、马尔科夫链/因子图/和积算法/最大和算法

    (终于读到概率图了,从这一章开始应该算是PRML的精华内容了.过于基础的东西就不写了,主要写自己不会的) 目录 8.1 Bayesian Networks P365 祖先采样法ancestral sa ...

最新文章

  1. python营销骗局_python案例:金融营销活动中欺诈用户行为分析
  2. 利用Spring-Boot解析Excel、用Java分析Excel、告别手动输入用程序读取Excel
  3. spring core源码解读之ASM4用户手册翻译之一asm简介
  4. 基于消息队列 RocketMQ 的大型分布式应用上云最佳实践
  5. 数据结构--堆 Heap
  6. 启动Eclipse时发生An internal error occurred during: Initializing Java Tooling错误,详细提示如下:...
  7. Java多线程学习二十九:AtomicInteger(原子类) 和 synchronized 的异同点?
  8. kubernetes 客户端client-go 使用及常用api
  9. 插入数据值 设置标签属性的值 来自 精通ASP-NET-MVC-5-弗瑞曼
  10. 0507Python基础-set-深浅copy
  11. 分享一下苹果手机绕激活锁的体验
  12. 新西兰梅西大学有计算机专业吗,【新西兰梅西大学计算机专业】 - 教外新西兰留学网...
  13. 使用 Travis-CI 部署 HEXO 博客
  14. javaweb之统计网站访问量小案例
  15. “李记餐厅”微信点餐小程序+后台管理系统
  16. Python获取法定节假日
  17. Python_oldboy_自动化运维之路_线程,进程,协程(十一)
  18. 阿里、美团、网易、华为等二十厂秋招Java面经大合集
  19. Prometheus详解(一)——Prometheus简介与特点
  20. 浅谈人工智能(`AI`)基础知识

热门文章

  1. 【Linux】saltstack的使用详解 超详细
  2. C++ 编写二维码(有源码)
  3. Android线程间通信机制
  4. 服务器的运行寿命一般有多久?服务器怎么选?
  5. Appium-System Bars(系统状态栏)
  6. [渝粤教育] 中国地质大学 操作系统原理(新) 复习题 (2)
  7. h5/web 获取实时视频并预览上传
  8. chrome linux添加图标,IT之家学院:Chromebook修改Linux容器安装源教程详解
  9. 页面添加锚点的三种方式
  10. 一张图带你了解项目管理49个过程(PMBOK第六版-附实例)