MCMC算法深入理解
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算法深入理解相关推荐
- 应用随机过程张波商豪_Markov链的应用一:MCMC算法
本文是张迪同学对马尔链的应用的介绍 应用一:Markov链在MCMC算法中的应用 1. MCMC概念 MCMC即马尔科夫链蒙特卡洛方法(Markov Chain Monte Carlo).该方法将Ma ...
- matlab温度数据怎么滤波_卡尔曼滤波算法思想理解 Kalman filter 第一篇
卡尔曼滤波算法思想理解 Kalman filter 第一篇 最近在初步的理解目标跟踪的领域, 其中一个非常经典的算法卡尔曼滤波Kalman filter是需要有很好的理解才行, 由于已经脱离了学校,懂 ...
- Interview:算法岗位面试—11.15下午上海某航天***公司(国企)技术面之工业机器视觉认知、计算机视觉算法的理解、目标检测相关项目案例
ML岗位面试:11.15下午上海某航天***公司(国企)技术面之工业机器视觉认知.计算机视觉算法的理解.目标检测相关项目案例 Interview:算法岗位面试-11.15下午上海某航天***公司(国企 ...
- React中diff算法的理解
React中diff算法的理解 diff算法用来计算出Virtual DOM中改变的部分,然后针对该部分进行DOM操作,而不用重新渲染整个页面,渲染整个DOM结构的过程中开销是很大的,需要浏览器对DO ...
- Vue中diff算法的理解
Vue中diff算法的理解 diff算法用来计算出Virtual DOM中改变的部分,然后针对该部分进行DOM操作,而不用重新渲染整个页面,渲染整个DOM结构的过程中开销是很大的,需要浏览器对DOM结 ...
- 电子凸轮追剪曲线生成算法 算法,理解后可转成其他品牌PLC或任何一种编程语言
电子凸轮追剪曲线生成算法. 品牌:麦格米特(算法,理解后可转成其他品牌PLC或任何一种编程语言) YID:5850633554519425
- 算法小白理解最大流最小割(Maximum flow Minimum cut)问题
网上流传的关于最大流最小割问题的全都是索然无味 的一些讲课视频,当然如果你英语能力很强,直接看外国的视频也十分好理解,但于我这种理工科渣渣来说,看懂那种专业的讲课视频是不可能的,不存在的,所以把自己对 ...
- openCV中直方图均衡化算法的理解
直方图均衡化就是调整灰度直方图的分布,即将原图中的灰度值映射为一个新的值.映射的结果直观表现是灰度图的分布变得均匀,从0到255都有分布,不像原图那样集中.图像上的表现就是对比度变大,亮的更亮,暗的更 ...
- R语言--MCMC算法介绍以及例子
Markov Chain Monte Carlo (MCMC) 是一种用于随机生成满足给定分布的样本的算法.它通过构建一个马尔可夫链来模拟一个随机过程,从而生成样本. 首先,你需要选择一个初始状态,然 ...
- Levenberg-Marquardt(LM算法)的理解
Levenberg-Marquardt LM算法 的理解 1. convex optimization 1.1 convex set 1.2 convex function 1.3 optimizat ...
最新文章
- OpenMP的环境变量
- 关于WPF中TextBox使用SelectAll无效的问题的解决办法
- 路径 (Path)–nodejs
- 初识shardingsphere
- 用遗传算法进行智能排课,相信老师会很喜欢
- ExtJs UI框架学习五
- PS如何导入3dlut调色预设文件步骤方法
- 利用NXlog采集Windows系统日志
- .NET图表控件TeeChart Pro ActiveX使用教程:轴控制
- 维基解密再爆猛料:CIA利用漏洞入侵全球数十亿个人电子设备
- 一键部署k8s集群(三节点)
- 用java打暴雪星际争霸(2)——运行测试机器人
- Python秒杀脚本丨淘宝或京东平台定时自动秒杀抢购脚本
- 某建筑设计研究院“综合布线管理软件”应用实践
- FFMPEG 将IPCamera的RTSP视频流传送至RED5服务器 小白教程
- 人工智能、核战争与白宫陷落
- 网课Php代码,php - PHP网络课程 - php中文网博客
- UItableView+Mansory自定义Cell小Demo
- 重庆绮佳火锅诚邀合作
- 物联网-业务数据智能管理应用设计
热门文章
- creator小功能----浅谈cc.Director与 资源加载策略
- 九、ISO 27000 术语定义及相关资料
- 扩散模型的matlab编程,Matlab 实现气体高斯扩散模型模拟
- 二级python有必要买书吗_清华大学出版社-图书详情-《二级Python编程指南》
- 实对称矩阵的特征值求法_线性代数之实对称矩阵得相似对角化问题的方法总结...
- 实对称矩阵的特征值求法_矩阵论系列——特征值篇
- AE插件自动创建图层工具LayerGenerators使用教程
- 自定义封装无人值守Windows10镜像
- 一套鼠标键盘操作两台电脑的方法
- pcie协议_如何通过PCIE协议实现FPGA 配置?详情请戳这里!