MCMC模拟初学

蒙特卡罗思想

假设某个函数h(x)关于概率分布 π ( x ) \pi(x) π(x)的期望
E π E_\pi Eπ(h(x))= ∫ \int h(x) π \pi π(x)dx

存在。如果能生成服从 π \pi π(x)的n独立样本 x 1 x_1 x1 x 2 x_2 x2,…, x n x_n xn,根据大数定理,对充分大的n,可以取
y ^ = ∑ k = 1 n h ( x k ) / n \hat{y}=\sum_{k=1}^{n}h(x_k)/n y^=k=1nh(xk)/n
这就是蒙特罗的思想。

马尔科夫链

假设随机过程 X t X_t Xt表示系统在时间 t t t的状态,若在 X t X_t Xt已知的条件下,系统在将来时刻 X t + n X_{t+n} Xt+n的状态的概率与过去状态 X s ( s < t ) X_s(s<t) Xss<t无关,只与过程在 t t t时刻的状态有关,则称随机过程{ X t X_t Xt}为马尔科夫过程。

MCMC算法思想

现在要生成具有概率分布 P ( X = j ) = π ( j ) P(X=j)=\pi(j) P(X=j)=π(j), j = 1 , 2 , . . . , N j=1,2,...,N j=1,2,...,N的随机变量X的随机数。如果能够生成一个具有极限概率{ π ( j ) \pi(j) π(j)}的马尔科夫链{ X t X_t Xt},根据马尔科夫链的收敛定理,不管初始状态 X 0 X_0 X0如何,是什么分布,在经过一段时间后,{ X t X_t Xt}的边际分布近似于极限分布 π ( x ) \pi(x) π(x)。因此可以通过运行马尔科夫链n步,n足够大,来获得 X n X_n Xn的值,并将这个值近似认为是想要生成的随机变量随机数。另外,为了估计 E π E_\pi Eπ(h(X))= ∑ j = 1 N h ( j ) π ( j ) \sum_{j=1}^{N}h(j)\pi(j) j=1Nh(j)π(j),可选马尔科夫链中的 X 1 X_1 X1 X 2 X_2 X2,…, X n X_n Xn,用 ∑ k = 1 n h ( X k ) / n \sum_{k=1}^{n}h(X_k)/n k=1nh(Xk)/n估计 E π E_\pi Eπ(h(X)),即
∑ k = 1 n h ( X k ) / n \sum_{k=1}^{n}h(X_k)/n k=1nh(Xk)/n → \rightarrow E π E_\pi Eπ(h(X))。在应用中选取适当的 k k k,用 ∑ k = 1 n h ( X k ) / ( n − k ) \sum_{k=1}^{n}h(X_k)/(n-k) k=1nh(Xk)/(nk)估计。

MCMC算法的思想就是建立一个马尔科夫链,以 π ( x ) \pi(x) π(x)为平稳分布,从马尔科夫链中抽取样本。

你可能感兴趣的:(算法学习)