Сингулярная матрица при внедрении GMM с нуля - PullRequest
0 голосов
/ 14 мая 2019

enter image description hereenter image description here

В алгоритме 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())

Есть ли что-то особенно неправильное в этой реализации, из-за которой ковариация всегда будет единственной?

...