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