2013-03-21 148 views
2

我已经得到了一个64维的高斯混合分布对象obj,并且想把它放在pdf函数中来找出某个点的概率。使用matlab函数“pdf”

然而,当我键入pdf(obj,obj.mu(1,:))测试对象时,它产生非常高的概率(如2.4845e + 069)

而且它没有任何意义,原因概率应该零和一之间的谎言。

我的matlab有问题吗?

p.s. 甚至pdf(obj,obj.mu(1,:)+obj.Sigma(1,1)*rand())产生的概率高(2.1682e + 069)第一

+0

概率密度函数不提供某个值的概率。要回答你的问题,如果你发布了'obj'的创建,这将会很有帮助。 – Deve 2013-03-21 08:07:14

+0

@Deve obj是通过标准* gmdistribution *函数生成的。 – Rein 2013-03-21 16:51:09

+0

我预料到了。你传递给这个函数的参数是什么? – Deve 2013-03-21 17:06:12

回答

2

第一件事:一个概率密度函数并不总是计算为1,它只是集成以1比其领域。

此外,在拟合高斯混合模型时,您所看到的是problem of singularities(参见第434页,图9.7)。某些组件折叠到单个数据点上不可避免地导致方差变为0并且PDF爆炸。这在高斯混合模型中经常遇到,因为它不是对数凸函数,似然函数中有很多局部极大值。我们试图找到表现良好的良好行为的局部最大值,奇点是特别糟糕的情况。

当你看到这个,你会想重新运行算法不同的起点或减少你正在使用的组件数量。上面的这本书还建议将特定组件重置为不同的值。

另一种方法是使用贝叶斯方法,为参数采用先验或正则化项,这将惩罚诸如0西格玛参数等奇异值。

您可以使用gmdistribution.fit中的不同起始值间接控制第一部分。对于第二部分,您可以使用参数Regularizehttp://www.mathworks.com/help/stats/gmdistribution.fit.html

+0

非常感谢!非常详细的解释!我检查了协方差矩阵,发现有很多零条目。在将正则化术语应用于现在有意义的概率类型之后。然而,价值变得非常低:'pdf(obj,obj.mu(1,:))= 1.4080e-052'这是正常的吗? – Rein 2013-03-22 06:48:44

+0

是的,当您有很多尺寸时,PDF将会非常小。您可能需要使用日志概率来避免下溢。 – 2013-03-22 06:50:16