如何在 MCMC 之后获得多元可信区间估计/最高密度区域 (HDR)

机器算法验证 贝叶斯 马尔可夫链蒙特卡罗 蒙特卡洛 可信区间 最高密度区
2022-03-15 15:27:57

我正在使用贝叶斯方法和马尔可夫链蒙特卡罗 (MCMC) 方法估计模型的 15 个参数。因此,我在运行 100000 个样本的 MCMC 链后的数据是一个 100000×15 的参数值表。

我想找到我的后验分布的 15 维最高密度区域。

我的问题:对样本进行聚类以将它们分配给 HDR(下面使用基于密度的聚类的示例)需要所有样本的距离矩阵。对于 100000 个样本,这个矩阵需要 37 GiB 的 RAM,我没有,更不用说计算时间了。如何使用合理数量的计算资源找到我的 HDR?以前一定有人遇到过这个问题?!

编辑添加:根据这个 SO question and DBSCAN Wikipedia page,DBSCAN 可以归结为O(nlogn)时间复杂度和O(n)使用空间索引并避免使用距离矩阵的空间复杂度。仍在寻找实现或其描述...


使用基于密度的聚类 (DBSCAN) 的多元最高密度区域

AX% 最高密度区域是包含 X% 概率质量的分布区域。由于 MCMC 方法绘制的样本出现频率(渐近)与搜索到的后验分布成正比,因此我的 X% HDR 也包含我的样本的 X%。

我计划使用基于密度的聚类算法DBSCAN对我的样本进行聚类,因为样本的密度与我的后验峰高度直接相关。

以 Hyndman (1996) 的方法(论文SO question)进行类比,我计划增加单个样本可能与集群的最大距离,以迭代地被视为它的一部分,直到我的样本的 X% 是某些样本的一部分簇:

DBSCAN 应用于 MCMC 样本

在这一步之后,我将计算每个维度中每个集群的范围,以此来呈现我的最高密度区域。

在此示例中,您将能够看到 80% HDR 包含两个不同的区域,而 50% HDR 仅包含一个集群。我可以将其可视化,如下所示,因为上面的图不适用于超过 2 个维度:

HDR 范围可视化

1个回答

我找到了ANN 的 Matlab WrapperANN 是一个用于近似最近邻搜索的库(主页)。除了空间索引区域查询的常用参数外,它还使用了一个额外的误差参数,该参数eps给出了搜索的“近似性”:返回的最近邻居最多1+eps比真实(非近似)最近的查询点更远邻居。在程序员手册中搜索术语“错误绑定”以查找有关eps.

这使我能够在我的 DBSCAN 实现中包含快速最近邻搜索,这将我的问题中概述的过程加速到可行的持续时间。实施完成后,我将提供一个链接。