logo

Analisi delle componenti principali (PCA)

All’aumentare del numero di caratteristiche o dimensioni in un set di dati, la quantità di dati richiesti per ottenere un risultato statisticamente significativo aumenta in modo esponenziale. Ciò può portare a problemi come l'adattamento eccessivo, l'aumento del tempo di calcolo e la ridotta accuratezza dei modelli di apprendimento automatico: questa è nota come la maledizione dei problemi di dimensionalità che sorgono quando si lavora con dati ad alta dimensionalità.

All'aumentare del numero di dimensioni, il numero di possibili combinazioni di caratteristiche aumenta in modo esponenziale, il che rende difficile dal punto di vista computazionale ottenere un campione rappresentativo dei dati e diventa costoso eseguire attività come il clustering o la classificazione perché diventa. Inoltre, alcuni apprendimento automatico gli algoritmi possono essere sensibili al numero di dimensioni, richiedendo più dati per ottenere lo stesso livello di precisione dei dati di dimensioni inferiori.



Per affrontare il maledizione della dimensionalità , Ingegneria delle funzionalità vengono utilizzate tecniche che includono la selezione e l'estrazione delle funzionalità. Riduzione della dimensionalità è un tipo di tecnica di estrazione delle caratteristiche che mira a ridurre il numero di caratteristiche di input conservando la maggior parte possibile delle informazioni originali.

In questo articolo discuteremo una delle tecniche di riduzione della dimensionalità più popolari, ovvero l'analisi delle componenti principali (PCA).

Che cos'è l'analisi delle componenti principali (PCA)?

Analisi del componente principale (PCA) è stata introdotta dal matematico Karl Pearson nel 1901 . Funziona a condizione che mentre i dati in uno spazio dimensionale superiore vengono mappati sui dati in uno spazio dimensionale inferiore, la varianza dei dati nello spazio dimensionale inferiore dovrebbe essere massima.



  • Analisi delle componenti principali (PCA) è una procedura statistica che utilizza una trasformazione ortogonale che converte un insieme di variabili correlate in un insieme di variabili non correlate. La PCA è lo strumento più utilizzato nell'analisi esplorativa dei dati e nell'apprendimento automatico per modelli predittivi. Inoltre,
  • L'analisi delle componenti principali (PCA) è un apprendimento non supervisionato tecnica algoritmica utilizzata per esaminare le interrelazioni tra un insieme di variabili. È anche nota come analisi fattoriale generale in cui la regressione determina una linea di adattamento migliore.
  • L'obiettivo principale dell'analisi delle componenti principali (PCA) è ridurre la dimensionalità di un set di dati preservando i modelli o le relazioni più importanti tra le variabili senza alcuna conoscenza preliminare delle variabili target.

L'analisi delle componenti principali (PCA) viene utilizzata per ridurre la dimensionalità di un set di dati trovando un nuovo set di variabili, più piccolo del set di variabili originale, conservando la maggior parte delle informazioni del campione e utile per il regressione e classificazione di dati.

Analisi del componente principale

  1. L'analisi delle componenti principali (PCA) è una tecnica per la riduzione della dimensionalità che identifica un insieme di assi ortogonali, chiamati componenti principali, che catturano la varianza massima nei dati. Le componenti principali sono combinazioni lineari delle variabili originali nel set di dati e sono ordinate in ordine decrescente di importanza. La varianza totale catturata da tutti i componenti principali è uguale alla varianza totale nel set di dati originale.
  2. La prima componente principale cattura la maggior parte delle variazioni nei dati, ma la seconda componente principale cattura il massimo varianza questo è ortogonale al primo componente principale e così via.
  3. L'analisi delle componenti principali può essere utilizzata per diversi scopi, tra cui la visualizzazione dei dati, la selezione delle funzionalità e la compressione dei dati. Nella visualizzazione dei dati, la PCA può essere utilizzata per tracciare dati ad alta dimensione in due o tre dimensioni, facilitandone l'interpretazione. Nella selezione delle caratteristiche, la PCA può essere utilizzata per identificare le variabili più importanti in un set di dati. Nella compressione dei dati, la PCA può essere utilizzata per ridurre le dimensioni di un set di dati senza perdere informazioni importanti.
  4. Nell'analisi delle componenti principali, si presuppone che l'informazione sia contenuta nella varianza delle caratteristiche, ovvero quanto maggiore è la variazione in una caratteristica, maggiore è l'informazione trasportata dalla caratteristica.

Nel complesso, PCA è un potente strumento per l'analisi dei dati e può aiutare a semplificare set di dati complessi, rendendoli più facili da comprendere e da utilizzare.



Spiegazione passo passo della PCA (analisi delle componenti principali)

Passaggio 1: standardizzazione

Per prima cosa dobbiamo farlo standardizzare il nostro set di dati per garantire che ciascuna variabile abbia una media pari a 0 e una deviazione standard pari a 1.

Z = frac{X-mu}{sigma}

Qui,

  • muè la media delle caratteristiche indipendenti mu = sinistra { mu_1, mu_2, cdots, mu_m 
ight }
  • sigmaè il deviazione standard di caratteristiche indipendenti sigma = sinistra { sigma_1, sigma_2, cdots, sigma_m 
ight }

Passaggio 2: calcolo della matrice di covarianza

Covarianza misura la forza della variabilità congiunta tra due o più variabili, indicando quanto cambiano in relazione l'una all'altra. Per trovare la covarianza possiamo usare la formula:

cov(x1,x2) = frac{sum_{i=1}^{n}(x1_i-ar{x1})(x2_i-ar{x2})}{n-1}

Java è l'istanza di

Il valore della covarianza può essere positivo, negativo o zero.

  • Positivo: man mano che x1 aumenta, anche x2 aumenta.
  • Negativo: man mano che x1 aumenta, anche x2 diminuisce.
  • Zeri: nessuna relazione diretta

Passaggio 3: calcolare autovalori e autovettori della matrice di covarianza per identificare i componenti principali

Sia A una matrice quadrata nXn e X un vettore diverso da zero per il quale

AX = lambdaX

differenza tra un leone e una tigre

per alcuni valori scalari lambda. Poi lambdaè conosciuto come il autovalore della matrice A e X è noto come autovettore della matrice A per il corrispondente autovalore.

Può anche essere scritto come:

egin{aligned} AX-lambda X &= 0  (A-lambda I)X &= 0 end{aligned}

dove I sono la matrice identità della stessa forma della matrice A. E le condizioni di cui sopra saranno vere solo se (A - lambda I)sarà non invertibile (cioè matrice singolare). Questo significa,

|A - lambda I| = 0

Dall'equazione sopra, possiamo trovare gli autovalori lambda, e quindi l'autovettore corrispondente può essere trovato utilizzando l'equazione AX = lambdaX.

Come funziona l'analisi delle componenti principali (PCA)?

Pertanto, PCA utilizza una trasformazione lineare basata sulla conservazione della massima varianza nei dati utilizzando il minor numero di dimensioni. Implica i seguenti passaggi:

Python3

import> pandas as pd> import> numpy as np> # Here we are using inbuilt dataset of scikit learn> from> sklearn.datasets>import> load_breast_cancer> # instantiating> cancer>=> load_breast_cancer(as_frame>=>True>)> # creating dataframe> df>=> cancer.frame> # checking shape> print>(>'Original Dataframe shape :'>,df.shape)> # Input features> X>=> df[cancer[>'feature_names'>]]> print>(>'Inputs Dataframe shape :'>, X.shape)>
>
>

Produzione :

Original Dataframe shape : (569, 31) Inputs Dataframe shape : (569, 30)>

Ora applicheremo il primo passo che consiste nel standardizzare i dati e per questo dovremo prima calcolare la media e la deviazione standard di ciascuna caratteristica nello spazio delle caratteristiche.

Python3

# Mean> X_mean>=> X.mean()> # Standard deviation> X_std>=> X.std()> # Standardization> Z>=> (X>-> X_mean)>/> X_std>
>
>

IL covarianza La matrice ci aiuta a visualizzare quanto è forte la dipendenza di due funzionalità tra loro nello spazio delle funzionalità.

Python3

# covariance> c>=> Z.cov()> # Plot the covariance matrix> import> matplotlib.pyplot as plt> import> seaborn as sns> sns.heatmap(c)> plt.show()>
>
>

Produzione :

Ora calcoleremo il autovettori E autovalori per il nostro spazio di funzionalità che hanno un ottimo scopo nell'identificare i componenti principali per il nostro spazio di funzionalità.

Python3

eigenvalues, eigenvectors>=> np.linalg.eig(c)> print>(>'Eigen values: '>, eigenvalues)> print>(>'Eigen values Shape:'>, eigenvalues.shape)> print>(>'Eigen Vector Shape:'>, eigenvectors.shape)>
>
>

Produzione :

Eigen values:  [1.32816077e+01 5.69135461e+00 2.81794898e+00 1.98064047e+00  1.64873055e+00 1.20735661e+00 6.75220114e-01 4.76617140e-01  4.16894812e-01 3.50693457e-01 2.93915696e-01 2.61161370e-01  2.41357496e-01 1.57009724e-01 9.41349650e-02 7.98628010e-02  5.93990378e-02 5.26187835e-02 4.94775918e-02 1.33044823e-04  7.48803097e-04 1.58933787e-03 6.90046388e-03 8.17763986e-03  1.54812714e-02 1.80550070e-02 2.43408378e-02 2.74394025e-02  3.11594025e-02 2.99728939e-02] Eigen values Shape: (30,) Eigen Vector Shape: (30, 30)>

Ordinare gli autovalori in ordine decrescente e ordinare di conseguenza gli autovettori corrispondenti.

Python3

# Index the eigenvalues in descending order> idx>=> eigenvalues.argsort()[::>->1>]> # Sort the eigenvalues in descending order> eigenvalues>=> eigenvalues[idx]> # sort the corresponding eigenvectors accordingly> eigenvectors>=> eigenvectors[:,idx]>
>
>

La varianza spiegata è il termine che ci dà un'idea della quantità di varianza totale che è stata mantenuta selezionando le componenti principali invece dello spazio delle caratteristiche originali.

Python3

explained_var>=> np.cumsum(eigenvalues)>/> np.>sum>(eigenvalues)> explained_var>
>
>

Produzione :

array([0.44272026, 0.63243208, 0.72636371, 0.79238506, 0.84734274,  0.88758796, 0.9100953 , 0.92598254, 0.93987903, 0.95156881,  0.961366 , 0.97007138, 0.97811663, 0.98335029, 0.98648812,  0.98915022, 0.99113018, 0.99288414, 0.9945334 , 0.99557204,  0.99657114, 0.99748579, 0.99829715, 0.99889898, 0.99941502,  0.99968761, 0.99991763, 0.99997061, 0.99999557, 1. ])>

Determinare il numero di componenti principali

Qui possiamo considerare il numero di componenti principali di qualsiasi valore di nostra scelta oppure limitare la varianza spiegata. Qui sto considerando la varianza spiegata più che pari al 50%. Controlliamo quanti componenti principali entrano in questo.

Python3

n_components>=> np.argmax(explained_var>>=> 0.50>)>+> 1> n_components>
>
>

Produzione :

2>

Proiettare i dati sui componenti principali selezionati

  • Trova la matrice di proiezione, è una matrice di autovettori corrispondenti agli autovalori più grandi della matrice di covarianza dei dati. proietta il set di dati ad alta dimensione su un sottospazio a dimensione inferiore
  • Gli autovettori della matrice di covarianza dei dati sono chiamati assi principali dei dati e la proiezione delle istanze dei dati su questi assi principali è chiamata componenti principali.

Python3

# PCA component or unit matrix> u>=> eigenvectors[:,:n_components]> pca_component>=> pd.DataFrame(u,> >index>=> cancer[>'feature_names'>],> >columns>=> [>'PC1'>,>'PC2'>]> >)> # plotting heatmap> plt.figure(figsize>=>(>5>,>7>))> sns.heatmap(pca_component)> plt.title(>'PCA Component'>)> plt.show()>
>
>

Produzione :

  • Quindi, proiettiamo il nostro set di dati utilizzando la formula:

egin{aligned} Proj_{P_i}(u) &= frac{P_icdot u}u  &=P_icdot u end{aligned}

  • La riduzione della dimensionalità si ottiene quindi mantenendo solo quegli assi (dimensioni) che rappresentano la maggior parte della varianza e scartando tutti gli altri.

Trovare la proiezione in PCA

nat vs letto

Python3

# Matrix multiplication or dot Product> Z_pca>=> Z @ pca_component> # Rename the columns name> Z_pca.rename({>'PC1'>:>'PCA1'>,>'PC2'>:>'PCA2'>}, axis>=>1>, inplace>=>True>)> # Print the Pricipal Component values> print>(Z_pca)>
>
>

Produzione :

 PCA1 PCA2 0 9.184755 1.946870 1 2.385703 -3.764859 2 5.728855 -1.074229 3 7.116691 10.266556 4 3.931842 -1.946359 .. ... ... 564 6.433655 -3.573673 565 3.790048 -3.580897 566 1.255075 -1.900624 567 10.365673 1.670540 568 -5.470430 -0.670047 [569 rows x 2 columns]>

Gli autovettori della matrice di covarianza dei dati sono chiamati assi principali dei dati e la proiezione delle istanze dei dati su questi assi principali è chiamata componenti principali. La riduzione della dimensionalità si ottiene quindi mantenendo solo quegli assi (dimensioni) che rappresentano la maggior parte della varianza e scartando tutti gli altri.

PCA utilizzando Sklearn

Esistono diverse librerie in cui l'intero processo di analisi delle componenti principali è stato automatizzato implementandolo in un pacchetto come funzione e dobbiamo solo passare il numero di componenti principali che vorremmo avere. Sklearn è una di queste librerie che può essere utilizzata per PCA come mostrato di seguito.

Python3

# Importing PCA> from> sklearn.decomposition>import> PCA> # Let's say, components = 2> pca>=> PCA(n_components>=>2>)> pca.fit(Z)> x_pca>=> pca.transform(Z)> # Create the dataframe> df_pca1>=> pd.DataFrame(x_pca,> >columns>=>[>'PC{}'>.> >format>(i>+>1>)> >for> i>in> range>(n_components)])> print>(df_pca1)>
>
>

Produzione:

 PC1 PC2 0 9.184755 1.946870 1 2.385703 -3.764859 2 5.728855 -1.074229 3 7.116691 10.266556 4 3.931842 -1.946359 .. ... ... 564 6.433655 -3.573673 565 3.790048 -3.580897 566 1.255075 -1.900624 567 10.365673 1.670540 568 -5.470430 -0.670047 [569 rows x 2 columns]>

Possiamo trovare la corrispondenza dal risultato Z_pca sopra riportato che ha esattamente gli stessi valori.

Python3

# giving a larger plot> plt.figure(figsize>=>(>8>,>6>))> plt.scatter(x_pca[:,>0>], x_pca[:,>1>],> >c>=>cancer[>'target'>],> >cmap>=>'plasma'>)> # labeling x and y axes> plt.xlabel(>'First Principal Component'>)> plt.ylabel(>'Second Principal Component'>)> plt.show()>
>
>

Produzione:

stringa su json java

Python3

# components> pca.components_>
>
>

Produzione :

array([[ 0.21890244, 0.10372458, 0.22753729, 0.22099499, 0.14258969,  0.23928535, 0.25840048, 0.26085376, 0.13816696, 0.06436335,  0.20597878, 0.01742803, 0.21132592, 0.20286964, 0.01453145,  0.17039345, 0.15358979, 0.1834174 , 0.04249842, 0.10256832,  0.22799663, 0.10446933, 0.23663968, 0.22487053, 0.12795256,  0.21009588, 0.22876753, 0.25088597, 0.12290456, 0.13178394],  [-0.23385713, -0.05970609, -0.21518136, -0.23107671, 0.18611302,  0.15189161, 0.06016536, -0.0347675 , 0.19034877, 0.36657547,  -0.10555215, 0.08997968, -0.08945723, -0.15229263, 0.20443045,  0.2327159 , 0.19720728, 0.13032156, 0.183848 , 0.28009203,  -0.21986638, -0.0454673 , -0.19987843, -0.21935186, 0.17230435,  0.14359317, 0.09796411, -0.00825724, 0.14188335, 0.27533947]])>

Vantaggi dell'analisi delle componenti principali

  1. Riduzione della dimensionalità : L'analisi delle componenti principali è una tecnica popolare utilizzata per riduzione della dimensionalità , che è il processo di riduzione del numero di variabili in un set di dati. Riducendo il numero di variabili, PCA semplifica l'analisi dei dati, migliora le prestazioni e semplifica la visualizzazione dei dati.
  2. Selezione delle funzionalità : È possibile utilizzare l'analisi delle componenti principali selezione delle funzionalità , che è il processo di selezione delle variabili più importanti in un set di dati. Ciò è utile nell'apprendimento automatico, dove il numero di variabili può essere molto elevato ed è difficile identificare le variabili più importanti.
  3. Visualizzazione dati : È possibile utilizzare l'analisi delle componenti principali Multicollinearità : L'analisi delle componenti principali può essere utilizzata per gestire multicollinearità , che è un problema comune in un'analisi di regressione in cui due o più variabili indipendenti sono altamente correlate. La PCA può aiutare a identificare la struttura sottostante nei dati e creare nuove variabili non correlate che possono essere utilizzate nel modello di regressione.
  4. Riduzione del rumore : L'analisi delle componenti principali può essere utilizzata per ridurre il rumore nei dati. Rimuovendo le componenti principali con varianza bassa, che si presume rappresentino il rumore, l'analisi delle componenti principali può migliorare il rapporto segnale/rumore e facilitare l'identificazione della struttura sottostante nei dati.
  5. Compressione dati : L'analisi delle componenti principali può essere utilizzata per la compressione dei dati. Rappresentando i dati utilizzando un numero inferiore di componenti principali, che catturano la maggior parte della variazione dei dati, la PCA può ridurre i requisiti di archiviazione e accelerare l'elaborazione.
  6. Rilevamento valori anomali : L'analisi delle componenti principali può essere utilizzata per il rilevamento dei valori anomali. Valori anomali sono punti dati che sono significativamente diversi dagli altri punti dati nel set di dati. L'analisi delle componenti principali può identificare questi valori anomali cercando punti dati lontani dagli altri punti nello spazio delle componenti principali.

Svantaggi dell'analisi delle componenti principali

  1. Interpretazione dei componenti principali : Le componenti principali create dall'analisi delle componenti principali sono combinazioni lineari delle variabili originali ed è spesso difficile interpretarle in termini delle variabili originali. Ciò può rendere difficile spiegare i risultati della PCA ad altri.
  2. Ridimensionamento dei dati : L'analisi delle componenti principali è sensibile alla scala dei dati. Se i dati non vengono ridimensionati correttamente, la PCA potrebbe non funzionare correttamente. Pertanto, è importante ridimensionare i dati prima di applicare l'analisi delle componenti principali.
  3. Perdita di informazioni : L'analisi delle componenti principali può comportare la perdita di informazioni. Sebbene l'analisi delle componenti principali riduca il numero di variabili, può anche portare alla perdita di informazioni. Il grado di perdita di informazioni dipende dal numero di componenti principali selezionati. Pertanto, è importante selezionare attentamente il numero di componenti principali da conservare.
  4. Relazioni non lineari : L'analisi delle componenti principali presuppone che le relazioni tra le variabili siano lineari. Tuttavia, se esistono relazioni non lineari tra le variabili, l'analisi delle componenti principali potrebbe non funzionare correttamente.
  5. Complessità computazionale : Il calcolo dell'analisi delle componenti principali può essere computazionalmente costoso per set di dati di grandi dimensioni. Ciò è particolarmente vero se il numero di variabili nel set di dati è elevato.
  6. Adattamento eccessivo : L'analisi delle componenti principali a volte può risultare adattamento eccessivo , ovvero quando il modello si adatta troppo bene ai dati di addestramento e funziona in modo scarso con i nuovi dati. Ciò può verificarsi se vengono utilizzati troppi componenti principali o se il modello viene addestrato su un set di dati di piccole dimensioni.

Domande frequenti (FAQ)

1. Che cos'è l'analisi delle componenti principali (PCA)?

La PCA è una tecnica di riduzione della dimensionalità utilizzata in statistica e nell'apprendimento automatico per trasformare dati ad alta dimensionalità in una rappresentazione a dimensione inferiore, preservando le informazioni più importanti.

2. Come funziona un PCA?

I componenti principali sono combinazioni lineari delle caratteristiche originali che PCA trova e utilizza per acquisire la maggiore varianza nei dati. In ordine di quantità di varianza che spiegano, questi componenti ortogonali sono disposti.

3. Quando dovrebbe essere applicato il PCA?

L'uso della PCA è vantaggioso quando si lavora con set di dati multicollineari o ad alta dimensione. L'estrazione delle funzionalità, la riduzione del rumore e la preelaborazione dei dati ne sono gli usi principali.

4. Come vengono interpretate le componenti principali?

I nuovi assi sono rappresentati nello spazio delle caratteristiche da ciascun componente principale. Un indicatore dell’importanza di un componente nel catturare la variabilità dei dati è la sua capacità di spiegare una varianza più ampia.

5. Qual è il significato delle componenti principali?

Le componenti principali rappresentano le direzioni in cui i dati variano maggiormente. I primi componenti in genere catturano la maggior parte della varianza dei dati, consentendo una rappresentazione più concisa.