我在Matlab中使用数据集构建了高斯混合模型:
model = gmdistribution.fit(data,M,'Replicates',5);
带有M = 3
高斯分量的。我用以下方法测试了新数据:
[P, l] = posterior(model,new_data);
我多次运行该程序并没有得到相同的结果。每次运行都会产生不同的对数似然值。我使用log-likelihood进行决策,每次运行时相同数据(new_data
)的值不同。它取决于什么?我该如何解决这个问题?
答案 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
课程文档。