2.3 Eigenschaften der PCA
Projektion auf die Hauptkomponenten
📄 03_dimred.pdf, Folie 26Die Folie (aus Hastie et al.) zeigt die Projektion in 2D: Jeder Punkt wird senkrecht auf die erste Hauptkomponente gefällt. Die Länge vom Ursprung bis zum Fußpunkt ist der Score (im Buch als geschrieben, das ist die SVD-Schreibweise, siehe unten). Die gestrichelten Lote sind das, was bei der Reduktion auf eine Dimension verloren geht.
📄 03_dimred.pdf, Folie 27 zeigt dasselbe für beide Komponenten: zwei Punktwolken in 2D, und an den Achsen 1 und 2 die Histogramme der Projektionen und . Entlang der ersten Achse ist die Verteilung breit und zweigipflig (beide Gruppen sind getrennt sichtbar), entlang der zweiten schmal.
📄 03_dimred.pdf, Folie 28: In 3D spannen die ersten beiden Hauptkomponenten eine Ebene auf, die möglichst gut durch die Punktwolke passt. Die Punkte werden senkrecht auf diese Ebene projiziert, und man kann sie dann als 2D-Streudiagramm mit den Achsen „First / Second principal component“ darstellen.
Dimensionsreduktion: Kodieren und Dekodieren
📄 03_dimred.pdf, Folie 30Prinzip: Die Hauptkomponenten werden nach ihrer Varianz absteigend geordnet. Man behält die Komponenten mit der größten Varianz und verwirft die übrigen .
Kodierungsschritt (encoder): Die Daten werden in den Unterraum der größten Varianzen projiziert:
In Matrixform: , wobei die -Matrix der ersten Eigenvektoren ist. Aus Zahlen werden Zahlen.
Dekodierungsschritt (decoder): Rekonstruktion aus den Projektionen
| Eingabe | Operation | Ausgabe | |
|---|---|---|---|
| Encoder | Matrix mit Zeilen | Scores | |
| Decoder | Scores | Matrix mit Spalten |
Ergänzung: Diese Encoder-Decoder-Struktur ist ein linearer Autoencoder. Ein neuronaler Autoencoder mit linearen Aktivierungen und quadratischem Fehler lernt genau den PCA-Unterraum. Bei nicht zentrierten Daten addiert man im Decoder den Mittelwert wieder: .
Die PCA-Rekonstruktion ist optimal
📄 03_dimred.pdf, Folie 31Aussage: Von allen Orthonormalbasen eines -dimensionalen Unterraums ist die PCA-Basis optimal in dem Sinne, dass sie den mittleren quadratischen Rekonstruktionsfehler minimiert.
Behält man alle Hauptkomponenten, ist die Rekonstruktion exakt:
Bei Komponenten ist sie nur eine Näherung:
Mittlerer quadratischer Fehler:
Schritt für Schritt:
- : Die ersten Summanden kürzen sich weg, übrig bleiben die weggelassenen Komponenten .
- Quadrierte Norm ausmultiplizieren: . Wegen der Orthonormalität ist für , sonst 0. Es bleibt (Satz des Pythagoras in Dimensionen).
- ist die Varianz des -ten Scores, also .
Der Fehler ist die Summe der weggelassenen Eigenwerte. Lässt man die kleinsten weg, wird er minimal. Die Folie: „Der Fehler jeder anderen Variablenkombination wäre größer!“
Ergänzung, warum keine andere Basis besser ist: Für eine beliebige Orthonormalbasis ist der Fehler . Minimaler Fehler heißt maximale erhaltene Varianz , und die wird nach dem Optimierungsargument aus 2.2 von den Eigenvektoren zu den größten Eigenwerten erreicht. Maximale Varianz und minimaler Rekonstruktionsfehler sind also zwei Sichtweisen desselben Problems.
Zahlenbeispiel (Fortsetzung aus 2.2, , , ): Der Punkt hat . Rekonstruktion:
Für alle vier Punkte ist der Fehler 0.5, im Mittel also ✔. Zum Vergleich: Würde man stattdessen einfach die Koordinate behalten (Merkmalsselektion), wäre der mittlere Fehler , fünfmal so groß.
Wie viele Hauptkomponenten braucht man?
📄 03_dimred.pdf, Folie 32Die Gesamtvarianz ändert sich durch die Rotation nicht:
Ergänzung, warum: ist die Spur von , und die Spur ist die Summe der Eigenwerte. Anschaulich: Eine Drehung ändert keine Abstände, also auch nicht den mittleren quadratischen Abstand zum Schwerpunkt.
Als Gütekriterium für die Approximation durch die ersten Hauptkomponenten dient die erklärte Varianz (explained variance):
(Auf der Folie steht mit Summe bis , gemeint ist dasselbe.)
Die ersten Hauptkomponenten sollten ca. 80 % der Gesamtvarianz erklären.
Die Grafik auf der Folie trägt gegen auf (cumulative proportion of variance). Die Kurve steigt anfangs steil und flacht dann ab. Im Beispiel wird die 80-%-Linie bei 4 Komponenten überschritten.
Beispiel: erklärte Varianz
📄 03_dimred.pdf, Folie 33Zwei kleine 2D-Datensätze mit je vier Punkten:
| Varianzen | erklärte Varianz | Deutung | |
|---|---|---|---|
| Datensatz 1 | und | Punkte liegen fast auf einer Geraden. Die erste Komponente erklärt die Daten schon sehr gut | |
| Datensatz 2 | und | Die erste Komponente allein reicht vermutlich nicht |
Im eigenen Beispiel aus 2.2: .
Ergänzung: Die PCA ist nicht skaleninvariant. Misst man eine Variable in Millimetern statt Metern, wächst ihre Varianz um den Faktor , und sie dominiert die erste Hauptkomponente. Haben die Variablen unterschiedliche Einheiten, standardisiert man sie vorher (Mittelwert 0, Varianz 1). Das entspricht einer PCA auf der Korrelationsmatrix. Bei Pixeln mit gleicher Skala ist das nicht nötig.
Beispiele
Handgeschriebene Ziffern
📄 03_dimred.pdf, Folie 34 zeigt viele handgeschriebene Dreien. Auf 📄 03_dimred.pdf, Folie 35 ist jede Drei als Punkt im Raum der ersten beiden Hauptkomponenten-Scores dargestellt. Rechts sind Beispielbilder zu einem Gitter von Score-Werten zu sehen (rote Kreise links). Die Deutung der Achsen steht nicht auf der Folie, sondern stammt aus der Quelle des Beispiels (Hastie et al.):
- Entlang der ersten Hauptkomponente (horizontal) ändert sich vor allem die Länge des unteren Bogens, die Drei wird nach rechts hin ausladender.
- Entlang der zweiten (vertikal) ändert sich vor allem die Strichdicke bzw. Neigung.
Die Hauptkomponenten entsprechen hier also anschaulichen Variationen der Schreibweise. Man kann jede Drei grob durch zwei Zahlen beschreiben.
Gesichter
📄 03_dimred.pdf, Folie 36: Gesichtsbilder mit Pixeln werden auf die ersten zwei Hauptkomponenten (PC1, PC2) projiziert. Bilder derselben Person bilden erkennbare Gruppen (Farben). Ähnliche Aufnahmen landen nah beieinander.
Die Eigenvektoren lassen sich hier wieder als Bilder darstellen, die Eigengesichter (eigenfaces). Genau das ist die Aufgabe „Eigengesichter“ im Praktikum (Arbeitsblatt 2): Bilder in Vektoren umformen („stacken“), PCA auf der Designmatrix, die ersten Eigengesichter darstellen und Testbilder per nächstem Nachbarn im Raum der ersten Scores einer Person zuordnen.
Grenzen: PCA bei drei Clustern
📄 03_dimred.pdf, Folie 37Drei Cluster in 2D, eingefärbt nach dem Wert der ersten bzw. zweiten Hauptkomponente. Die erste Hauptkomponente verläuft so, dass zwei der Cluster ähnliche Scores bekommen, sie werden in der Projektion nicht sauber getrennt.
Die PCA maximiert die Varianz, nicht die Trennbarkeit von Gruppen. Sie kennt weder Labels noch Cluster. Die Richtung größter Varianz kann zufällig die Gruppen trennen (wie bei 📄 03_dimred.pdf, Folie 27), muss es aber nicht. Außerdem findet sie nur lineare Unterräume, gekrümmte Strukturen erfasst sie nicht. Um Gruppen zu finden, braucht man ein Clusterverfahren, siehe 2.4.
Der PCA-Algorithmus in der Praxis
Ergänzung, nicht auf den Folien als Algorithmus zusammengefasst.
Gegeben sei eine Datenmatrix mit Zeilen (Datenpunkte) und Spalten (Variablen).
- Zentrieren: berechnen und von jeder Zeile abziehen, das ergibt .
- Kovarianzmatrix: (Größe ).
- Eigenzerlegung von , Eigenwerte absteigend sortieren, Eigenvektoren entsprechend.
- wählen, z.B. kleinstes mit .
- Scores: ().
import numpy as np
def pca(X, l):
mu = X.mean(axis=0)
Xc = X - mu # 1. zentrieren
Sigma = Xc.T @ Xc / len(X) # 2. Kovarianzmatrix
beta, Q = np.linalg.eigh(Sigma) # 3. eigh: für symmetrische Matrizen
order = np.argsort(beta)[::-1] # aufsteigend -> absteigend
beta, Q = beta[order], Q[:, order]
A = Xc @ Q[:, :l] # 5. Scores
return mu, Q[:, :l], beta, A
X = np.array([[2, 1], [1, 2], [-1, -2], [-2, -1]], float)
mu, Ql, beta, A = pca(X, 1)
print(beta) # [4.5 0.5]
print(beta[0] / beta.sum()) # 0.9
X_hat = mu + A @ Ql.T # Rekonstruktion
Hinweise:
- Das Vorzeichen eines Eigenvektors ist beliebig ( ist auch ein Eigenvektor). Verschiedene Bibliotheken können also gespiegelte Scores liefern.
- Bei Bildern ist groß (z.B. 2304), die -Kovarianzmatrix wird teuer. Dann rechnet man besser die Singulärwertzerlegung : Die Spalten von sind die Hauptkomponenten, , und die Scores sind (daher auf 📄 03_dimred.pdf, Folie 26).
- In scikit-learn:
sklearn.decomposition.PCA(n_components=l), das Attributexplained_variance_ratio_liefert die Anteile .