了解MCMC:替代方案是什么?


13

第一次学习贝叶斯统计;作为理解MCMC的一个角度,我想知道:这是做根本上无法通过其他方式完成的事情,还是只是比其他方法更有效?

通过说明的方式,假设在给定数据P(x,y,z|D)的模型的情况下,我们正在尝试计算参数的概率,给定一个计算相反参数P(D|x,y,z)。为了直接用贝叶斯定理计算,我们需要这里指出的分母。但是我们可以通过积分来计算它,如下所示:P(D)

p_d = 0.
for x in range(xmin,xmax,dx):
    for y in range(ymin,ymax,dy):
        for z in range(zmin,zmax,dz):
            p_d_given_x_y_z = cdf(model(x,y,z),d)
            p_d += p_d_given_x_y_z * dx * dy * dz

那会行得通吗(尽管使用大量变量时效率很低),还是有其他原因会使这种方法失败?


4
集成在很多情况下都可以工作,但是会花费太长时间(即效率低下)。MCMC是一种有效估计后验的方法。
马克·怀特

3
与该问题无关,但我认为您的积分中缺少x,y,z的先验值(它出现在贝叶斯公式的分子中)
alberto

Answers:


17

您正在描述后方的网格近似,尽管这不是最流行的方法,但这是一种有效的方法。在相当多的情况下,可以分析计算后验分布。蒙特卡洛·马可夫链(Monte Carlo Markov Chains)或其他近似方法,是获取后验分布样本的方法,有时在找不到解析解时会起作用。

可以找到的分析解决方案通常是“共轭”族的情况,您可以通过谷歌搜索找到更多有关此的解决方案,请参见例如https://en.wikipedia.org/wiki/Conjugate_prior

作为第一个示例,如果您的在先p一致在上[0, 1],在p简单的二项式实验中成功参数是,则后验等于Beta分布。在这种情况下,可以明确地进行积分或求和。

如果您有有限多个参数选择,或者如示例中那样使用网格近似,则可能只需要简单的求和即可。但是,如果您有几个变量并且想要使用密集网格,则计算数量会迅速激增。

从后验采样有几种算法。汉密尔顿蒙特卡洛(Hamiltonian Monte Carlo),特别是NUTS采样器,现已流行并在stan和中使用PyMC3,Metropolis Hastings是经典之作。变分推论是一个相对较新的概念,实际上不是采样方法,而是获得近似值的另一种方法。目前,包括分析解决方案在内的所有方法都不是最佳方法,它们在特定情况下均能很好地发挥作用。


好的答案,但是您的最后一段似乎暗示了变分推理是一种采样方法,但事实并非如此。您可以考虑更正此问题。
鲁宾·范·卑尔根

7

θ

π(θ|x)exp{||θx||2||θ+x||4||θ2x||6},x,θd,

6

蒙特卡洛方法是利用随机数的技术。目的是找到根据分布的样本,并假定是复杂的。这意味着我们无法直接对其进行评估。如果不是这种情况,则可以进行分析计算。在您的示例中,这将是。xP(x)P(x)P(D)

您提出的基本上是在和空间中进行网格搜索。如果和是高维的,则这将是非常详尽的,如果和是连续的,则这将是不可行的。另一个问题是,您必须在每个步骤中计算cdf。xyxy

MCMC方法尝试通过提出候选样本,然后根据某种度量来接受或拒绝它们来尝试解决此问题。从理论上讲,这比通过所有可能的组合更快。因此,基本上,您会发现从先前的中提取的样本。此处的理论问题是,仅在抽取的样本数量有限的情况下(即在样本之后)才是这种情况。因此,您不知道何时停止马尔可夫链。ciP(D)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.