我希望在MC-Stan上使用Spark,但似乎Google没有搜索相关网页。
我想知道这种方法在Spark上是否可行,因此如果有人让我知道,我将不胜感激。
此外,我也想知道在Spark上使用MCMC的广泛使用方法是什么。我听说Scala被广泛使用,但是我需要一些具有像MC-Stan这样体面的MCMC库的语言。
答案 0 :(得分:10)
是的,它当然可能,但需要更多的工作。 Stan(以及我所知道的流行的MCMC工具)并不是设计为通过Spark或其他方式在分布式设置中运行。一般而言,分布式MCMC是一个积极研究的领域。对于最近的审核,我建议Patterns of Scalable Bayesian Inference(PoFSBI)的第4部分。有多种可能的方法可能需要拆分大型MCMC计算,但我认为其中一种更简单的方法是拆分数据并在每个分区上运行Stan等具有相同模型的现成工具。每个模型都会产生一个 subposterior ,它可以一起缩小形成一个后部。 PoFSBI讨论了组合这些子类的几种方法。
我使用pyspark和pystan进行了put together非常粗略的概念验证(python是Stan和Spark支持最多的通用语言)。它是PoFSBI中加权平均一致性算法的粗略且有限的实现,运行在微小的8-school数据集上。我不认为这个例子几乎是非常有用的,但是它应该提供一些关于运行Stan作为Spark程序可能需要的东西的想法:分区数据,在每个分区上运行stan,组合子类。