Welche Richtungen eine Matrix nur streckt
Ein Eigenvektor ist ein Vektor, den eine Matrix nur streckt oder staucht, ohne seine Richtung zu ändern. Der Faktor dazu heißt Eigenwert.
Verfahren des maschinellen Lernens suchen damit die wichtigste Richtung in einer Wolke von Daten. Das Potenzverfahren findet sie mit nur einer Schleife.
Am Ende dieser Lektion
Notiz
Ich kann sagen, was ein Eigenvektor ist, und warum das maschinelle Lernen ihn braucht.
Schlüsselwörter
| Begriff | Was er bedeutet |
|---|---|
| Eigenvektor | ein Vektor, dessen Richtung eine Matrix nicht ändert |
| Eigenwert | der Faktor, um den der Eigenvektor gestreckt wird |
| Potenzverfahren | wiederholtes Multiplizieren, bis die Richtung feststeht |
| Kovarianzmatrix | eine Tabelle der Streuungen und Zusammenhänge von Daten |
| Dimensionsreduktion | weniger Zahlen je Fall behalten, ohne viel zu verlieren |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein Eigenvektor behält seine Richtung
Eine Matrix verändert die meisten Vektoren in Länge und Richtung. Ein Eigenvektor ändert nur seine Länge: Matrix mal Vektor ist dasselbe wie ein Faktor mal Vektor.
Dieser Faktor ist der Eigenwert. Mit der Matrix [[2, 1], [1, 2]] wird [1, 1] zu [3, 3], also dreimal so lang.
Beispiel: drei Vektoren und die Matrix
| Vektor | Matrix mal Vektor | Gleiche Richtung? | Faktor |
|---|---|---|---|
| [1, 1] | [3, 3] | ja | 3 |
| [1, -1] | [1, -1] | ja | 1 |
| [1, 0] | [2, 1] | nein | keiner |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Die Eigenwerte der Matrix
docker exec jupyter python3 -c "import numpy as np; print(np.round(np.linalg.eigvalsh(np.array([[2, 1], [1, 2]])), 3).tolist())"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Matrix mal [1, 1]
docker exec jupyter python3 -c "import numpy as np; print((np.array([[2, 1], [1, 2]]) @ np.array([1, 1])).tolist())"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein häufiger Fehler
Warnung
Viele denken, jede Matrix habe genau einen Eigenvektor. Das stimmt nicht. Mit [1, 1] ist auch [2, 2] und [-5, -5] ein Eigenvektor zum Wert 3. Es zählt die Richtung, nicht die Länge.
Das Potenzverfahren findet die stärkste Richtung
Multiplizieren Sie einen beliebigen Startvektor immer wieder mit der Matrix, wächst er in die Richtung des größten Eigenwerts. Teilen Sie nach jedem Schritt durch die größte Komponente, damit die Zahlen klein bleiben.
Diese größte Komponente vor dem Teilen nähert sich dem Eigenwert.
Beispiel: vier Schritte vom Start [1, 0]
| Schritt | Matrix mal Vektor | Größte Komponente | Neuer Vektor |
|---|---|---|---|
| 1 | [2, 1] | 2 | [1; 0,5] |
| 2 | [2,5; 2] | 2,5 | [1; 0,8] |
| 3 | [2,8; 2,6] | 2,8 | [1; 0,929] |
| 4 | [2,929; 2,857] | 2,929 | [1; 0,976] |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Das Potenzverfahren in Python
# Die Matrix streckt [1, 1] auf das Dreifache
mat = [[2, 1], [1, 2]]
v = [1, 0]
for schritt in range(5):
neu = [mat[0][0] * v[0] + mat[0][1] * v[1], mat[1][0] * v[0] + mat[1][1] * v[1]]
groesste = max(abs(neu[0]), abs(neu[1]))
v = [neu[0] / groesste, neu[1] / groesste]
print("Schritt", schritt + 1, "Schätzung:", round(groesste, 3), "Vektor:", round(v[0], 3), round(v[1], 3))
# Ändern Sie den Start in [0, 1]. Die Schätzung nähert sich wieder 3.
Dimensionsreduktion behält die wichtigste Richtung
Daten sind eine Wolke von Punkten. Die Richtung, in der sie am stärksten streuen, ist der Eigenvektor der Kovarianzmatrix mit dem größten Eigenwert.
Wer nur diese Richtung behält, ersetzt zwei Zahlen je Fall durch eine. Das heißt Dimensionsreduktion, in ihrer bekanntesten Form die Hauptkomponentenanalyse.
Die Eigenwerte der Kovarianzmatrix
docker exec jupyter python3 -c "import numpy as np; print(np.round(np.linalg.eigvalsh(np.cov([1, 2, 3, 4, 5], [2, 4, 5, 4, 5])), 3).tolist())"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Wofür maschinelles Lernen jede Lektion braucht
| Baustein | Wofür es dient |
|---|---|
| Vektor | Eine Datenzeile mit mehreren Merkmalen |
| Skalarprodukt und Kosinus | Wie ähnlich zwei Fälle sind |
| Matrixprodukt | Eine Schicht eines neuronalen Netzes |
| Abbildung | Drehen und Strecken von Bildern und Figuren |
| Gleichungssystem | Eine Gerade durch Messpunkte legen |
| Eigenvektor | Die wichtigste Richtung in den Daten |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.