来自matlab" fitgmdist"的不合理的[正]对数似然值功能

时间:2016-01-10 13:01:27

标签: matlab mixture-model

我想用高斯混合模型拟合数据集,数据集包含大约120k样本,每个样本有大约130维。当我使用matlab来完成它时,我运行脚本(簇号为1000):

gm = fitgmdist(data, 1000, 'Options', statset('Display', 'iter'), 'RegularizationValue', 0.01);

我得到以下输出:

  iter      log-likelihood
   1    -6.66298e+07
   2    -1.87763e+07
   3    -5.00384e+06
   4    -1.11863e+06
   5          299767
   6          985834
   7     1.39525e+06
   8     1.70956e+06
   9     1.94637e+06

对数可能性大于0!我认为这是不合理的,并且不知道为什么。

有人能帮助我吗?

1 个答案:

答案 0 :(得分:0)

首先,数据集的大小并不是问题。 以下是一些使用非常小的数据集生成类似结果的代码:

options = statset('Display', 'iter');
x = ones(5,2) + (rand(5,2)-0.5)/1000;
fitgmdist(x,1,'Options',options);

这会产生

iter     log-likelihood
 1       64.4731
 2       73.4987
 3       73.4987

当然你知道log函数(自然对数)的范围是-inf到+ inf。我想你的问题是你认为日志的输入(即后验函数)应该被[0,1]限制。那么,aposteriori函数是一个pdf函数,这意味着对于非常密集的数据集,它的值可能非常大。

PDF必须是正面的(这就是我们可以使用它们的原因)并且必须集成到1.但它们不受[0,1]的限制。

您可以通过降低上述代码中的密度来验证这一点

x = ones(5,2) + (rand(5,2)-0.5)/1;
fitgmdist(x,1,'Options',options);

这会产生

iter     log-likelihood
 1      -8.99083
 2      -3.06465
 3      -3.06465

因此,我宁愿假设您的数据集包含多个重复(或非常接近)的值。