Cosa fare quando la matrice di covarianza del campione non è invertibile?


12

Sto lavorando ad alcune tecniche di clustering, in cui per un determinato cluster di vettori di dimensione D presumo una distribuzione normale multivariata e calcolo il vettore medio d-dimensionale del campione e la matrice di covarianza del campione.

Quindi, quando provo a decidere se un nuovo vettore invisibile, d-dimensionale appartiene a questo cluster, sto controllando la sua distanza tramite questa misura:

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

Il che mi richiede di calcolare l'inverso della matrice di covarianza . Ma dati alcuni campioni non posso garantire che la matrice di covarianza sia invertibile, cosa devo fare nel caso in cui non lo sia?σ^X

Grazie


dipende da cosa sta facendo sì che la matrice non sia invertibile. Le possibili cause possono essere (a) il campione utilizzato per calcolare la matrice di covarianza è troppo piccolo (b) il campione è di dimensioni sufficienti ma il suo membro non viene estratto da una distribuzione continua in modo che parte della colonna / riga della ripetizione del campione .
user603

Penso che la dimensione del campione diventi
troppo

@ Anony-Mousse Mi sono assicurato che ora sto usando almeno tanti campioni quante dimensioni, altrimenti la matrice sarà carente. Finora nessun problema, ma penso che con la covarianza del campione possa essere non invertibile?
Aly,

1
Perché dovrebbe essere sempre invertibile? Con una singola osservazione la media è uguale a quella osservazione, quindi la covarianza del campione è la matrice zero, che non si inverte. Penso che una matrice debba essere di rango intero per essere invertita, e sarà di rango massimo solo se il numero di campioni> = la dimensioneMMT
Korone,

1
@corone lo rende rigoroso>
user603

Risposte:


14

Se la dimensionalità dei campioni è inferiore alla dimensionalità dello spazio vettoriale, possono sorgere matrici singolari. Se hai meno campioni di (quando d è la tua dimensionalità), questa situazione si presenterà anche necessariamente: k + 1 campioni si estendono al massimo in un iperpiano di dimensione d . Dato un campione così piccolo, ovviamente non è possibile calcolare una varianza nello spazio ortogonale.d+1dk+1d

Questo è il motivo per cui è comune non utilizzare la PCA letterale, ma invece eseguire una decomposizione di valore singolare , che può essere utilizzata per calcolare la pseudoinverso di una matrice. Se la matrice è invertibile, lo pseudoinverso sarà l'inverso.

Tuttavia, se vedi matrici non invertibili, è probabile che la distanza dal cluster sia insignificante se il vettore si trova all'esterno dell'iperpiano che il cluster replica, perché non conosci la varianza nello spazio ortogonale (puoi pensare a questa varianza come 0!) SVD può calcolare lo pseudoinverso, ma le "varianze" non saranno ancora determinate dai tuoi dati.

y=xxy

Inoltre, a seconda di come si calcola la matrice di covarianza, è possibile che si verifichino problemi numerici a causa della cancellazione catastrofica. La soluzione più semplice è centrare sempre i dati per primi, per ottenere zero media.


scusate la risposta qui, ma sto lavorando allo stesso problema. sto confrontando le distanze di raggruppamento tramite la distanza di Mahalanobis che richiede una matrice di covarianza inversa. tuttavia nel mio caso sto riscontrando lo stesso errore. così ho provato SingularValueDecomposition ma questa volta tutte le distanze sono uguali 1.4: D non riesco a capirlo
MonsterMMORPG
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.