0

我是 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。

非常感谢。

4

1 回答 1

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.
于 2017-10-16T15:18:47.033 回答