Vai al contenuto principale

Eigendecomposition: guida per principianti alla fattorizzazione di matrici

Esplora i fondamenti dell’eigendecomposition e le sue applicazioni in data science e machine learning.
· 7 min leggi

Scopri con l'IA

Le operazioni sulle matrici sono al centro dei calcoli in machine learning, analisi statistica e calcolo scientifico. Per esempio, molte operazioni in statistica richiedono l’inversione, la diagonalizzazione e l’esponenziazione di matrici. Tali operazioni sono costose dal punto di vista computazionale, ma esistono metodi per scomporre una matrice in un insieme più piccolo di matrici e aumentare così l’efficienza del calcolo. Queste operazioni sono generalmente indicate come fattorizzazione di matrici e, a seconda della natura delle matrici più piccole ottenute, hanno nomi specifici. 

L’eigendecomposition è un metodo di fattorizzazione in cui autovalori e autovettori costituiscono gli elementi di tali matrici. Comprendere l’eigendecomposition fornisce a ingegneri di machine learning e data scientist le basi matematiche per capire metodi come la riduzione della dimensionalità e l’approssimazione di matrici. Dopo aver letto questo articolo, segui il corso Linear Algebra for Data Science in R per imparare i temi matematici fondamentali che stanno alla base della data science.

Che cos’è l’eigendecomposition?

L’eigendecomposition è un metodo di fattorizzazione in cui una matrice quadrata viene scomposta in tre matrici moltiplicative. Tale fattorizzazione si chiama eigendecomposition perché gli elementi delle matrici sono gli autovalori e gli autovettori della matrice quadrata originale. Matematicamente, una matrice quadrata A può essere fattorizzata in tre matrici tali che:

Equazione dell’eigendecomposition

dove P è la matrice degli autovettori di A, D è una matrice diagonale i cui elementi non nulli sono gli autovalori ordinati della matrice, e P-1 è l’inversa della matrice P.

La matematica dietro l’eigendecomposition

Mostrerò con un esempio le operazioni matematiche per ricavare analiticamente l’eigendecomposition di una matrice quadrata. La nostra matrice di esempio è la matrice quadrata 2x2 A. Se ti blocchi sulle tecniche per combinare matrici, segui il nostro corso Linear Algebra for Data Science in R così da prendere confidenza con il funzionamento della moltiplicazione tra matrici. Esempio di matrice quadrata

Per eseguire l’eigendecomposition sulla matrice A, dobbiamo ricavare gli autovalori e i corrispondenti autovettori di questa matrice quadrata. Possiamo usare il polinomio caratteristico della matrice per calcolare autovalori e autovettori di questa matrice. Se questa parte non ti è familiare, leggi prima Characteristic Equation: Everything You Need to Know for Data Science. 

Ora, per definizione di polinomio caratteristico, abbiamo:

Polinomio caratteristico

Il polinomio caratteristico per la nostra matrice A è quindi pA(λ) = λ2 - 18λ + 56. Possiamo trovare le radici di questo polinomio e quindi ricavare gli autovalori ponendolo uguale a zero: 

Quindi, gli autovalori sono λ1 = 14 e λ1 = 4. Dagli autovalori possiamo ottenere gli autovettori di una matrice usando (A - λI)X = 0 per ciascun autovalore distinto:

Per λ1 = 14 inseriamo 14 e risolviamo il sistema omogeneo di equazioni:

Questo produce uno spazio proprio unidimensionale (cioè con un solo vettore di base). Eseguiamo lo stesso procedimento per λ1 = 4 e otteniamo:

Ora che abbiamo ottenuto autovalori e autovettori della matrice A, possiamo scrivere l’eigendecomposition di A come:

Eigendecomposition della matrice A

In cui abbiamo costruito P affiancando i due autovettori (cioè mettendoli uno accanto all’altro) e abbiamo collocato gli autovalori (in ordine decrescente) sulla diagonale della matrice D. 

Ovviamente possiamo eseguire l’eigendecomposition con un computer e un linguaggio di programmazione come Python o R. Ricorda che Python e R possono restituire autovettori normalizzati (su scala 0-1), cioè una base ortonormale. È importante tenerlo a mente quando si prova a ricostruire la matrice A da PDP-1 per fini di verifica.

Applicazioni dell’eigendecomposition nella data science

L’eigendecomposition svolge un ruolo importante nel machine learning e nella statistica. Nel machine learning, viene usata per la riduzione della dimensionalità, come nella PCA. In PCA cerchiamo nuove dimensioni (direzioni) per le coordinate originali ad alta dimensionalità che preservino la massima informazione. L’eigendecomposition della matrice rivela gli autovalori, e gli autovettori con autovalori più alti conservano più informazione e perciò sono designati come componenti principali dei dati.

Eseguire l’eigendecomposition in Python e R

Dopo aver imparato a eseguire l’eigendecomposition carta e penna, possiamo ora eseguirla con un computer e un linguaggio di programmazione, come Python e R, in poche righe. Ricorda che gli autovettori calcolati in Python e R sono normalizzati (rispetto a linguaggi o pacchetti di programmazione simbolica, come SymPy in Python).

Eigendecomposition in Python

Per eseguire l’eigendecomposition in Python, è necessario installare e importare il modulo NumPy nell’ambiente. Il seguente codice illustra come eseguirla in Python per la matrice quadrata non simmetrica A:

import numpy as np

A = np.array([[6,8], [2,12]]) 

eigVals, eigVecs = np.linalg.eig(A)

print(eigVals)
print(eigVecs)
[ 4. 14.]
[[-0.9701425  -0.70710678]
 [ 0.24253563 -0.70710678]]
 # Reconstruct the original matrix A
D = np.diag(eigVals)
A_reconstructed = eigVecs @ D @ np.linalg.inv(eigVecs)

print(A_reconstructed)
[[ 6.  8.]
 [ 2. 12.]]

Eigendecomposition in R

In R l’eigendecomposition può essere eseguita con la funzione integrata eigen() e, pertanto, non è necessario installare e importare un pacchetto per la scomposizione di matrici piccole. Il seguente codice in R esegue l’eigendecomposition sulla matrice A (R ordina gli autovalori in ordine decrescente, quindi l’ordine degli autovettori è diverso rispetto all’output di NumPy in Python):

A <- matrix(c(6,8,2,12), 2,2, byrow = TRUE)

print(A)

eDecomp <- eigen(A)
eigValues <- eDecomp$values
eigVectors <- eDecomp$vectors

print(eigValues)
print(eigVectors)
[1] 14  4
           [,1]       [,2]
[1,] -0.7071068 -0.9701425
[2,] -0.7071068  0.2425356
A_Reconstructed <- eigVectors %*% diag(eigValues) %*% (solve(eigVectors))

print(A_Reconstructed)
Show in New Window
     [,1] [,2]
[1,]    6    8
[2,]    2   12

Eigendecomposition vs. Singular Value Decomposition (SVD)

Eigendecomposition e SVD (Singular Value Decomposition) sono due importanti metodi di fattorizzazione di matrici usati nel machine learning e nel calcolo scientifico. Sebbene entrambi scompongano una matrice in tre matrici, presentano alcune differenze:

  • L’eigendecomposition è applicabile solo a matrici quadrate, mentre la SVD può essere applicata sia a matrici quadrate sia rettangolari.
  • Nella SVD, le matrici risultanti includono valori singolari, mentre nell’eigendecomposition includono autovalori.
  • Poiché la SVD può gestire matrici non quadrate, ha applicazioni più ampie rispetto all’eigendecomposition.

Conclusione

In questo breve articolo di algebra lineare abbiamo visto cos’è l’eigendecomposition, come eseguirla a mano e come calcolarla con Python e R. Abbiamo anche visto come viene usata in algoritmi di machine learning come la PCA. 

Se sei molto interessato a diventare data analyst o data scientist, ti consiglio vivamente di seguire il nostro corso Linear Algebra for Data Science in R per costruire solide basi in matematica applicata e programmazione. Inoltre, iscriviti al nostro percorso completo Machine Learning Scientist in Python per esplorare apprendimento supervisionato, non supervisionato e deep learning. 

Vahab Khademi

Autore

Vahab Khademi

La mia formazione è in matematica e statistica. Ho una vasta esperienza nella modellizzazione statistica e nelle applicazioni di machine learning. Inoltre, faccio ricerca sulla matematica del ML.

Domande frequenti sull’eigendecomposition

Che cos’è l’eigendecomposition?

L’eigendecomposition è il processo di scomposizione di una matrice quadrata nei suoi autovalori e autovettori.

Quando è possibile l’eigendecomposition?

L’eigendecomposition è possibile solo per matrici quadrate. Tuttavia, non tutte le matrici quadrate possono essere scomposte in questo modo. Una matrice deve essere diagonalizzabile, il che in genere significa che deve avere un insieme completo di autovettori linearmente indipendenti. Per matrici che non soddisfano questo criterio (come le matrici non diagonalizzabili o difettose), l’eigendecomposition non è possibile nel senso usuale.

Argomenti

Correlato