在用于高斯混合模型的EM算法中。我们完成以上步骤。 9.23组成E步骤,而9.24、9.25、9.26组成M步骤。
但是,实施9.25总是会给$ \ Sigma_K $单数。无论我选择的是平均值还是sigma,该算法都会在第一次迭代后创建一个奇数$ \ Sigma $。
我对M步骤的实现:
for k in range(K):
mu[:,k] = np.sum(X*gamma[:,k][:,None],axis = 0)/N[k]
for k in range(K):
A = X - mu[:,k]
SigmaK = A.T@(A *gamma[:,k][:,None])
SigmaK /=self.N[k]
sigma[k] = SigmaK
pi = N*(1/N.sum())
此实现中是否存在某些特别错误的问题,会导致协方差始终是奇异的?