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数学八卦》

MCMC算法深入理解的更多相关文章

  1. MCMC算法解析

    MCMC算法的核心思想是我们已知一个概率密度函数,需要从这个概率分布中采样,来分析这个分布的一些统计特性,然而这个这个函数非常之复杂,怎么去采样?这时,就可以借助MCMC的思想. 它与变分自编码不同在 ...

  2. IRT模型的参数估计方法(EM算法和MCMC算法)

    1.IRT模型概述 IRT(item response theory 项目反映理论)模型.IRT模型用来描述被试者能力和项目特性之间的关系.在现实生活中,由于被试者的能力不能通过可观测的数据进行描述, ...

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

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

  4. 机器学习之MCMC算法

    1.MCMC概述 从名字我们可以看出,MCMC由两个MC组成,即蒙特卡罗方法(Monte Carlo Simulation,简称MC)和马尔科夫链(Markov Chain ,也简称MC).之前已经介 ...

  5. SDUT OJ 数据结构实验之串一:KMP简单应用 && 浅谈对看毛片算法的理解

    数据结构实验之串一:KMP简单应用 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descr ...

  6. POJ1523(割点所确定的连用分量数目,tarjan算法原理理解)

    SPF Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7406   Accepted: 3363 Description C ...

  7. 【转】浅谈对主成分分析(PCA)算法的理解

    以前对PCA算法有过一段时间的研究,但没整理成文章,最近项目又打算用到PCA算法,故趁热打铁整理下PCA算法的知识.本文观点旨在抛砖引玉,不是权威,更不能尽信,只是本人的一点体会. 主成分分析(PCA ...

  8. Vue中diff算法的理解

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

  9. 关于KMP算法中,获取next数组算法的理解

    参考:KMP入门级别算法详解--终于解决了(next数组详解) https://blog.csdn.net/lee18254290736/article/details/77278769 在这里讨论的 ...

随机推荐

  1. 六、SpringBoot与数据访问

    六.SpringBoot与数据访问 1.JDBC spring: datasource: username: root password: 123456 url: jdbc:mysql://192.1 ...

  2. MongoDB pymongo模块 删除数据

    使用user集合,删除user集合的数据 import pymongo mongo_client = pymongo.MongoClient( host='192.168.0.112', port=2 ...

  3. OC通讯录选择封装

    ContactsService.h代码 #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> //block返回选 ...

  4. 使用shell脚本监控用户登陆服务器并发送提示信息给微信

    1.需要在/etc/ssh/目录下面创建一个名为sshrc的文件,执行权限可给可不给,那么在有人通过ssh远程登录这台服务器的时候,这段脚本就会被执行 #!/bin/bash ###V1---### ...

  5. 20170915 linux系统管理培训

    进程管理 程序:通常为二进制程序放在存储媒介中(如光盘.硬盘.软盘.磁带等),以物理文件的形式存在: 进程:正在运行当中的程序,程序被触发后,执行者的权限与属性.程序的程序代码与所有数据等都会被加载到 ...

  6. Python 全栈开发八 文件处理

    一.基本流程 打开文件得到文件句柄 将文件句柄赋值给一个变量 通过文件句柄对文件进行操作 关闭文件 二.基本操作 1.文件句柄 f = open("a.txt",encoding= ...

  7. 最短路径-并查集+Floyd[转载]

    题目描述 N个城市,标号从0到N-1,M条道路,第K条道路(K从0开始)的长度为2^K,求编号为0的城市到其他城市的最短距离 输入描述: 第一行两个正整数N(2<=N<=100)M(M&l ...

  8. Pandas 常见的基本方法

    说明:文章所有内容均截选自实验楼教程[Pandas 使用教程],想要查看教程完整内容,点击教程即可~ 前言: Pandas 是非常著名的开源数据处理工具,我们可以通过它对数据集进行快速读取.转换.过滤 ...

  9. jenkins 新增用户和修改用户名密码

    在某些条件下,jenkins是不允许注册用户的,这是,你可以采用如下的方式来新增用户,对于老的用户,忘记密码了,使用如下方式来重置密码. 1.系统管理-->管理用户 ----> 新建用户 ...

  10. CentOS6.5安装Scrapy

    1.安装命令超级简单: [root@mycentos ~]# pip install Scrapy 建立软链接: [root@mycentos ~]# ln -s /usr/local/python3 ...