我正在使用贝叶斯方法和马尔可夫链蒙特卡罗 (MCMC) 方法估计模型的 15 个参数。因此,我在运行 100000 个样本的 MCMC 链后的数据是一个 100000×15 的参数值表。
我想找到我的后验分布的 15 维最高密度区域。
我的问题:对样本进行聚类以将它们分配给 HDR(下面使用基于密度的聚类的示例)需要所有样本的距离矩阵。对于 100000 个样本,这个矩阵需要 37 GiB 的 RAM,我没有,更不用说计算时间了。如何使用合理数量的计算资源找到我的 HDR?以前一定有人遇到过这个问题?!
编辑添加:根据这个 SO question and DBSCAN Wikipedia page,DBSCAN 可以归结为时间复杂度和使用空间索引并避免使用距离矩阵的空间复杂度。仍在寻找实现或其描述...
使用基于密度的聚类 (DBSCAN) 的多元最高密度区域
AX% 最高密度区域是包含 X% 概率质量的分布区域。由于 MCMC 方法绘制的样本出现频率(渐近)与搜索到的后验分布成正比,因此我的 X% HDR 也包含我的样本的 X%。
我计划使用基于密度的聚类算法DBSCAN对我的样本进行聚类,因为样本的密度与我的后验峰高度直接相关。
以 Hyndman (1996) 的方法(论文,SO question)进行类比,我计划增加单个样本可能与集群的最大距离,以迭代地被视为它的一部分,直到我的样本的 X% 是某些样本的一部分簇:
在这一步之后,我将计算每个维度中每个集群的范围,以此来呈现我的最高密度区域。
在此示例中,您将能够看到 80% HDR 包含两个不同的区域,而 50% HDR 仅包含一个集群。我可以将其可视化,如下所示,因为上面的图不适用于超过 2 个维度: