我有64个维度的高斯混合分布对象obj
,并希望将其放在pdf
函数中以找出某个点的概率。
然而,当我输入pdf(obj,obj.mu(1,:))
来测试对象时,它产生的概率非常高(如2.4845e + 069)
它没有意义,因为概率应该介于0和1之间。
我的matlab有问题吗?
P.S。
偶pdf(obj,obj.mu(1,:)+obj.Sigma(1,1)*rand())
产生概率很高(2.1682e + 069)
答案 0 :(得分:2)
首先要做的事情是:概率密度函数并不总是评估为1,它只是在其域上将整合为1。
此外,在拟合高斯混合模型时,您看到的是problem of singularities(参见第434页,图9.7)。某些组件折叠到单个数据点上不可避免地导致方差变为0并且PDF会爆炸。这在高斯混合模型中经常遇到,因为它不是对数凸,并且在似然函数中存在许多局部最大值。我们试图找到性能良好的局部最大值,并且奇点是特别糟糕的情况。
当您看到这一点时,您将需要使用不同的起点重新运行算法或减少您正在使用的组件数量。上面的书还建议只将特定组件重置为不同的值。
另一种方法是使用贝叶斯方法,为您的参数采用先验或正则化项,这将惩罚诸如0 sigma参数之类的异常值。
您可以使用gmdistribution.fit
中的不同起始值间接控制第一部分。对于第二部分,您可以使用Regularize
参数:http://www.mathworks.com/help/stats/gmdistribution.fit.html