0

我需要在 python 中计算 Dirichlet 分布混合的 PDF。但是对于每个混合分量,都有一个归一化常数,它是以超参数和的伽马函数为分子的反贝塔函数。因此,即使对于大小为“60”的超参数的总和,它也是无界的。请建议我解决此问题。当我忽略归一化常数时会发生什么?

首先,问题不是NC本身的计算。对于单个狄利克雷,我没有问题。但是我这里有一个狄利克雷产物的混合物,所以每个混合物成分都是许多狄利克雷的产物,每个狄利克雷都有自己的NC。所以这些的产品是无限的。关于我的目标,我有一个 p(s,T,O) 的联合分布,其中“s”是离散的,“T”和“O”是狄利克雷变量,即一组参数向量总和为“1” . 现在因为's'是离散的和有限的,我有|S| 每个 's' 的一组狄利克雷成分的产品混合物。现在我的目标是找到 p(s|T,O)。所以我直接代入一个特定的 (T,O) 并计算每个 p('s'|T,O) 的值。为此,我需要计算 NC。如果只有一个混合成分,那么我可以忽略范数常数 calc。最后重新归一化,但由于我有几个混合成分,每个成分都会有不同的缩放比例,所以我不能重新归一化。这是我的难题。

4

1 回答 1

0

一些想法。(1) 要准确计算归一化因子,也许您可​​以通过 gamma(a_i + 1) = a_i gamma(a_i) 重写 gamma 函数(a_i 不必是整数,让基本情况为 a_i < 1)然后你'将在分子和分母中包含 sum(a_i, i, 1, n) 项,您可以重新排序它们,以便将最大项除以最大项并将这些单个比率相乘,而不是计算一个巨大的分子和一个巨大的分母和划分那些。(2) 如果您不需要精确,也许您可​​以应用斯特林近似。(3) 也许你根本不需要 pdf。出于某些目的,您只需要一个与 pdf 成比例的函数。我相信马尔可夫链蒙特卡洛就是这样。那么,您在这里要实现的更大目标是什么?

于 2015-02-24T18:08:43.133 回答