Wie PCA funktioniert - Amazon SageMaker

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Wie PCA funktioniert

Die Hauptkomponentenanalyse (PCA) ist ein Lernalgorithmus, der die Dimensionalität (Anzahl der Merkmale) innerhalb eines Datensatzes reduziert und gleichzeitig so viele Informationen wie möglich beibehält.

PCAreduziert die Dimensionalität, indem ein neuer Satz von Merkmalen gefunden wird, die als Komponenten bezeichnet werden. Dabei handelt es sich um Zusammensetzungen der ursprünglichen Merkmale, die jedoch nicht miteinander korreliert sind. Die erste Komponente umfasst die größtmögliche Variabilität der Daten, die zweite Komponente die zweitgrößte Variabilität und so weiter.

Es handelt sich um eine unüberwachten Algorithmus zur Reduktion der Dimensionalität. Bei unüberwachtem Lernen werden Kennzeichnungen, die den Objekten im Trainingsdatensatz zugeordnet werden, nicht verwendet.

Angenommen es liegt eine Matrix mit den Zeilen x_1,…,x_n und der Dimension 1 * d vor. Die Daten werden zeilenweise in Mini-Stapel partitioniert an das Trainingsknoten (Worker) verteilt. Jeder Worker berechnet eine Zusammenfassung seiner Daten. Die Zusammenfassungen der verschiedenen Worker werden am Ende der Berechnung in einer einzigen Lösung zusammengeführt.

Modi

Der SageMaker PCA Amazon-Algorithmus verwendet je nach Situation einen von zwei Modi, um diese Zusammenfassungen zu berechnen:

  • regular: bei Datensätzen mit geringer Datendichte und einer geringen Anzahl an Beobachtungen und Merkmalen.

  • randomized: bei Datensätzen mit einer großen Anzahl an Beobachtungen und Merkmalen. Dieser Modus verwendet einen Approximationsalgorithmus.

Der Algorithmus wendet als letzten Schritt die Singulärwertzerlegung für die vereinheitlichte Lösung an, von der die Hauptkomponenten abgeleitet werden.

Modus 1: regular

Die Worker berechnen sowohl Equation in text-form: \sum x_i^T x_i als auch Equation in text-form: \sum x_i .

Anmerkung

Da Equation in text-form: x_i 1 * d Zeilenvektoren sind, ist Equation in text-form: x_i^T x_i eine Matrix (keine Skalarfunktion). Das Verwenden von Vektoren innerhalb des Codes ermöglicht effizientes Caching.

Die Kovarianzmatrix wird als Equation in text-form: \sum x_i^T x_i - (1/n) (\sum x_i)^T \sum x_i berechnet und die oberen num_components singulären Vektoren bilden das Modell.

Anmerkung

Wenn subtract_mean gleich False ist, wird auf die Berechnung und Subtraktion von Equation in text-form: \sum x_i verzichtet.

Verwenden Sie diesen Algorithmus, wenn die Dimension d der Vektoren klein genug ist, sodass Equation in text-form: d^2 in den Arbeitsspeicher integriert werden kann.

Modus 2: randomized

Wenn die Anzahl der Merkmale im eingegebenen Datensatz groß ist, wird eine Methode zur Approximierung der Kovarianzmetrik angewandt. Für jeden Mini-Stapel Equation in text-form: X_t der Dimension b * d initialisieren wir nach dem Zufallsprinzip eine (num_components + extra_components) * b Matrix, die mit jedem Mini-Stapel multipliziert wird, um eine (num_components + extra_components) * d Matrix zu erstellen. Die Summe dieser Matrizen wird von den Workern berechnet, und die Server arbeiten mit SVD der endgültigen Matrix. (num_components + extra_components) * d Die singulären Vektoren num_components oben rechts sind die Approximation der obersten singulären Vektoren der Eingabematrix.

Nehmen wir an Equation in text-form: \ell = num_components + extra_components. Mit einem gegebenen Mini-Stapel Equation in text-form: X_t der Dimension b * d zeichnet der Worker zeichnet eine zufällige Matrix Equation in text-form: H_t der Dimension Equation in text-form: \ell * b . Je nachdem, ob in der Umgebung ein GPU oder CPU und die Dimensionsgröße verwendet werden, handelt es sich bei der Matrix entweder um eine Zufallszeichenmatrix, in der sich jeder Eintrag befindet, +-1 oder um eine FJLT(schnelle Johnson-Lindenstrauss-Transformation; weitere Informationen finden Sie unter FJLTTransformationen und in den Folgedokumenten). Der Worker berechnet anschließend Equation in text-form: H_t X_t und behält Equation in text-form: B = \sum H_t X_t bei. Der Worker behält außerdem Equation in text-form: h^T bei, die Summe der Spalten Equation in text-form: H_1,..,H_T (T ist die Gesamtanzahl der Mini-Stapel) und s, die Summe aller Eingabezeilen. Nach der Verarbeitung der gesamten Datenbruchstücke schickt der Worker B, h, s und n (die Anzahl der Eingabezeilen) an den Server.

Bezeichnen Sie die verschiedenen Eingaben an den Server als Equation in text-form: B^1, h^1, s^1, n^1,… . Der Server berechnet B, h, s, n die Summen der jeweiligen Eingaben. Anschließend wird Equation in text-form: C = B – (1/n) h^T s berechnet und seine Singulärwertzerlegung gesucht. Die oberen rechten singulären Vektoren und einzelne Werte von C werden als Approximationslösung des Problems verwendet.