Que faire lorsque la matrice de covariance de l'échantillon n'est pas inversible?

12

Je travaille sur certaines techniques de regroupement, où pour un groupe donné de vecteurs de dimension d, je suppose une distribution normale multivariée et je calcule le vecteur moyen d'échantillon d et la matrice de covariance de l'échantillon.

Ensuite , lorsque vous essayez de décider si un nouveau vecteur invisible, d dimensions appartient à ce groupe je vérifie sa distance par cette mesure:

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

Ce qui me oblige à calculer l'inverse de la matrice de covariance σ X . Mais étant donné certains échantillons, je ne peux pas garantir que la matrice de covariance sera inversible, que dois-je faire dans le cas contraire?σ^X

Merci

Aly
la source
cela dépend de ce qui fait que la matrice n'est pas inversible. Les causes possibles peuvent être (a) l'échantillon que vous avez utilisé pour calculer la matrice de covariance est trop petit (b) votre échantillon est de taille suffisante mais son membre n'est pas tiré d'une distribution continue de sorte qu'une partie de la colonne / ligne de votre échantillon se répète .
user603
Je pense que la taille de l'échantillon devient
trop
@ Anony-Mousse Je me suis assuré d'utiliser maintenant au moins autant d'échantillons que de dimensions, sinon la matrice sera déficiente en rang. Jusqu'à présent, aucun problème, mais je pense qu'avec l'échantillon de covariance, il peut être non inversible?
Aly
1
Pourquoi devrait-il toujours être inversible? Avec une seule observation, la moyenne est égale à cette observation, donc la covariance de l'échantillon est la matrice zéro, qui ne s'inversera pas. Je pense qu'une matrice doit être de rang complet pour être inversée, et elle ne sera de rang complet que si le nombre d'échantillons> = la dimensionMMT
Korone
1
@corone en fait un strict>
user603

Réponses:

14

Si la dimensionnalité de vos échantillons est inférieure à la dimensionnalité de l'espace vectoriel, des matrices singulières peuvent apparaître. Si vous avez moins d'échantillons que (lorsque d est votre dimensionnalité), cette situation se produira même nécessairement: k + 1 échantillons s'étendent au plus sur un hyperplan d dimensionnel. Étant donné un échantillon aussi petit, vous ne pouvez évidemment pas calculer une variance dans l'espace orthogonal.d+1dk+1d

C'est pourquoi il est courant de ne pas utiliser l'ACP littérale, mais plutôt d'effectuer une décomposition en valeurs singulières , qui peut être utilisée pour calculer le pseudoinverse d'une matrice. Si la matrice est inversible, le pseudoinverse sera l'inverse.

Cependant, si vous voyez des matrices non inversibles, il y a de fortes chances que votre distance par rapport au cluster soit vide de sens si le vecteur est en dehors de l'hyperplan que le cluster représente, car vous ne connaissez pas la variance dans l'espace orthogonal (vous pouvez penser à cette variance comme 0!) SVD peut calculer le pseudoinverse, mais les "variances" ne seront toujours pas déterminées par vos données.

y=xxy

De plus, selon la façon dont vous calculez la matrice de covariance, vous pourriez rencontrer des problèmes numériques en raison d'une annulation catastrophique. La solution de contournement la plus simple consiste à toujours centrer les données en premier, pour obtenir une moyenne nulle.

A QUIT - Anony-Mousse
la source
désolé d'avoir répondu ici, mais je travaille sur le même problème. je compare les distances de regroupement via la distance de Mahalanobis qui nécessite une matrice de covariance inverse. mais dans mon cas, je reçois la même erreur. j'ai donc essayé SingularValueDecomposition mais cette fois toutes les distances sont égales à 1.4: D je ne peux pas le comprendre
MonsterMMORPG