我需要在python中计算混合狄利克雷分布的PDF。但对于每个混合成分,都有归一化常数,这是以超参数之和的伽马函数为分子的逆β函数。因此,即使是大小为'60‘的超参数之和,它也是无界的。请给我推荐一个解决这个问题的办法。当我忽略规范化常量时会发生什么?
首先,这并不是NC本身的计算问题。对于一个单独的dirichlet,我没有问题。但是我这里有的是一个混合的dirichlets的产品,所以每个混合组件都是许多dirichlets的产品,每个都有自己的NC。所以这些的乘积是无界的。关于我的目标,我有一个p(s,T,O)的联合分布,其中's‘是离散的,'T’和'O‘是dirichlet变量,即一组和为'1’的参数向量。现在,因为's‘是离散的和有限的,所以我有|S|集合,它是每个's’的dirichlet分量的乘积的混合。现在我的目标是找到p(s|T,O)。因此,我直接替换一个特定的(T,O),并计算每个p('s'|T,O)的值。为此,我需要计算NCs。如果只有一个混合分量,那么我可以忽略范数常数calc。最后重整化,但是因为我有几个混合成分,每个成分都会有不同的比例,所以我不能重整化。这是我的难题。
发布于 2015-02-25 02:08:43
一些想法。(1)为了准确地计算归一化因子,也许你可以重写伽马函数,通过伽玛(a_i + 1) = a_i伽马( a_i )(a_i不需要是整数,让基本情况是a_i< 1),然后你将在分子和分母中有sum(a_i,i,1,n)项,你可以对它们进行重新排序,这样你就可以将最大项除以最大项,然后将这些单个比率相乘,而不是计算巨大的分子和巨大的分母,然后再除以它们。(2)如果你不需要精确,也许你可以应用Stirling近似。(3)也许你根本不需要pdf。对于某些目的,您只需要一个与pdf成比例的函数。我相信马尔可夫链蒙特卡罗就是这样的。那么,你在这里尝试实现的更大的目标是什么?
https://stackoverflow.com/questions/28689687
复制相似问题