5

Ho un enorme set di dati (32000 * 2500) che mi serve per l'allenamento. Questo sembra essere troppo per il mio classificatore, quindi ho deciso di leggere qualcosa sulla riduzione della dimensionalità e in particolare su PCA.Selezione dei componenti che mostrano la maggior parte della varianza in PCA

Dalla mia comprensione, PCA seleziona i dati correnti e li sostituisce su un altro dominio/scala (x, y). Queste nuove coordinate non significano nulla ma i dati sono riorganizzati per dare una variazione massima di un asse. Dopo questi nuovi coefficienti posso lasciare il cooeff con variazione minima.

Ora sto cercando di implementarlo in MatLab e sto avendo problemi con l'output fornito. MatLab considera sempre le righe come osservazioni e colonne come variabili. Quindi la mia introduzione alla funzione pca sarebbe la mia matrice di dimensioni (32000*2500). Ciò restituirebbe i coefficienti PCA in una matrice di output della dimensione 2500*2500.

L'aiuto per gli stati PCA:

Ogni colonna contiene coeff coefficienti di quella principale componente, e le colonne sono in ordine di componente varianza decrescente.

In questo output, quale dimensione sono le osservazioni dei miei dati? Voglio dire se devo dare questo al classificatore, le righe di coeff rappresentano le mie osservazioni di dati o sono ora le colonne di coeff?

E come si rimuovono i coefficienti con la minima variazione?

risposta

5

(Disclaimer: è passato molto tempo da quando sono passato da MATLAB per SciPy, ma i principi sono gli stessi.)

Se si utilizza il svd function

[U,S,V] = svd(X) 

quindi di ridurre la dimensione del X a k, si moltiplica per le prime k colonne di V. In MATLAB, sto cercando di indovinare che è

X * V(:, 1: k); 

Fare riferimento alla Elements of Statistical Learning per la teoria.

+0

Questo è corretto. Bel lavoro, Ami. +1. – rayryeng

+0

@rayryeng :-) Grazie! –