userWarning pymc3:重新参数化是什么意思?
userWarning pymc3 : What does reparameterize mean?
我使用 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)' 等并消除了这些用户警告。但是我找不到有关如何确定这些参数值的详细信息。我确信这可能已经在各种上下文中进行了讨论,但我无法找到可靠的文档。我正在做如下的试错法。
与 patten_study:
#SEED = 61290425 #51290425
步骤 = pm.NUTS(target_accept=0.95)
trace = sample(step = step)#4000,tune = 10000,step =step,discard_tuned_samples=False)#,random_seed=SEED)
我需要在不同的数据集上 运行 这些。因此,我正在努力为我使用的每个数据集修复这些参数值。有什么方法可以让我给出这些值或找到结果(如果有任何用户警告然后尝试其他值)并循环 运行 它?
请原谅我问了一些愚蠢的问题!
在这种情况下,重新参数化基本上是找到一个不同但等效的模型,它更容易计算。根据模型的详细信息,您可以做很多事情:
- 您可以使用方差较大的正态分布来代替均匀分布。
- 从中心分层模型更改为
non-centered
一.
- 用 Student-T 替换高斯分布
- 将离散变量建模为连续变量
- 边缘化变量,如 this 示例
您应该根据您对模型和问题的了解来决定这些更改是否有意义。
我使用 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)' 等并消除了这些用户警告。但是我找不到有关如何确定这些参数值的详细信息。我确信这可能已经在各种上下文中进行了讨论,但我无法找到可靠的文档。我正在做如下的试错法。
与 patten_study: #SEED = 61290425 #51290425 步骤 = pm.NUTS(target_accept=0.95) trace = sample(step = step)#4000,tune = 10000,step =step,discard_tuned_samples=False)#,random_seed=SEED)
我需要在不同的数据集上 运行 这些。因此,我正在努力为我使用的每个数据集修复这些参数值。有什么方法可以让我给出这些值或找到结果(如果有任何用户警告然后尝试其他值)并循环 运行 它?
请原谅我问了一些愚蠢的问题!
在这种情况下,重新参数化基本上是找到一个不同但等效的模型,它更容易计算。根据模型的详细信息,您可以做很多事情:
- 您可以使用方差较大的正态分布来代替均匀分布。
- 从中心分层模型更改为 non-centered 一.
- 用 Student-T 替换高斯分布
- 将离散变量建模为连续变量
- 边缘化变量,如 this 示例
您应该根据您对模型和问题的了解来决定这些更改是否有意义。