本文用讲一下指定分布的随机抽样方法:MC(Monte Carlo), MC(Markov Chain), MCMC(Markov Chain Monte Carlo)的基本原理,并用R语言实现了几个例子:
1. Markov Chain (马尔科夫链)
2. Random Walk(随机游走)
3. MCMC具体方法:
3.1 M-H法
3.2 Gibbs采样
PS:本篇blog为ese机器学习短期班参考资料(20140516课程),课上讲详述。
下面三节分别就前面几点简要介绍基本概念,并附上代码。这里的概念我会用最最naive的话去概括,详细内容就看我最下方推荐的链接吧(*^__^*)
0. MC(Monte Carlo)
生成指定分布的随机数的抽样。
1. Markov Chain (马尔科夫链)
假设 f(t) 是一个时间序列,Markov Chain是假设f(t+1)只与f(t)有关的随机过程。
Implement in R:
#author: rachel @ ZJU#email: zrqjennifer@gmail.comN = 10000signal = vector(length = N)signal[1] = 0for (i in 2:N){ # random select one offset (from [-1,1]) to signal[i-1] signal[i] = signal[i-1] + sample(c(-1,1),1) }plot( signal,type = 'l',col = 'red')
2. Random Walk(随机游走)
如布朗运动,只是上面Markov Chain的二维拓展版:
Implement in R:
#author: rachel @ ZJU#email: zrqjennifer@gmail.comN = 100x = vector(length = N)y = vector(length = N)x[1] = 0y[1] = 0for (i in 2:N){ x[i] = x[i-1] + rnorm(1) y[i] = y[i-1] + rnorm(1)}plot(x,y,type = 'l', col='red')