Matlab上的最大似然(多变量伯努利)

时间:2016-10-29 19:39:12

标签: matlab mle bernoulli-probability

我是MATLAB环境的新手,不管我多么挣扎,似乎我无法得到如何为多元伯努利构建ML算法的概念。

我有一个N个变量的数据集(x1,x2,...,xN),每个变量都是D维度(Dx1)的向量,参数向量的形式为p =(p1,p2,.. 。,pD)。所以伯努利分布应该具有以下形式:

Pr(X|p)=Πp(d)^x(nd)*(1-p(d))^(1-x(nd))

我创建的代码使用MATLAB的mle函数:

for n=1:D
    prob(n)=mle(dataset(:,n),'distribution', 'bernoulli');  
end

它给出了来自数据集的估计概率的D向量。 但是,我真正感兴趣的是如何在逐步的MATLAB过程中实现ML,而不仅仅是使用mle。

非常感谢。

1 个答案:

答案 0 :(得分:0)

伯努利分布的phat是成功与试验次数的比例。如果你想手动完成,你可以计算每个向量中的成功次数(1或0),然后除以向量的长度。这是一种快速的方法,假设1是在矩阵中垂直存储的成功。

bern_mat = [0 0 1 0 1 1; 1 1 0 1 0 0 ; 1 0 1 0 1 1]; % 3x6 matrix of 1's and 0's
phat = sum(bern_mat,1)/size(bern_mat,1); % sum across the first dim then divide by size of first dim.