MCMC(Markov Chain Monte Carlo),即马尔科夫链蒙特卡洛方法,是以马尔科夫平稳状态作为理论基础,蒙特卡洛方法作为手段的概率序列生成技术。

MCMC理论基础

如果转移矩阵为P的马尔科夫链平稳状态和我们研究的概率质量函数(概率密度函数)分布一致,那么我么从任意初始值开始,经过一定次数的概率转以后,后续的转移值组成的序列必然服从马尔科夫平稳状态分布,也就是服从我们研究的概率分布,这样就生成了我们研究的概率分布的模拟数据序列。

对于任意初始值X0,经过n次概率转移后,生成值符合平稳状态分布,并且后续概率转移始终符合平稳状态分布,所以我们可以认为从第n次开始的转移值序列符合平稳状态分布。数学表达如下

1、          初始值为X0,X0通过转移矩阵P生成马氏链序列。

2、          马氏链经过n次转移后达到平稳状态。

3、          则从第n次开始的转移序列符合平稳状态分布。

我们用城市化进程中人口转移模型来阐述一下这个思想的物理意义。我们假设第一代人为农村人。农村人下一代为农村人,第3代为城市人,城市人接下来9代为城市人,第10代为农村人(我们模拟农村人转化为城市人概率为0.5,城市人转化为农村人概率为0.1)。如下表,按照这种规律生成的随机序列农村人城市人比例为1:5,与之前计算的平稳分布17:83基本相等。实际上该模型下的马氏链平稳条件为:0.5 * 农村人 = 0.1 * 城市人,可以推测出农村人 : 城市人 =  1 : 5,与我们的模拟是一致的。

我们已经知道,使马尔科夫链的平稳状态等同于我们研究的概率分布,就可以构造出符合该概率分布的随机序列。现在的问题是如何构造出这样的马尔科夫链,使得其稳定分布等于我们研究的概率分布。

细致平稳条件

如下更强的马尔科夫链稳定状态定理可以解决这个问题

定义显而易见,从任意状态i转移到状态j的速率等于从状态j转移到状态i的速率,则状态转移稳定。城市化进程的例子充分说明了这一点。定理中π分布就是我们研究的概率分布,我们构造出P,则构造出了稳定状态满足π分布马尔科夫链。

算法实现

我们随机初始化一个转移矩阵Q(比如均匀分布),q(i, j)表示从状态i转移到状态j的概率。一般情况下Q显然不满足细致平稳条件,即

p(i)q(i, j) != p(j)q(j, i)

我们构造α(i, j)与α(j, i),使等式成立,即

其中

α(i, j) = p(j)q(j, i) α(j, i) = p(i)q(i, j)

这样,我们通Q与α,构造了一个符合细致平稳条件的Q’。

Q一般来说是我们熟悉的概率分布,计算机易于模拟,但是Q’怎么模拟呢?在构造Q’的过程中,我们引入的α(i, j)称作接受率,我们生成一个符合Q分布的状态后,再以α(i, j)的概率来接受状态转移。(实际上q(j, i)α(i, j)就是转移矩阵Q’中状态i转移到j的概率,我们以α(i, j)接受状态转移就是在进行乘以转移矩阵Q’运算)

MCMC算法如下

上述算法还有一个小缺陷,接受率α(i, j)可能较小,导致状态转移概率太小,收敛较慢。实际上,对于细致平稳条件,等式两边同时乘以一个倍数,也是成立的。于是我们把细致平稳条件改造为

p(i)q(i, j) α(i, j)/ α(j, i) = p(j)q(j, i)

则可以用如下接受率进行状态转移

改进后的MCMC算法如下

参考:

https://www.jianshu.com/p/28d32aa7cc45

《LDA数学八卦》

转载于:https://www.cnblogs.com/coshaho/p/9743500.html

MCMC算法深入理解相关推荐

  1. 应用随机过程张波商豪_Markov链的应用一:MCMC算法

    本文是张迪同学对马尔链的应用的介绍 应用一:Markov链在MCMC算法中的应用 1. MCMC概念 MCMC即马尔科夫链蒙特卡洛方法(Markov Chain Monte Carlo).该方法将Ma ...

  2. matlab温度数据怎么滤波_卡尔曼滤波算法思想理解 Kalman filter 第一篇

    卡尔曼滤波算法思想理解 Kalman filter 第一篇 最近在初步的理解目标跟踪的领域, 其中一个非常经典的算法卡尔曼滤波Kalman filter是需要有很好的理解才行, 由于已经脱离了学校,懂 ...

  3. Interview:算法岗位面试—11.15下午上海某航天***公司(国企)技术面之工业机器视觉认知、计算机视觉算法的理解、目标检测相关项目案例

    ML岗位面试:11.15下午上海某航天***公司(国企)技术面之工业机器视觉认知.计算机视觉算法的理解.目标检测相关项目案例 Interview:算法岗位面试-11.15下午上海某航天***公司(国企 ...

  4. React中diff算法的理解

    React中diff算法的理解 diff算法用来计算出Virtual DOM中改变的部分,然后针对该部分进行DOM操作,而不用重新渲染整个页面,渲染整个DOM结构的过程中开销是很大的,需要浏览器对DO ...

  5. Vue中diff算法的理解

    Vue中diff算法的理解 diff算法用来计算出Virtual DOM中改变的部分,然后针对该部分进行DOM操作,而不用重新渲染整个页面,渲染整个DOM结构的过程中开销是很大的,需要浏览器对DOM结 ...

  6. 电子凸轮追剪曲线生成算法 算法,理解后可转成其他品牌PLC或任何一种编程语言

    电子凸轮追剪曲线生成算法. 品牌:麦格米特(算法,理解后可转成其他品牌PLC或任何一种编程语言) YID:5850633554519425

  7. 算法小白理解最大流最小割(Maximum flow Minimum cut)问题

    网上流传的关于最大流最小割问题的全都是索然无味 的一些讲课视频,当然如果你英语能力很强,直接看外国的视频也十分好理解,但于我这种理工科渣渣来说,看懂那种专业的讲课视频是不可能的,不存在的,所以把自己对 ...

  8. openCV中直方图均衡化算法的理解

    直方图均衡化就是调整灰度直方图的分布,即将原图中的灰度值映射为一个新的值.映射的结果直观表现是灰度图的分布变得均匀,从0到255都有分布,不像原图那样集中.图像上的表现就是对比度变大,亮的更亮,暗的更 ...

  9. R语言--MCMC算法介绍以及例子

    Markov Chain Monte Carlo (MCMC) 是一种用于随机生成满足给定分布的样本的算法.它通过构建一个马尔可夫链来模拟一个随机过程,从而生成样本. 首先,你需要选择一个初始状态,然 ...

  10. Levenberg-Marquardt(LM算法)的理解

    Levenberg-Marquardt LM算法 的理解 1. convex optimization 1.1 convex set 1.2 convex function 1.3 optimizat ...

最新文章

  1. OpenMP的环境变量
  2. 关于WPF中TextBox使用SelectAll无效的问题的解决办法
  3. 路径 (Path)–nodejs
  4. 初识shardingsphere
  5. 用遗传算法进行智能排课,相信老师会很喜欢
  6. ExtJs UI框架学习五
  7. PS如何导入3dlut调色预设文件步骤方法
  8. 利用NXlog采集Windows系统日志
  9. .NET图表控件TeeChart Pro ActiveX使用教程:轴控制
  10. 维基解密再爆猛料:CIA利用漏洞入侵全球数十亿个人电子设备
  11. 一键部署k8s集群(三节点)
  12. 用java打暴雪星际争霸(2)——运行测试机器人
  13. Python秒杀脚本丨淘宝或京东平台定时自动秒杀抢购脚本
  14. 某建筑设计研究院“综合布线管理软件”应用实践
  15. FFMPEG 将IPCamera的RTSP视频流传送至RED5服务器 小白教程
  16. 人工智能、核战争与白宫陷落
  17. 网课Php代码,php - PHP网络课程 - php中文网博客
  18. UItableView+Mansory自定义Cell小Demo
  19. 重庆绮佳火锅诚邀合作
  20. 物联网-业务数据智能管理应用设计

热门文章

  1. creator小功能----浅谈cc.Director与 资源加载策略
  2. 九、ISO 27000 术语定义及相关资料
  3. 扩散模型的matlab编程,Matlab 实现气体高斯扩散模型模拟
  4. 二级python有必要买书吗_清华大学出版社-图书详情-《二级Python编程指南》
  5. 实对称矩阵的特征值求法_线性代数之实对称矩阵得相似对角化问题的方法总结...
  6. 实对称矩阵的特征值求法_矩阵论系列——特征值篇
  7. AE插件自动创建图层工具LayerGenerators使用教程
  8. 自定义封装无人值守Windows10镜像
  9. 一套鼠标键盘操作两台电脑的方法
  10. pcie协议_如何通过PCIE协议实现FPGA 配置?详情请戳这里!