Der Wikipedia-Artikel zur Hauptkomponentenanalyse besagt dies
Es gibt effiziente Algorithmen zur Berechnung der SVD von ohne dass die Matrix muss. Daher ist die Berechnung der SVD heute die Standardmethode zur Berechnung einer Hauptkomponentenanalyse aus einer Datenmatrix, sofern nicht nur eine Handvoll Komponenten erforderlich sind.
Könnte mir jemand sagen, um welche effizienten Algorithmen es sich in dem Artikel handelt? Es wird kein Verweis angegeben (eine URL oder ein Verweis auf einen Artikel, der diese Art der Berechnung vorschlägt, wäre nett).
pca
algorithms
svd
numerics
svd
quelle
quelle
Antworten:
Das Hauptarbeitspferd hinter der Berechnung der SVD ist der QR-Algorithmus . Allerdings gibt es viele verschiedene Algorithmen, um die Singulärwertzerlegung einer generischen by- N- Matrix A zu berechnen . Ein großartiger Schaltplan zu diesem Thema finden Sie hier (aus der Dokumentation von Intel)M N EIN MKL ) ist die folgende:
Wie Sie sehen, gibt es je nach Anwendungsfall unterschiedliche Ansätze (die Namenskonventionen für Routinen finden Sie hier ). Das liegt zum Beispiel daran, dass es Matrixformulare gibt, bei denen eine Reduzierung der Haushaltsinhaber teurer sein kann als eine Givens-Rotation (um nur zwei "offensichtliche" Wege zu nennen, QR zu erhalten). Ein Standardwerk über die Angelegenheit ist Golub und Van Loan der Matrix Computations (Ich würde die 3. Auflage zumindest empfehlen die Verwendung). Ich habe auch Å gefunden. Björcks numerische Methoden für Kleinste-Quadrate-Probleme in dieser Hinsicht eine sehr gute Ressource; Obwohl SVD nicht der Hauptfokus des Buches ist, hilft es bei der Kontextualisierung seiner Verwendung.
Wenn ich Ihnen einen allgemeinen Rat zu diesem Thema geben muss, versuchen Sie nicht, Ihre eigenen SVD-Algorithmen zu schreiben, es sei denn, Sie haben bereits einige Kurse zur numerischen linearen Algebra erfolgreich absolviert und wissen, was Sie tun. Ich weiß, dass es sich kontraintuitiv anhört, aber es gibt eine Menge Dinge, die schief gehen können und bei denen Sie (bestenfalls) suboptimale Implementierungen erzielen (wenn nicht sogar falsch). Es gibt einige sehr gute kostenlose Suiten zu diesem Thema (zB Eigen , Armadillo und Trilinos, um nur einige zu nennen.)
quelle
svds
MATLABseigs
) verwenden einfach ihre abgeschnittene SVD-Funktion als Wrapper für ihre abgeschnittenen eigendecomposition ( ) -Routinen.