¿Qué hacer cuando la matriz de covarianza de la muestra no es invertible?

12

Estoy trabajando en algunas técnicas de agrupamiento, donde para un grupo dado de vectores de dimensión d supongo una distribución normal multivariada y calculo el vector medio d-dimensional de la muestra y la matriz de covarianza de la muestra.

Luego, cuando trato de decidir si un nuevo vector d-dimensional invisible, pertenece a este grupo, estoy verificando su distancia a través de esta medida:

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

Lo que requiere que calcule el inverso de la matriz de covarianza . Pero dadas algunas muestras, no puedo garantizar que la matriz de covarianza sea invertible, ¿qué debo hacer en caso de que no lo sea?σ^X

Gracias

Aly
fuente
depende de lo que está causando que la matriz no sea invertible. Las causas posibles pueden ser (a) la muestra que usó para calcular la matriz de covarianza es demasiado pequeña (b) su muestra tiene un tamaño suficiente pero su miembro no se extrae de una distribución continua de modo que parte de la columna / fila de su muestra se repita .
usuario603
Creo que el tamaño de la muestra se vuelve pequeño
Aly
@ Anony-Mousse Me he asegurado de que ahora estoy usando al menos tantas muestras como dimensiones, de lo contrario, la matriz tendrá un rango deficiente. Hasta ahora no hay problemas, pero creo que con la covarianza de la muestra puede ser no invertible.
Aly
1
¿Por qué siempre debe ser invertible? Con una sola observación, la media es igual a esa observación, por lo que la covarianza de la muestra es la matriz cero, que no se invertirá. Creo que una matriz tiene que ser de rango completo para ser invertida, y solo será de rango completo si el número de muestras> = la dimensiónMMT
Korone
1
@corone hace que sea un estricto>
user603

Respuestas:

14

Si la dimensionalidad de sus muestras es menor que la dimensionalidad del espacio vectorial, pueden surgir matrices singulares. Si tiene menos muestras que (cuando es su dimensionalidad), esta situación incluso se presentará necesariamente: muestras abarcan como máximo un hiperplano dimensional. Dada una muestra tan pequeña, obviamente no puede calcular una varianza en el espacio ortogonal.d+1dk+1d

Es por eso que es común no usar PCA literal, sino realizar una descomposición de valores singulares , que puede usarse para calcular el pseudoinverso de una matriz. Si la matriz es invertible, el pseudoinverso será el inverso.

Sin embargo, si está viendo matrices no invertibles, lo más probable es que su distancia desde el grupo no tenga sentido si el vector está fuera del hiperplano que el grupo repite, porque no conoce la varianza en el espacio ortogonal (puede pensar en esta variación como 0!) SVD puede calcular el pseudoinverso, pero las "variaciones" aún no serán determinadas por sus datos.

En este caso, probablemente debería haber estado haciendo primero la reducción de la dimensionalidad global. Aumentar el tamaño de la muestra solo ayudará cuando tenga dimensiones no redundantes: no importa cuántas muestras extraiga de una distribución con , la matriz siempre será no invertible y no podrá juzgar la desviación. con respecto a una desviación estándar (que es 0).y=xxy

Además, dependiendo de cómo calcule la matriz de covarianza, es posible que se encuentre con problemas numéricos debido a una cancelación catastrófica. La solución más simple es centrar siempre los datos primero, para obtener la media cero.

HA SALIDO - Anony-Mousse
fuente
lo siento por responder aquí, pero estoy trabajando en el mismo problema. Estoy comparando distancias de agrupamiento a través de la distancia de Mahalanobis que requiere una matriz de covarianza inversa. Sin embargo, en mi caso obtengo el mismo error. así que probé SingularValueDecomposition pero esta vez todas las distancias son iguales 1.4: D no puedo entenderlo
MonsterMMORPG