马尔可夫蒙特卡洛方法(MCMC)到底是什么呀?

  统计/机器学习 概率分布 抽样方法 贝叶斯    浏览次数:9076        分享
8

马尔可夫蒙特卡洛方法(MCMC)到底是什么呀?感觉和贝叶斯网络(Bayes network)以及隐式马尔可夫(HMM) 有关系?

 

Sophia   2017-03-01 09:59



   1个回答 
7

这个问题挂这么久了,一直没有人回答,那我就试试吧。

先说说MCMC是什么。第一个MC是Markov Chain,第二个MC是Monte Carlo。MCMC就是两者的结合,顾名思义,就是带有马尔可夫链性质的蒙特卡洛模拟方法。


-----------什么是马尔可夫链-----------

假设随机变量$X_t$表示$t$时刻发生的事件。一个随机过程$X_0,X_1,X_2,\cdots,X_T$,如果满足

$$P(X_{n+1}|X_n)=P(X_{n+1}|X_n, X_{n-1}, X_{n-2}, \cdots, X_0),$$

就称这个过程是一个马尔可夫分链。换句话说,在一个马尔可夫链当中,下个时刻的事件状态只和当前状态有关。



-----------什么是蒙特卡洛模拟-----------

蒙特卡洛模拟是基于大数定律的随机重复抽样方法。比如说,为了估计抛某个有偏差硬币落在正面的概率,我们可以重复抛$m$次,得到$k$次正面,那么$p=\frac{k}{m}$。比如说,为了估计圆周率,我们可以在正方形中画一个内切圆,然后对这个正方形随机重复投点$m$次,如果有$k$次落在圆内,那么可以估计$\pi$为$\frac{4k}{m}$。



-----------到底什么是MCMC-----------

举个简单的例子:假设如果今天晴天,明天下雨的概率是0.1;如果今天晴天,明天晴天的概率是0.9;如果今天下雨,明天下雨(rainy)的概率是0.5;如果今天下雨,明天晴天的概率也是0.5。问题来了,如果我们不知道今天的天气如何,怎么通过随机抽样来模拟未来10天的天气呢?


步骤1: 随机选定初始点$X_0$,比如可选择为晴天。

步骤2: 根据上述的概率,随机产生一个天气$X_1$(0.1概率为雨天,0.9概率为晴天)

步骤3: 根据上述的概率和$X_2$,随机生成$X_3$。

步骤4: 如此反复100次(越多越好)。

步骤5: 取出$X_{101},X_{102},\cdots, X_{110}$即可。


这样得到的10个天气就是随机抽取出来的。为什么步骤4中次数越多越好呢?因为$i$越小,$X_i$越容易被初始值$X_0$影响。当$i$变得很大时,就趋于稳定(依照转移矩阵稳定态概率的的随机)。



-----------在贝叶斯网络和隐式马尔可夫模型中的应用-----------

MCMC经常被用来估计复杂的贝叶斯网络中的后验概率分布。

类似地,在隐式马尔可夫模型中,需要计算似然估计,而求这些似然估计,需要对很多隐藏状态求和,计算量很大,所以可以通过MCMC来模拟求解。


SofaSofa数据科学社区DS面试题库 DS面经

sasa   2017-05-17 08:04



  相关讨论

深度学习和随机过程结合的科研有什么方向

flat priors是什么意思?

贝叶斯里的先验分布,后验分布是什么意思?

高斯分布的后验分布是什么?

关于两个正态总体抽样分布的独立性问题

怎么按照设定概率产生不重复的随机排序?

用贝叶斯怎么输出模型的预测准确率?

朴素贝叶斯中的朴素是什么意思?

贝叶斯网络和朴素贝叶斯有什么区别?

parametric bootstrap和nonparametric bootstrap的区别是什么?

  随便看看

医学统计里的c-index或者c-statistic是什么意思?

ARIMA模型中的三个参数(p, d, q)都是什么意思?

PCA降维之前为什么要先标准化?

python(matplotlib)中如何把折线图和柱状图画在一起?

怎么在matplotlib.pyplot的plot上加上文字?