OKPEDIA MATRICI

Come calcolare la Singular Value Decomposition (SVD) di una matrice

Quando si parla di SVD si intende la decomposizione ai valori singolari di una matrice. Qualsiasi matrice algebrica è equivalente al prodotto di altre tre matrici, opportunamente calcolate seguendo il procedimento SVD. In pratica, se hai una matrice A di dimensioni mxn ( m colonne, n righe ), la forma SVD equivalente è il prodotto di una matrice USVT. La tabella U ha un dimensione mxm, la matrice S è di dimensioni mxn ed è di pari dimensioni rispetto alla matrice A, mentre la matrice VT è di dimensioni nxn.

Per comprendere come ottenere le tre tabelle SVD ti consiglio di partire da un esempio pratico. Prendi una semplice tabella, una tabella quadrata di piccole dimensioni ( 2x2 ) come la seguente:

una matrice di esempio di dimensioni 2x2

A questo punto, prima di iniziare, calcola la matrice trasposta AT. Come vedrai ci servirà per calcolare le matrici SVD. Una matrice trasposta si ottiene sostituendo le righe con le colonne della matrice A.

come calcolare la matrice trasposta

Moltiplica la matrice trasposta AT per la matrice di origine A, ottenendo come risultato la matrice ATA.

La matrice ATA ti permette di calcolare gli autovalori, come prima cosa devi calcolare il polinomio caratteristico della matrice ATA. Puoi ottenere il polinomio caratteristico calcolando la differenza tra la matrice ATA e una matrice identica Id moltiplicata per una variabile incognita λ. Fai attenzione, per matrice identica ( o identità ) si intende una matrice con il valore uno sulla diagonale e zero in tutto il resto.

come calcolare la differenza con la matrice identica

Il determinante della matrice ATA-λId ti consente di ottenere il polinomio caratteristico della matrice.

come calcolare il polinomio caratteristico

A cosa serve il polinomio caratteristico? Ti consente di calcolare gli autovalori della matrice. Poni a zero il polinomio e trova i valori della variabile λ che soddisfano l'equazione. Dopo qualche semplice passaggio algebrico, ottieni un'equazione di secondo grado che viene risolta con i valori λ=2 e λ=8 detti autovalori.

Gli autovalori λ=2 e λ=8 ti sono molto utili, poiché ti consentono di ottenere la matrice Σ i cui componenti sono uguali alla radice degli autovalori della matrice. Ti ricordo che la matrice Σ ha una dimensione pari alla matrice A, lo stesso numero mxn di colonne (m) e di righe (n), e i suoi elementi occupano soltanto la diagonale mentre tutti gli altri sono pari a zero.

Gli autovalori ti consentono anche di ottenere un'altra matrice SVD ma prima devi svolgere qualche calcolo aggiuntivo. Ora conosci gli autovalori ( λ=2 e λ=8 ) ma non conosci ancora gli autovettori di ATA. Torna alla matrice ATA-λId e trasforma le due righe in due equazioni pari a zero. I valori della matrice sulla prima colonna moltiplicano la variabile x mentre quelli della seconda colonna la variabile y.

come calcolare gli autovettori

Per calcolare il primo autovettore, sostituisci λ=2 e trova una soluzione al sistema di equazioni. Risolvendo il sistema di equazioni puoi trovare i valori delle coordinate x e y, ossia i valori del primo autovettore V1.

Per calcolare il secondo autovettore devi ricostruire il sistema di equazioni a partire dall'altro autovalore, ossia λ=8 e trovare le altre coordinate x, y. Hai trovato il secondo autovettore V2.

come calcolare il secondo autovettore

Ricapitolando, hai trovato i due autovettori V1 e V2 che ti sono utili per scrivere la matrice VT. Per calcolare VT devi prima normalizzare gli autovalori. In pratica, devi dividere ogni elemento dei vettori V1 e V2 per la rispettiva norma. La norma è la radice quadrata della somma del quadrato dei valori degli elementi.

come normalizzare il vettore

Ripeti la stessa operazione per normalizzare l'autovettori V2 per la rispettiva norma.

Con i due vettori normalizzati V1 e V2 puoi finalmente ottenere la matrice VT.

A questo punto ti manca soltanto una matrice per completare la SVD. Puoi calcolarla seguendo lo stesso procedimento fin qui svolto ma a partire AAT anziché dalla ATA. Puoi però raggiungere lo stesso risultato utilizzando questa semplice regola:

Il primo autovettore (u1) della tabella U è determinato dal prodotto della matrice A con l'autovettore v1 moltiplicato per il reciproco del primo autovalore. Detta così può sembrare difficile ma, sicuramente, qualsiasi tuo dubbio sarà chiarito guardando il procedimento di seguente calcolo in cui ho svolto ogni singolo passaggio algebrico passo dopo passo:

Hai trovato il primo autovettore u1 della matrice U. Utilizzando lo stesso metodo puoi calcolare anche l'altro autovettore u2. Nella figura che segue ho omesso di svolgere tutti i passaggi nel dettaglio ma, guardando il precedente esempio, dovresti aver già capito il funzionamento.

Hai calcolato entrambi gli autovettori u1 e u2 di U che, in questo caso, è una matrice quadrata. Mettendo in colonna i due autovettori puoi scrivere la matrice U per intero.

Con la matrice U hai ottenuto tutte le componenti della forma UΣVT equivalente alla matrice A che riscrivo qui di seguito per concludere questo esercizio.

la matrice SVD completa

Questo tutorial potrà sembrare banale a chi sa già svolgere questi calcoli e possiede sufficiente dimestichezza con il calcolo algebrico. Ho svolto questa esercitazione pensando a chi si trova per la prima volta dinnanzi al calcolo della decomposizione dei valori singolari ( SVD ) di una matrice, magari con qualche lacuna in algebra vettoriale, per potergli spiegare, passo dopo passo, il funzionamento. Una volta compreso lo svolgimento di un esempio pratico, diventa più semplice studiare e capire la teoria.

https://www.okpedia.it/come_calcolare_la_singular_value_decomposition_svd_di_una_matrice


Segnala un errore o invia un suggerimento per migliorare la pagina


Le matrici

Tool didattici online