【问题标题】:GMM in MATLAB gives different results for the same fileMATLAB 中的 GMM 对同一个文件给出不同的结果
【发布时间】:2015-08-25 05:31:20
【问题描述】:

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

model = gmdistribution.fit(data,M,'Replicates',5);

带有M = 3 高斯分量。我测试了新数据:

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

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

【问题讨论】:

    标签: matlab machine-learning statistics gaussian


    【解决方案1】:

    首先,假设您使用的是 Matlab 的新 version,gmdistribution.fit 文档表明 fit 方法已弃用,应使用 fitgmdist。示例见here。

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

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

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

    我自己无法完全测试这一点 - 请参阅 gmdistribution 类文档了解更多详细信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-06
      • 2012-02-01
      • 2019-04-14
      • 2014-12-20
      • 2018-08-12
      • 2012-01-30
      • 2015-09-26
      • 1970-01-01
      相关资源
      最近更新 更多