Der Computer sagt: heute ist viel los
Eine App sagt dir morgens, ob heute viel los sein wird. Niemand hat ihr eine Regel dafür geschrieben.
Sie hat aus vielen Beispielen gelernt. Das nennt man maschinelles Lernen. Heute baust du das einfachste Verfahren dafür nach, die k nächsten Nachbarn.
Am Ende dieser Lektion
Notiz
Ich kann erklären, wie ein Computer aus Beispielen lernt.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Maschinelles Lernen | ein Computer findet Regeln selbst aus Beispielen | |
| Trainingsdaten | die Beispiele, aus denen der Computer lernt | |
| Testdaten | zurückgehaltene Beispiele zum Prüfen | |
| k nächste Nachbarn | ein Verfahren, das sich an den k ähnlichsten Beispielen orientiert | k = 5 |
| Verzerrung | eine Schieflage in den Daten, die das Ergebnis schief macht |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Was heißt: ein Computer lernt?
Beim normalen Programmieren schreibst du die Regel. Beim maschinellen Lernen gibst du Beispiele mit bekannter Antwort, und der Computer leitet die Regel selbst ab.
Die Beispiele heißen Trainingsdaten. Danach prüfst du ihn an Testdaten, die er nie gesehen hat. Besteht er, darf er neue Fälle beurteilen.
Wie arbeiten die k nächsten Nachbarn?
Der Computer sucht für einen neuen Tag die k ähnlichsten Tage aus den Trainingsdaten. Ähnlich heißt: ähnliche Temperatur und ähnlicher Regen.
Dann stimmen diese k Nachbarn ab. Waren die meisten von ihnen Tage mit viel Betrieb, sagt der Computer auch für den neuen Tag viel Betrieb voraus.
Beispiel: drei Nachbarn stimmen ab
| Nachbar | Temperatur | Regen in mm | Er war ein Tag mit |
|---|---|---|---|
| Tag A | 19 | 0 | viel Betrieb |
| Tag B | 21 | 0 | viel Betrieb |
| Tag C | 17 | 4 | wenig Betrieb |
| Ergebnis bei k = 3 | Zwei gegen eins: viel Betrieb |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Bevor du anfängst
Notiz
Drück oben in der Leiste auf Lab starten und warte, bis JupyterLab läuft. Die Befehle tippst du im Terminal neben dem Lab. Die Skripte drucken englische Wörter. busy heißt viel los (mindestens 300 Leihen am Tag), quiet heißt ruhig, accuracy heißt Trefferquote.
Ein Modell lernt volle Tage zu erkennen
docker exec jupyter python3 steps/knn.pyHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Beispiel: was knn.py druckt
| Zeile der Ausgabe | Bedeutung | Wert |
|---|---|---|
| busy days in the year | Tage mit viel Betrieb | 131 von 365 |
| accuracy | Anteil richtiger Vorhersagen an den Testtagen | 0,815 |
| always saying quiet | Trefferquote, wenn man immer „ruhig“ rät | 0,641 |
| Die Tabelle aus Zahlen | Zeilen: Wahrheit, Spalten: Vorhersage (busy, quiet) | 23 und 10, 7 und 52 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Wie groß soll k sein?
Mit k gleich 1 schaut der Computer nur auf einen Nachbarn. Er lernt dann sogar den Zufall der Trainingsdaten auswendig. Das nennt man Überanpassung.
Bei sehr großem k stimmen so viele Tage ab, dass jede Besonderheit untergeht. Ein mittleres k ist meist am besten. Das Skript knnk.py probiert sechs Werte aus.
Sechs Werte für k nebeneinander prüfen
docker exec jupyter python3 steps/knnk.pyHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Beispiel: was knnk.py druckt
| k | Trefferquote an den Lerntagen | Trefferquote an den Testtagen |
|---|---|---|
| 1 | 0,963 | 0,728 |
| 5 | 0,883 | 0,815 |
| 45 | 0,832 | 0,826 |
| 135 | 0,821 | 0,826 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein häufiger Fehler
Warnung
Viele denken, ein Modell mit fast hundert Prozent Treffern an den Lerntagen sei das beste. Bei k gleich 1 sind es 0,963, an neuen Tagen aber nur 0,728. Es hat die Beispiele auswendig gelernt. Wähle das Modell, das an den Testtagen gut ist.
Warum können Modelle unfair sein?
Ein Modell kennt nur seine Beispiele. Stammen sie nur aus einem Jahr oder nur von einer Gruppe von Menschen, gilt das Gelernte auch nur dafür. Diese Schieflage heißt Verzerrung.
Hier gibt es nur Tage eines einzigen Jahres. Ein sehr heißer Sommer wäre dem Modell fremd. Frag bei jedem Modell: Wessen Daten fehlen?
Weiterführend: Gruppen ohne Namen finden
Das Skript kmeans.py lernt ohne Antworten: Es teilt die Tage selbst in drei Gruppen. Drück auf Terminal öffnen und tipp docker exec jupyter python3 steps/kmeans.py.
Es druckt je Gruppe die mittlere Temperatur, die mittleren Leihen und die Zahl der Tage. Gib jeder Gruppe einen Namen, der zu ihren Zahlen passt.