В алгоритме EM для гауссовых моделей смесей. Мы проходим через вышеупомянутые шаги. 9.23 составляет шаг E, а 9.24,9.25,9.26 - шаг М.
Однако реализация 9.25 всегда давала $ \ Sigma_K $, которые были единичными. Независимо от того, какое значение или сигма я выбрал, алгоритм создаст единственное число $ \ 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())
Есть ли что-то особенно неправильное в этой реализации, из-за которой ковариация всегда будет единственной?