MATLAB中的GMM为同一文件提供不同的结果

时间:2015-03-01 13:25:22

标签: matlab machine-learning statistics gaussian

我在Matlab中使用数据集构建了高斯混合模型:

model = gmdistribution.fit(data,M,'Replicates',5);
带有M = 3高斯分量的

。我用以下方法测试了新数据:

[P, l] = posterior(model,new_data);

我多次运行该程序并没有得到相同的结果。每次运行都会产生不同的对数似然值。我使用log-likelihood进行决策,每次运行时相同数据(new_data)的值不同。它取决于什么?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

首先,假设您使用了新的version Matlab,gmdistribution.fit文档表明fit方法已被弃用且fitgmdist应该是用过的。有关示例,请参阅here

其次,gmdistribution.fit的文档表明,如果'Replicates'选项大于1,则'randSample' start方法将用于生成初始参数。这可能是您观察到的变异的原因(或至少一个原因)。

最后,您还可以在调用gmdistribution.fit之前尝试使用rng来设置全局随机数流的种子(假设函数内部没有使用它自己的流) )。或者,您可以尝试通过'Options'指定statset参数:

seed = 1;
s = RandStream('mt19937ar','Seed',seed);
opts = statset('Streams',s);
model = gmdistribution.fit(data,M,'Replicates',5,'Options',opts);

我无法自行测试 - 有关详细信息,请参阅gmdistribution课程文档。