突然想起来,

      作为将专业写成模式识别与图像处理的硕士毕业生,一次面试的时候,问到我mcmc是用来做什么的,我简历里面主要是在预测的时候用到了(实际上是用来模拟状态分布,后面根据分布再进行预测),所以我答成了用来做预测,对方反问了我,有点蒙,就把我的过程重复了一遍,稀里糊涂~每次都是这样。。感觉自己是好读书,不求甚解,总是什么都搞不懂。。

(1)马尔科夫链

       在理解马尔科夫链之前先了解一下马尔科夫性质,我们假设某一过程是由一个状态序列构成。这个状态序列被称为状态空间,假设某一时刻的状态是其前一时刻状态的函数,则说明该序列有马尔科夫性质,通俗的说,该时刻的状态只与其前一时刻的状态有关,则序列有马尔科夫性质。

所以我们在预测下一状态时,只与当前状态有关,与当前状态之前的状态都无关。下面的定义也说明了这一点:


(2)蒙特卡洛方法(Monte Carlo)

       蒙特卡洛方法是一种随机模拟方法,随机模拟的思想由来已久,但是由于难于取得随机数,随机模拟的方法一直发展缓慢。而蒙特卡洛方法的出现得益于现代电子计算机的诞生,在1944年由Metropolis 和 Ulam提出于二战时美国原子弹研究的曼哈顿工程之中。蒙特卡洛这个名字是由Metropolis起的,借用了那个著名的赌场的名字,因为赌博总是和概率相关。

      对那些用确定算法不可行或不可能解决的问题,蒙特卡罗方法常常为人们带来希望。也就是说当不知道某个过程概率的时候,可以通过撒粒子,模拟采样的过程,最后经过统计方法推测出概率,一般粒子越多,模拟越准确。因此这种方法又叫做统计模拟方法。

(3)mcmc

       

       MCMC方法就是构造合适的马尔科夫链进行抽样而使用蒙特卡洛方法进行积分计算。Metropolis-Hastings算法是Hastings算法的一种改进形式,也是MCMC算法应用最广泛的实现方法之一,M-H算法获得完整的马尔可夫链需要经过初始化、产生提议抽样、计算接受率、判断是否接受等步骤。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐