matlab - 使用matlab函数 "pdf"

标签 matlab probability gaussian

我有一个64维的高斯混合分布对象obj,想将其放入pdf函数中以找出某个点的概率。

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

这没有意义,因为概率应该在零和一之间。

我的matlab有问题吗?

附: 即使 pdf(obj,obj.mu(1,:)+obj.Sigma(1,1)*rand()) 也会产生很高的概率 (2.1682e+069)

最佳答案

首先要做的事情是:概率密度函数的计算结果并不总是为 1,它只是在其域上积分为 1。

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

当您看到此情况时,您将希望以不同的起点重新运行算法或减少正在使用的组件数量。上面的书还建议将特定组件重置为不同的值。

另一种方法是使用贝叶斯方法,对参数采用先验项或正则化项,这将惩罚奇怪的值,例如 0 sigma 参数。

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

关于matlab - 使用matlab函数 "pdf",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15541575/

相关文章:

python - 用python绘制高斯函数的傅里叶变换,但结果错误

根据权重分配的算法,在项目总数未知的情况下,保证良好的分配?

python - pymc 中狄利克雷随机变量的 logp > 1

algorithm - 可变数量的集合之间的模糊选择

matlab - 多输入Matlab

syntax-error - 尝试在Scilab中做高斯钟声

python - 在 symfit python 模块中使用命名模型来拟合高斯分布

matlab - 组合不同频率的数据矩阵

java - IFFT Matlab 对称与 Java 数学公共(public)资源

c++ - 将 Matlab 代码转换为静态 C++ 库