PCA in Sklearn

PCA in Sklearn
PCA (analisi dei componenti principali) è un algoritmo matematico che trasforma le osservazioni delle variabili correlate in un insieme di valori di variabili linearmente non correlate, note come componenti principali. PCA è uno degli algoritmi più popolari per la riduzione della dimensionalità. Karl Pearson (Li, 1901) inventò PCA nel 1901, definendolo come "identificare le linee e i piani della più vicina adattamento ai sistemi di punti nello spazio".

Discuteremo i dettagli di PCA e la sua implementazione usando Sklearn.

Cos'è PCA?

Principal Component Analysis (PCA) è un metodo di riduzione dei dati. Quando hai molte misure per ogni caso, ma alcuni di essi sono correlati tra loro, questo metodo viene utilizzato. I componenti principali utilizzano la correlazione per ridurre il numero di variabili richieste per caratterizzare adeguatamente ciascuna situazione a seconda dei risultati. Ma un'analisi dei componenti principali rivelerà probabilmente che, nonostante le dieci misure, sono state misurate solo tre variabili. È più probabile che abbiano uno sprint, un salto e un lancio di abilità, piuttosto che dieci caratteristiche. I componenti principali fornirebbero coefficienti per ciascuno dei dieci punteggi, indicando quanto ogni punteggio va nella nuova corsa, salta e lancio punteggi. I tre punteggi compositi ti direbbero anche quanta variazione totale è spiegata. Lavorare con tre variabili è più facile che lavorare con 10 e se spiegano la maggior parte della fluttuazione, hai acquisito tutte le informazioni dai dieci punteggi in tre.

La tecnica diventa molto più utile quando si hanno centinaia di misurazioni. Tuttavia, potremmo incontrare un problema: alcune delle nostre proprietà di input sono connesse. A seconda della forza dell'associazione, ciò potrebbe indicare che includiamo dimensioni extra nei nostri dati di input quando potremmo acquisire la stessa quantità di informazioni con meno. PCA fornisce una tecnica sistematica per determinare quali combinazioni di funzionalità sembrano essere più responsabili della varianza dei dati rispetto ad altri e fornisce alcune raccomandazioni sulla riduzione del numero di dimensioni nel nostro input. Questo non vuol dire che PCA ci dice quali caratteristiche non sono necessarie; Piuttosto, ci mostra come integrare le funzionalità in un sottospazio più piccolo senza perdere (molte) informazioni. Tradizionalmente, ridurre il numero di dimensioni prima di alimentare i dati in algoritmi ML è stato utile perché riduce la complessità e il tempo di elaborazione. Tuttavia, dovrei sottolineare che PCA non è una panacea ma uno strumento fantastico quando funziona.

Esempio 1

Considera il caso del set di dati D, che contiene dati bidimensionali lungo il y = x linea. Questi dati sono rappresentati in due dimensioni, con un X E y punto per ogni punto dati. Il vettore sarebbe identificato come la direzione della massima varianza tramite PCA e questo vettore verrebbe utilizzato come nuovo asse x. Ora possiamo rappresentare il set di dati D in una sola dimensione. Di conseguenza, PCA è una tecnica di riduzione della dimensionalità focalizzata sulla localizzazione dei vettori di varianza più grandi.

Esempio 2

Supponiamo che i tuoi dati siano lungo una riga in due dimensioni. In tal caso, PCA riconosce rapidamente che i tuoi X e Y sono associati e sviluppa un nuovo sistema di coordinate ortogonali per massimizzare la varianza nella prima coordinata. Di conseguenza, il secondo componente (primario) non ha capacità predittiva e probabilmente puoi rimuoverlo dai tuoi modelli senza causare troppi danni. Sei riuscito a proiettare due dimensioni in una senza perdere molte informazioni in questo metodo. Mentre puoi farlo visivamente in due dimensioni, potrebbe essere un po 'più difficile nel N dimensione.

Caratteristiche di PCA

Trasformare i dati in una scala comparabile. Alcune funzionalità in un set di dati possono essere estremamente elevate (da 1 a 100). Al contrario, altri sono estremamente bassi (da 0 a 1), con conseguenti caratteristiche elevate che hanno un impatto maggiore sulle previsioni di output rispetto ai dati di funzionalità basse.

Per identificare le correlazioni tra tutte le caratteristiche, calcola la covarianza dei dati.

Quindi, trova gli autovalori e gli autovettori della matrice di covaria. Successivamente, ordina gli autovettori diminuendo gli autovalori e seleziona gli autovettori K con gli autovalori più alti.

Per trasformare i campioni sul nuovo sottospazio, utilizzare questa matrice autovettore.

Può essere usato per scoprire se ci sono correlazioni tra le tue variabili. Se si dispone di variabili tridimensionali e il loro piano bidimensionale più adatto le cattura accuratamente, è probabile che i valori nella terza dimensione siano una funzione lineare dei primi due, più o meno del rumore gaussiano.

Invece di trasmettere punti dati n-dimensionali, è possibile utilizzare PCA per comunicare le coordinate m-dimensionali in un sottospazio più adatto se è necessario trasmettere dati (più l'equazione del sottospazio). Può essere utilizzato anche per comprimere i dati. Se la vestibilità è perfetta, non perderai informazioni; Se è vicino, perderai un po '.

Poiché molti algoritmi di apprendimento automatico funzionano meglio quando ogni variabile aggiunge nuove informazioni, viene spesso utilizzata nell'apprendimento automatico per trovare ed eliminare le variabili ridondanti nel set di dati.

Non sempre trova una duplicazione reale non lineare. Se interpreti statisticamente PCA, devi fare alcune ipotesi sulle relazioni sottostanti tra le variabili / il loro rumore. Tuttavia, è uno strumento di grande prezioso, anche se alcune ipotesi non sono ideali.

Implementazione di PCA in Sklearn

Importa Numpy come NP
da Sklearn.Decomposizione Importa PCA
X = np.Array ([[1, 2], [2, 1], [3, 2], [2, 3], [4, 5], [5, 4]])
PCA = PCA (N_Components = 2)
PCA.Fit (x)
Stampa (PCA.spiegato_variance_ratio_)
Stampa (PCA.singolar_values_)

Produzione
[0.86153846 0.13846154]
[4.3204938 1.73205081]

Conclusione

Questo articolo ha discusso dell'analisi dei componenti principali e della sua implementazione utilizzando Sklearn. Sklearn è una popolare libreria Python utilizzata per sviluppare modelli di apprendimento automatico. PCA riduce la maledizione della dimensionalità dirigendo dati ad alta dimensione in dimensioni inferiori senza perdere molte informazioni. PCA può essere implementato utilizzando Sklearn con 'Sklearn.Classe di decomposizione.