userWarning pymc3:重新参数化是什么意思?

man*_*ula 2 user-warning pymc3

我使用 DensityDist 分布构建了一个 pymc3 模型。我有四个参数,其中 3 个使用 Metropolis,一个使用 NUTS(这是由 pymc3 自动选择的)。但是,我得到两个不同的 UserWarnings 1.Chain 0 在调整后包含发散样本的数量。如果增加target_accept无济于事,请尝试重新参数化。我可以知道这里重新参数化是什么意思吗?2.链0中的接受概率与目标不匹配。它是 ,但应该接近 0.8。尝试增加调整步骤的数量。

通过一些例子,我使用了“random_seed”、“discard_tuned_samples”、“step = pm.NUTS(target_accept=0.95)”等等,并摆脱了这些用户警告。但是我找不到有关如何确定这些参数值的详细信息。我相信这可能已经在各种上下文中讨论过,但我无法找到可靠的文档。我正在做一个试错法,如下所示。

with patten_study: #SEED = 61290425 #51290425 step = pm.NUTS(target_accept=0.95) trace = sample(step = step)#4000,tune = 10000,step =step,discard_tuned_samples=False)#,random_seed=SEED)

我需要在不同的数据集上运行这些。因此,我正在努力为我使用的每个数据集修复这些参数值。有什么方法可以让我给出这些值或找到结果(如果有任何用户警告,然后尝试其他值)并在循环中运行它?

如果我问一些愚蠢的事情,请原谅我!

alo*_*dia 5

在这种情况下,重新参数化基本上是找到一个更容易计算的不同但等效的模型。根据模型的详细信息,您可以做很多事情:

  • 您可以使用具有大方差的正态分布,而不是使用均匀分布。
  • 从以中心为中心的分层模型转变为非以中心为中心的模型 。
  • 用 Student-T 替换高斯
  • 将离散变量建模为连续变量
  • 这个例子一样边缘化变量

这些更改是否有意义是您应该根据您对模型和问题的了解来决定的。