5

Ich habe einen riesigen Datensatz (32000 * 2500), den ich für das Training brauche. Dies scheint zu viel für meinen Klassifikator zu sein, also beschloss ich, etwas über die Reduktion der Dimensionalität und speziell über PCA zu lesen.Auswahl der Komponenten mit den meisten Abweichungen in PCA

Aus meiner Sicht wählt PCA die aktuellen Daten aus und plottet sie auf einer anderen (x, y) Domäne/Skala. Diese neuen Koordinaten bedeuten nichts anderes, als dass die Daten neu angeordnet werden, um einer Achse maximale Variation zu geben. Nach diesen neuen Koeffizienten kann ich die cooeff mit minimaler Variation fallen lassen.

Jetzt versuche ich dies in MatLab zu implementieren und habe Probleme mit der bereitgestellten Ausgabe. MatLab betrachtet Zeilen immer als Beobachtungen und Spalten als Variablen. Also meine Inout an die pca Funktion wäre meine Matrix der Größe (32000*2500). Dies würde die PCA-Koeffizienten in einer Ausgabematrix der Größe 2500*2500 zurückgeben.

Die Hilfe für PKA Zustände:

Jede Spalte von COEFF enthält Koeffizienten für eine Hauptkomponente und die Spalten sind, um die Komponente Varianz in absteigender Reihenfolge.

In dieser Ausgabe, welche Dimension sind die Beobachtungen meiner Daten? Ich meine, wenn ich dies dem Klassifikator geben muss, werden die Zeilen von coeff meine Daten Beobachtungen darstellen oder sind es jetzt die Spalten von coeff?

Und wie entferne ich die Koeffizienten mit der geringsten Variation?

Antwort

5

(Disclaimer: Es ist eine lange Zeit her ist, seit ich von Matlab geschaltet SciPy, aber die Prinzipien sind die gleichen.)

Wenn Sie die svd function verwenden

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

dann die Dimension zu reduzieren X bis k, würden Sie mit den ersten k Spalten von V multiplizieren. In Matlab, bin Erraten ich, dass

X * V(:, 1: k); 

für die Theorie zu Elements of Statistical Learning Siehe ist.

+0

Das ist richtig. Gute Arbeit, Ami. +1. – rayryeng

+0

@rayryeng :-) Danke! –

Verwandte Themen