Was tun, wenn die Probenkovarianzmatrix nicht invertierbar ist?

12

Ich arbeite an einigen Clustering-Techniken, bei denen ich für einen bestimmten Cluster von d-dimensionalen Vektoren eine multivariate Normalverteilung annehme und den d-dimensionalen Mittelwertvektor der Stichprobe und die Kovarianzmatrix der Stichprobe berechne.

Wenn ich dann versuche zu entscheiden, ob ein neuer, unsichtbarer, d-dimensionaler Vektor zu diesem Cluster gehört, überprüfe ich seine Entfernung über dieses Maß:

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

Dafür muss ich die Inverse der Kovarianzmatrix berechnen . Bei einigen Beispielen kann ich jedoch nicht garantieren, dass die Kovarianzmatrix invertierbar ist. Was soll ich tun, wenn dies nicht der Fall ist?σ^X

Vielen Dank

Aly
quelle
Dies hängt davon ab, warum die Matrix nicht invertierbar ist. Mögliche Ursachen können sein: (a) Die Stichprobe, die Sie zur Berechnung der Kovarianzmatrix verwendet haben, ist zu klein. (B) Ihre Stichprobe ist ausreichend groß, aber ihr Element wird nicht aus einer kontinuierlichen Verteilung gezogen, sodass sich ein Teil der Spalte / Zeile Ihrer Stichprobe wiederholt .
user603
Ich denke, die Stichprobengröße wird zu klein
Aly
@ Anony-Mousse Ich habe sichergestellt, dass ich jetzt mindestens so viele Samples wie Dimensionen verwende, da sonst die Matrix einen Rangmangel aufweist. Bisher keine Probleme, aber ich denke mit der Stichproben-Kovarianz kann es nicht invertierbar sein?
Aly
1
Warum sollte immer invertierbar sein? Bei einer einzelnen Beobachtung ist der Mittelwert gleich dieser Beobachtung, sodass die Stichproben-Kovarianz die Nullmatrix ist, die sich nicht invertiert. Ich denke, eine Matrix muss den vollen Rang haben, um invertiert zu werden, und sie wird nur den vollen Rang haben, wenn die Anzahl der Proben> = die Dimension istMMT
Corone
1
@corone macht das zu einem strengen>
user603

Antworten:

14

Wenn die Dimensionalität Ihrer Samples geringer ist als die Dimensionalität des Vektorraums, können singuläre Matrizen entstehen. Wenn Sie weniger Abtastwerte als (wenn Ihre Dimensionalität ist), tritt diese Situation sogar notwendigerweise auf: Abtastwerte umfassen höchstens eine dimensionale Hyperebene. Bei einer so kleinen Stichprobe können Sie offensichtlich keine Varianz im orthogonalen Raum berechnen.d+1dk+1d

Aus diesem Grund wird häufig keine wörtliche PCA verwendet, sondern eine Singularwertzerlegung durchgeführt , mit der die Pseudoinverse einer Matrix berechnet werden kann. Wenn die Matrix invertierbar ist, ist die Pseudoinverse die Inverse.

Wenn Sie jedoch nicht invertierbare Matrizen sehen, ist Ihre Entfernung zum Cluster möglicherweise bedeutungslos, wenn sich der Vektor außerhalb der Hyperebene befindet, die der Cluster darstellt, da Sie die Varianz im orthogonalen Raum nicht kennen (Sie können sich vorstellen) Diese Varianz als 0!) SVD kann die Pseudoinverse berechnen, aber die "Varianzen" werden immer noch nicht durch Ihre Daten bestimmt.

In diesem Fall sollten Sie wahrscheinlich zuerst eine globale Dimensionsreduktion durchgeführt haben. Das Erhöhen der Stichprobengröße hilft nur, wenn Sie tatsächlich nicht redundante Dimensionen haben: Unabhängig davon, wie viele Stichproben Sie aus einer Verteilung mit , ist die Matrix immer nicht invertierbar und Sie können die Abweichung nicht beurteilen in Bezug auf eine Standardabweichung (die 0 ist).y=xxy

Abhängig davon, wie Sie die Kovarianzmatrix berechnen, können außerdem aufgrund einer katastrophalen Stornierung numerische Probleme auftreten. Die einfachste Problemumgehung besteht darin, die Daten immer zuerst zu zentrieren, um den Mittelwert Null zu erhalten.

Hat aufgehört - Anony-Mousse
quelle
Es tut mir leid, dass ich hier geantwortet habe, aber ich arbeite an demselben Problem. Ich vergleiche Clustering-Entfernungen über Mahalanobis-Entfernungen, die eine inverse Kovarianzmatrix erfordern. In meinem Fall erhalte ich jedoch den gleichen Fehler.
Also habe