Principal Component Analysis (PCA)
L'analisi delle componenti principali (PCA) proietta i dati sulle direzioni ortogonali che catturano la maggior parte della varianza. Scopri come funziona, come scegliere k, le applicazioni e consulta il codice.
L'analisi delle componenti principali (PCA) è una tecnica lineare di riduzione della dimensionalità che riformula i dati sotto forma di nuove variabili non correlate, chiamate componenti principali, ordinate in base alla quantità di varianza dei dati catturata da ciascuna. Mantenendo solo le prime componenti, si comprimono molte caratteristiche correlate in poche, preservando la maggior parte delle informazioni. Karl Pearson introdusse il metodo nel 1901 e Harold Hotelling lo sviluppò ulteriormente e gli diede un nome nel 1933. La PCA è una tecnica non supervisionata che ignora le etichette e funge da passaggio standard di preelaborazione dei dati, da metodo rapido per visualizzare dati ad alta dimensionalità in due o tre dimensioni e da riferimento per la compressione e la rimozione del rumore nell'apprendimento automatico.
Come funziona PCA#
La PCA centra innanzitutto ogni caratteristica sottraendone la media. La prima componente principale è la direzione lungo la quale i dati centrati variano maggiormente; ogni componente successiva indica la direzione con la maggiore varianza residua, ortogonale a tutte le precedenti. Le componenti sono gli autovettori della matrice di covarianza dei dati, e gli autovalori corrispondenti sono le varianze lungo tali direzioni; le librerie calcolano entrambi mediante una decomposizione ai valori singolari (SVD) dei dati centrati, numericamente più stabile rispetto al calcolo della matrice di covarianza. La proiezione dei dati sulle prime k componenti produce la rappresentazione ridotta, e riportarla nello spazio originale ricostruisce un'approssimazione dei dati iniziali. Tra tutte le proiezioni lineari su k dimensioni, quella della PCA produce il minore errore quadratico di ricostruzione.
La varianza dipende dalle unità di misura, quindi le caratteristiche misurate su scale diverse, come il reddito in dollari e l'età in anni, vengono prima standardizzate; in caso contrario, la caratteristica con l'intervallo numerico più ampio domina la prima componente. Il numero di componenti k si sceglie di solito in base al rapporto di varianza spiegata, mantenendo componenti finché la loro quota cumulativa di varianza non raggiunge un obiettivo come il 95%, oppure individuando il gomito nel grafico scree della varianza per componente.
La PCA di scikit-learn accetta direttamente un obiettivo di varianza. Questo esempio comprime immagini 8×8 di cifre scritte a mano:
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
# 1,797 handwritten digits, each an 8x8 image flattened to 64 pixel values
X, _ = load_digits(return_X_y=True)
# Keep the fewest components that explain 95% of the variance
pca = PCA(n_components=0.95)
X_reduced = pca.fit_transform(X)
print(f"{X.shape[1]} features -> {pca.n_components_} components")
print(f"First two components: {pca.explained_variance_ratio_[:2].sum():.1%} of the variance")Ventinove componenti conservano il 95% della varianza dei 64 pixel, riducendo di oltre la metà la dimensione dell'input; le prime due componenti da sole ne conservano il 28,5%. La varianza si concentra perché i pixel vicini sono fortemente correlati e quelli lungo i bordi sinistro e destro delle immagini variano pochissimo.
Limiti#
La PCA individua solo strutture lineari, quindi i dati che giacciono su una superficie curva richiedono più componenti della loro dimensionalità effettiva. Ogni componente combina tutte le caratteristiche originali, rendendo difficile interpretare le componenti, e le distanze al quadrato permettono a pochi valori anomali di influenzarle. Anche un’elevata varianza non equivale a utilità: una direzione a bassa varianza può contenere il segnale che separa due classi, quindi scartarla può penalizzare un classificatore anche se si perde poca varianza. Ridurre molte caratteristiche a poche è comunque utile per affrontare la maledizione della dimensionalità, per cui ai modelli servono molti più campioni per generalizzare man mano che cresce il numero di caratteristiche, e limita l’overfitting quando le caratteristiche sono numerose e i campioni pochi.
PCA per gli embedding nella computer vision#
I modelli di computer vision descrivono ogni immagine o oggetto con un embedding, un vettore di centinaia di numeri, e la PCA è un primo passaggio comune per visualizzare, raggruppare o comprimere questi vettori. I modelli YOLO26 restituiscono un embedding per immagine tramite model.embed(); proiettando questi vettori sulle prime due componenti principali si ottiene una rapida mappa lineare di come un modello addestrato su misura separa le classi. Ridurre gli embedding memorizzati a un numero inferiore di dimensioni riduce anche l’indice di un database vettoriale e velocizza la ricerca vettoriale.
Applicazioni#
- Riconoscimento facciale: Il metodo delle eigenfaces di Turk e Pentland (1991) rappresentava ogni volto tramite le sue coordinate sulle componenti principali di un insieme di immagini di volti e riconosceva le persone confrontando tali coordinate.
- Rilevamento delle anomalie: Il monitoraggio dei processi industriali adatta una PCA ai dati dei sensori raccolti durante il normale funzionamento e attiva un allarme quando una nuova lettura viene ricostruita male o si discosta molto lungo le componenti mantenute.
- Genetica delle popolazioni: La PCA dei dati genotipici riassume le ascendenze e, in uno studio del 2008 su 1.387 europei, le prime due componenti hanno riprodotto una mappa riconoscibile dell’Europa.
- Rischio sui tassi d’interesse: Le variazioni della curva dei rendimenti obbligazionari sono dominate da tre componenti che gli analisti chiamano livello, pendenza e curvatura, quindi i modelli di rischio ne monitorano tre valori invece di ogni scadenza.
PCA e tecniche correlate#
- t-SNE e UMAP: Metodi non lineari pensati per la visualizzazione, che preservano i vicinati locali e rendono più evidenti le separazioni tra cluster, mentre le distanze tra cluster lontani perdono significato. t-SNE di Scikit-learn non dispone di una trasformazione per nuovi punti, mentre una PCA adattata proietta nuovi dati con una sola moltiplicazione di matrici.
- Autoencoder: Reti neurali che comprimono e ricostruiscono i dati e possono apprendere strutture non lineari. Un autoencoder lineare addestrato sull’errore quadratico apprende lo stesso sottospazio della PCA.
- Selezione ed estrazione delle caratteristiche: La selezione delle caratteristiche mantiene un sottoinsieme delle colonne originali, che restano interpretabili, mentre la PCA, un classico metodo di estrazione delle caratteristiche, crea nuove caratteristiche combinandole tutte.
- Analisi discriminante lineare (LDA): Una tecnica correlata supervisionata che sceglie le direzioni che massimizzano la separazione tra le classi invece della varianza totale e produce al massimo una componente in meno rispetto al numero di classi.










