O que fazer quando a matriz de covariância da amostra não é invertível?

12

Estou trabalhando em algumas técnicas de agrupamento, nas quais, para um determinado agrupamento de vetores da dimensão d, assumo uma distribuição normal multivariada e calculo o vetor médio da dimensão d da amostra e a matriz de covariância da amostra.

Então, quando tentando decidir se um novo, sem ser visto, d-dimensional vetor pertence a este cluster estou verificando sua distância através desta medida:

(Xiμ^X)σ^X1(Xiμ^X)>B0.95(p2,p2)

Que requer me para calcular o inverso da matriz de covariância σ X . Mas, dadas algumas amostras, não posso garantir que a matriz de covariância seja invertível, o que devo fazer no caso de não ser?σ^X

obrigado

Aly
fonte
depende do que está causando a inversão da matriz. As possíveis causas podem ser (a) a amostra que você usou para calcular a matriz de covariância é muito pequena (b) sua amostra é de tamanho suficiente, mas seu membro não é extraído de uma distribuição contínua, de modo que parte da coluna / linha da sua amostra se repita .
user603
Eu acho que o tamanho da amostra torna-se a pequenas
Aly
@ Anony-Mousse Tenho certeza de que agora estou usando pelo menos tantas amostras quanto dimensões, caso contrário, a matriz será deficiente em classificação. Até agora não há problemas, mas acho que com a covariância da amostra pode ser não-invertível?
Aly
11
MMT
11
@corone faz que uma estrita>
user603

Respostas:

14

d+1dk+1d

É por isso que é comum não usar PCA literal, mas executar decomposição de valor singular , que pode ser usada para calcular o pseudo - inverso de uma matriz. Se a matriz for invertível, o pseudo-inverso será o inverso.

No entanto, se você estiver vendo matrizes não invertíveis, é provável que sua distância do cluster não faça sentido se o vetor estiver fora do hiperplano, o cluster representa, porque você não conhece a variação no espaço ortogonal (você pode pensar em essa variação como 0!) SVD pode calcular o pseudoinverso, mas as "variações" ainda não serão determinadas pelos seus dados.

y=xxy

Além disso, dependendo de como você calcula a matriz de covariância, você pode estar tendo problemas numéricos devido ao cancelamento catastrófico. A solução mais simples é sempre centralizar os dados primeiro, para obter média zero.

Possui QUIT - Anony-Mousse
fonte
desculpe por responder aqui, mas estou trabalhando no mesmo problema. estou comparando distâncias de agrupamento via distância de Mahalanobis, que requer matriz de covariância inversa. no entanto, no meu caso, estou recebendo o mesmo erro. então eu tentei decomposição em valores singulares, mas desta vez todas as distâncias são iguais 1.4: D eu não posso descobrir isso
MonsterMMORPG