在介绍《Fast and Provably Good Seedings for K-means》时,作者使用MCMC采样来近似D2−sampling 的过程,下面我们来介绍一下MCMC算法。
Monte Carlo Approach
在介绍MCMC算法之前,我们先来看蒙特卡洛随机模拟算法。
假设我们需要求解下面这个积分问题:
而这个f(x) 的积分形式比较难求,我们可以通过数值模拟解法近似求解。常用的方法是蒙特卡洛算法:
式中的q(x) 可以看作 x 在区间上的分布,当我们使用
以上便是蒙特卡洛算法的核心思想,具体操作时就是需要考虑如何从给定的概率分布 (x) 中采集足够的样本。下面我们来介绍两种简单的采样算法。
采样算法
CDF
假设我们想以 p(x) 的概率采集一些数据,
- 我们可以先求出它的累积概率函数:
F(x)=∫bap(x)d(x) s.t.a<x<b
2.然后使用均匀分布产生一个样本点 u
u∼u(a,b)
3.最后我们求解出反函数F−1(u)
x=F−1(u)
4.x 便可以看作是按照p(x) 采样得到的样本点
我们可以看一个正态分布的例子:
左图是概率密度函数PDF-p(x),右图是对应的累计概率密度函数CDF-F(x).
我们先随机生成一个样本点 u=0.8413, F−1(u)=1,所以1就是相应的样本点。
直觉上看,我们随机选择(0,1)之间的点,大部分点都i会落在区间(0.2,0.8) 之间,而与之对应的 F−1(x) 则大部分落在(−1,1)之间,这也对应了正态分布在(−1,1)之间概率密度较大的事实。
这种方法只适用于简单的分布。
Markov Chain
对于某一些马尔科夫链,它能够收敛到一个平稳分布π(x),即:
当马尔可夫链在第 n 个状态收敛之后,从
所以为了构造一个以 π 为平稳分布的马尔科夫链,我们需要满足细致平衡条件:
Metropolis Sampler
M算法要求提案概率 q(x) 是对称的。
Metropolis-Hastings Sampler
MH算法加入了 α ,不要求提案概率是对称的,也能满足细致平衡条件。
这两个算法的区别在于提案概率是否是对称的。