我已经实现了期望最大化算法,并且它能够收敛并正确返回mu
和sigma
的值,我已经用多个例子进行了验证。
我尝试绘制了对数似然图,但不知道正确的形式应该是什么样子?这是方程:这是我的图表,y轴是对数似然值,x轴是迭代次数。
负值看起来很奇怪,也许我应该对似然进行归一化?在期望最大化算法中,对数似然的意义是什么?
logLikelihood = 0;for i = 1 : n logTemp = 0; for j = 1 : k logTemp = logTemp + p(j) * mvnpdf(x(i,:), mu(j,:), sigma(:,:,j)); end logLikelihood = logLikelihood + log(logTemp);endplot(iteration, logLikelihood,'r*');hold on;
回答:
对数概率总是负的,因为它是一个概率的对数(p<1)。你的概率(不是对数概率)大约是p=10^-1000,这是正常的。例如,10000次有偏骰子掷出的最可能序列的概率非常小(但其他序列的概率会更小)。
对数概率的构造是为了避免概率消失,即程序会将它们四舍五入为零,当这种情况发生时,程序很可能会因为某些归一化值为零而崩溃。