小编Mic*_*cle的帖子

简化EM的公式

我想在Matlab中计算下面的公式(EM的E-step for Multinomial Mixture Model),
在此输入图像描述

g和θ是矩阵,θ和λ具有以下约束:
在此输入图像描述
在此输入图像描述
但是m的计数大于1593,当计算θ的乘积时,数字变得非常小,Matlab将其保存为零.任何人都可以简化g公式或使用其他技巧来解决这个问题?

更新:

data: data.txt (下载后,将文件扩展名更改为'mat')

码:

function EM(data)
%% initialize
K=2;
[N M]=size(data);
g=zeros(N,K);
landa=ones(K,1) .* 0.5;
theta = rand(M, K);
theta = bsxfun(@rdivide, theta, sum(theta,1))';
%% EM
for i=1:10
%% E Step
    for n=1:N
        normalize=0;
        for k=1:K
            g(n,k)=landa(k) * prod(theta(k,:) .^ data(n,:));
            normalize=normalize + landa(k) * prod(theta(k,:) .^ data(n,:));
        end
        g(n,:)=g(n,:) ./ normalize;
    end
%% M Step 
    for k=1:K
        landa(k)=sum(g(:,k)) / N ;
        for m=1:M
            theta(k,m)=(sum(g(:,k) .* data(:,m)) + 1) / (sum(g(:,k) .* …
Run Code Online (Sandbox Code Playgroud)

math matlab mixture-model

1
推荐指数
1
解决办法
273
查看次数

标签 统计

math ×1

matlab ×1

mixture-model ×1