# Hauptkomponentenanalyse

> For AI agents: use [llms.txt](https://nakafa.com/llms.txt) for the site index. Markdown versions are available by appending `.md` to content URLs or sending `Accept: text/markdown`.

URL: https://nakafa.com/de/faecher/ki-und-data-science/lineare-methoden-der-ki/hauptkomponentenanalyse
Source: https://raw.githubusercontent.com/nakafaai/aksara/16d6b8e869d1a277313c65bbfc4b4a83efe77a46/packages/corpus/material/lesson/ai-ds/linear-methods/principal-component-analysis/de.mdx

Leite die PCA aus zentrierten Daten, Kovarianzeigenvektoren und der Singulärwertzerlegung her. Deute erklärte Varianz und niedrig-rangige Rekonstruktion geometrisch.

---

## Mit zentrierten Daten beginnen

Sei $$X\in\mathbb{R}^{m\times n}$$ eine Matrix mit $$m$$ Beobachtungen und $$n$$ Merkmalen. Die PCA beginnt damit, von jedem Merkmal seinen Mittelwert abzuziehen:

Visible text: Sei eine Matrix mit Beobachtungen und Merkmalen. Die PCA beginnt damit, von jedem Merkmal seinen Mittelwert abzuziehen:

Component: MathContainer
Children:

```math
\mu_j=\frac1m\sum_{i=1}^m X_{ij}
```

```math
X_c=X-\mathbf{1}\mu^T
```

Die Stichprobenkovarianzmatrix lautet

```math
C=\frac{1}{m-1}X_c^TX_c
```

Sie ist symmetrisch positiv semidefinit. Sie kann singulär sein, wenn Merkmale linear abhängig sind oder $$n>m-1$$ gilt.

Visible text: Sie ist symmetrisch positiv semidefinit. Sie kann singulär sein, wenn Merkmale linear abhängig sind oder gilt.

Die Zentrierung ist zwingend. Jedes Merkmal auf Varianz eins zu standardisieren ist eine eigene Modellierungsentscheidung, die bei nicht vergleichbaren Einheiten oft sinnvoll ist. Dadurch ändert sich die Frage von den Richtungen größter absoluter Varianz zu den Richtungen größter standardisierter Varianz.

## Hauptkomponentenrichtungen

Nach dem Spektralsatz gilt

Component: MathContainer
Children:

```math
Cv_i=\lambda_i v_i
```

```math
\lambda_1\ge\lambda_2\ge\cdots\ge\lambda_n\ge0
```

```math
V=(v_1\ \,\cdots\ \,v_n),\qquad V^TV=I
```

```math
C=V\Lambda V^T
```

Die erste Hauptkomponentenrichtung löst

```math
v_1=\underset{\|v\|_2=1}{\operatorname{argmax}}\;v^TCv
```

Jede weitere Richtung maximiert dieselbe Varianz unter der Bedingung, zu allen vorherigen Richtungen orthogonal zu sein. Die transformierten Koordinaten oder Scores sind

```math
Z=X_cV
```

und ihre Stichprobenkovarianz ist diagonal:

```math
\frac{1}{m-1}Z^TZ=V^TCV=\Lambda
```

Die Hauptkomponenten sind daher unkorreliert. Im Allgemeinen sind sie nicht unabhängig. Unabhängigkeit folgt in besonderen Modellen, darunter eine gemeinsame Gauß-Verteilung.

## Erklärte Varianz und Dimensionsreduktion

Der Anteil der gesamten Stichprobenvarianz, den Komponente $$j$$ erklärt, ist

Visible text: Der Anteil der gesamten Stichprobenvarianz, den Komponente erklärt, ist

```math
\operatorname{EVR}_j=\frac{\lambda_j}{\sum_{i=1}^n\lambda_i}=\frac{\lambda_j}{\operatorname{tr}(C)}
```

Behält man die ersten $$k$$ Eigenvektoren in $$V_k$$, erhält man Scores und Rekonstruktion

Visible text: Behält man die ersten Eigenvektoren in , erhält man Scores und Rekonstruktion

Component: MathContainer
Children:

```math
Z_k=X_cV_k
```

```math
\widehat{X}_c=Z_kV_k^T=X_cV_kV_k^T
```

```math
\widehat{X}=\widehat{X}_c+\mathbf{1}\mu^T
```

Unter allen linearen Rekonstruktionen vom Rang $$k$$ minimiert diese Wahl den quadratischen Rekonstruktionsfehler. Mit der obigen Konvention für die Stichprobenkovarianz gilt

Visible text: Unter allen linearen Rekonstruktionen vom Rang minimiert diese Wahl den quadratischen Rekonstruktionsfehler. Mit der obigen Konvention für die Stichprobenkovarianz gilt

```math
\|X_c-\widehat{X}_c\|_F^2=(m-1)\sum_{j=k+1}^n\lambda_j
```

## Gleichwertige Berechnung mit der SVD

Berechne die dünne Singulärwertzerlegung

```math
X_c=U\Sigma V^T
```

Dann sind die rechten Singulärvektoren die Hauptkomponentenrichtungen und

```math
\lambda_j=\frac{\sigma_j^2}{m-1}
```

Die SVD vermeidet die explizite Bildung von $$X_c^TX_c$$, die die Konditionszahl quadriert. Sie ist außerdem der natürliche Weg, wenn $$X_c$$ rechteckig ist oder keinen vollen Rang besitzt.

Visible text: Die SVD vermeidet die explizite Bildung von , die die Konditionszahl quadriert. Sie ist außerdem der natürliche Weg, wenn rechteckig ist oder keinen vollen Rang besitzt.

## Beispiel einer zweidimensionalen Kovarianz

Betrachte eine Kovarianzellipse, die um

```math
\theta=\frac{\pi}{6}
```

gedreht ist und entlang ihrer Hauptachsen die Varianzen $$9$$ und $$2{,}25$$ besitzt. Sei

Visible text: gedreht ist und entlang ihrer Hauptachsen die Varianzen und besitzt. Sei

Component: MathContainer
Children:

```math
R=\begin{pmatrix}\cos\theta&-\sin\theta\\\sin\theta&\cos\theta\end{pmatrix}
```

```math
C=R\begin{pmatrix}9&0\\0&2{,}25\end{pmatrix}R^T
```

```math
C=\frac1{16}\begin{pmatrix}117&27\sqrt3\\27\sqrt3&63\end{pmatrix}
```

Die Hauptkomponentenrichtungen sind die Spalten von $$R$$:

Visible text: Die Hauptkomponentenrichtungen sind die Spalten von :

Component: MathContainer
Children:

```math
v_1=\begin{pmatrix}\sqrt3/2\\1/2\end{pmatrix},\qquad\lambda_1=9
```

```math
v_2=\begin{pmatrix}-1/2\\\sqrt3/2\end{pmatrix},\qquad\lambda_2=2{,}25
```

Die erste Komponente erklärt

```math
\frac{9}{9+2{,}25}=0{,}8=80\%
```

der Gesamtvarianz.

Component: LineEquation
Props:
- title: Kovarianzellipse und Hauptkomponentenrichtungen $$v_1,v_2$$
  Visible text: Kovarianzellipse und Hauptkomponentenrichtungen
- description: Die cyanfarbene Ellipse hat die Halbachsenlängen $$\sqrt{\lambda_1}=3$$ und $$\sqrt{\lambda_2}=1{,}5$$. Die orangefarbenen Richtungen sind ihre Eigenvektoren.
  Visible text: Die cyanfarbene Ellipse hat die Halbachsenlängen und . Die orangefarbenen Richtungen sind ihre Eigenvektoren.
- data: [
{
points: Array.from({ length: 100 }, (_, index) => {
const angle = (index / 99) * 2 * Math.PI;
const localX = 3 * Math.cos(angle);
const localY = 1.5 * Math.sin(angle);
const rotation = Math.PI / 6;
const x = localX * Math.cos(rotation) - localY * Math.sin(rotation);
const y = localX * Math.sin(rotation) + localY * Math.cos(rotation);
return { x, y, z: 0 };
}),
color: "#0891b2",
smooth: true,
showPoints: false
},
{
points: [{ x: -4, y: 0, z: 0 }, { x: 4, y: 0, z: 0 }],
color: "#7c3aed",
smooth: false,
showPoints: false,
labels: [{
text: <>Ursprüngliche Achse $$x_1$$</>,
at: 1,
offset: [0.3, -0.5, 0]
}]
},
{
points: [{ x: 0, y: -3, z: 0 }, { x: 0, y: 3, z: 0 }],
color: "#7c3aed",
smooth: false,
showPoints: false,
labels: [{
text: <>Ursprüngliche Achse $$x_2$$</>,
at: 1,
offset: [0.8, 0.3, 0]
}]
},
{
points: [{ x: -3.464, y: -2, z: 0 }, { x: 3.464, y: 2, z: 0 }],
color: "#ea580c",
smooth: false,
showPoints: false,
labels: [{
text: <>Hauptrichtung $$v_1$$</>,
at: 1,
offset: [0.3, 0.3, 0]
}]
},
{
points: [{ x: -1.5, y: 2.598, z: 0 }, { x: 1.5, y: -2.598, z: 0 }],
color: "#ea580c",
smooth: false,
showPoints: false,
labels: [{
text: <>Hauptrichtung $$v_2$$</>,
at: 0,
offset: [-0.8, 0. ... [truncated; 1212 chars]
  Visible text: [
{
points: Array.from({ length: 100 }, (_, index) => {
const angle = (index / 99) * 2 * Math.PI;
const localX = 3 * Math.cos(angle);
const localY = 1.5 * Math.sin(angle);
const rotation = Math.PI / 6;
const x = localX * Math.cos(rotation) - localY * Math.sin(rotation);
const y = localX * Math.sin(rotation) + localY * Math.cos(rotation);
return { x, y, z: 0 };
}),
color: "#0891b2",
smooth: true,
showPoints: false
},
{
points: [{ x: -4, y: 0, z: 0 }, { x: 4, y: 0, z: 0 }],
color: "#7c3aed",
smooth: false,
showPoints: false,
labels: [{
text: <>Ursprüngliche Achse </>,
at: 1,
offset: [0.3, -0.5, 0]
}]
},
{
points: [{ x: 0, y: -3, z: 0 }, { x: 0, y: 3, z: 0 }],
color: "#7c3aed",
smooth: false,
showPoints: false,
labels: [{
text: <>Ursprüngliche Achse </>,
at: 1,
offset: [0.8, 0.3, 0]
}]
},
{
points: [{ x: -3.464, y: -2, z: 0 }, { x: 3.464, y: 2, z: 0 }],
color: "#ea580c",
smooth: false,
showPoints: false,
labels: [{
text: <>Hauptrichtung </>,
at: 1,
offset: [0.3, 0.3, 0]
}]
},
{
points: [{ x: -1.5, y: 2.598, z: 0 }, { x: 1.5, y: -2.598, z: 0 }],
color: "#ea580c",
smooth: false,
showPoints: false,
labels: [{
text: <>Hauptrichtung </>,
at: 0,
offset: [-0.8, 0. ... [truncated; 1212 chars]
- cameraPosition: [0, 0, 15]
- showZAxis: false

## Grenzen der Interpretation

| Prüfung | Warum sie wichtig ist |
| --- | --- |
| Nur mit Mittelwerten der Trainingsdaten zentrieren | verhindert Datenleckage und erhält das gelernte Koordinatensystem |
| Einheiten und Skalierung der Merkmale prüfen | große numerische Varianz kann sonst aus dem falschen Grund dominieren |
| $$k$$ nach dem Validierungsziel statt nach einer festen Schwelle wählen | erklärte Varianz misst keine prädiktive Relevanz |
| Beliebiges Vorzeichen der Eigenvektoren beachten | $$v_j$$ und $$-v_j$$ definieren dieselbe Komponente |
| Nichtlineare Struktur und Ausreißer untersuchen | PCA ist eine lineare, varianzbasierte Zusammenfassung und gegenüber beiden empfindlich |

Visible text: | Prüfung | Warum sie wichtig ist |
| --- | --- |
| Nur mit Mittelwerten der Trainingsdaten zentrieren | verhindert Datenleckage und erhält das gelernte Koordinatensystem |
| Einheiten und Skalierung der Merkmale prüfen | große numerische Varianz kann sonst aus dem falschen Grund dominieren |
| nach dem Validierungsziel statt nach einer festen Schwelle wählen | erklärte Varianz misst keine prädiktive Relevanz |
| Beliebiges Vorzeichen der Eigenvektoren beachten | und definieren dieselbe Komponente |
| Nichtlineare Struktur und Ausreißer untersuchen | PCA ist eine lineare, varianzbasierte Zusammenfassung und gegenüber beiden empfindlich |

PCA findet Varianzrichtungen und keine kausalen Faktoren. Eine Hauptkomponente kann viele ursprüngliche Merkmale mischen. Eine Richtung mit kleiner Varianz kann für eine nachgelagerte Aufgabe trotzdem wichtig sein.