【问题标题】:Mixture of Gaussians (EM) how to calculate the responsabilities高斯混合(EM)如何计算责任
【发布时间】:2012-11-06 19:29:12
【问题描述】:

我有一个任务是在 matlab 中使用 EM 实现 MoG。那作业:

我的密码ATM;

clear
clc

load('data2')

%% INITIALIZE
K = 20
pi =  0.01:((1-0.01)/K):1;
for k=1:20
    sigma{k} = eye(2);
    mu(k,:) = [rand(1),rand(1)];
end


%% Posterior over the laten variables
addition = 0;

for k =1:20 
    addition = addition + (pi(k)*mvnpdf(x,mu(k,:), sigma{k}));
end
test = 0;
for k =1:20 
   gamma{k} =  (pi(k)*mvnpdf(x,mu(k), sigma{k})) ./ addition;  
end

数据有 1000 行和 2 列(所以有 1000 个数据点)。我现在的问题是如何计算责任。当我尝试计算协方差矩阵时,我得到一个 1x1000 矩阵。虽然我认为协方差矩阵应该是 2x2。

【问题讨论】:

    标签: matlab machine-learning gaussian


    【解决方案1】:

    不幸的是,我不会说 Matlab,所以我无法真正看出你的代码在哪里不正确,但我可以大致回答(也许了解 Matlab 的人可以看看你的代码是否可以挽救)。每个数据点都有一个与之关联的 gamma,它是混合物中每个成分的指示变量的期望值。计算它们非常简单:对于第 i 个数据点和第 k 个分量,gamma_ik 只是第 i 个点的第 k 个分量的密度乘以第 k 个混合系数(先验概率该点来自第 k 个组件,即您的作业中的 pi),通过在所有 k 上计算的这个数量进行归一化。因此,对于每个数据点,您都有一个责任向量(长度为 k),总和为 1。

    【讨论】:

      猜你喜欢
      • 2015-10-24
      • 2017-03-07
      • 2015-10-16
      • 2016-02-15
      • 2021-12-20
      • 2021-09-30
      • 2017-04-21
      • 2014-10-25
      相关资源
      最近更新 更多