Machine Learning von Grund auf · Lektion 4.1 · 20 von 33 fertigen Lektionen · 12 Min.
Exploration: erst schauen, dann modellieren
Kurz gesagt
Vier Datensätze mit gleichem Mittelwert, Korrelation 0,82 und Gerade sehen völlig verschieden aus. Zeichne die Daten, bevor du Zahlen und Modellen traust.
Aufwärmen Zwei Fragen aus früheren Lektionen. Eine Minute, und sie blockiert die Lektion nicht.
Modul 4 beginnt vor dem Modell. Bevor du irgendetwas trainierst, schau dir die Daten an. Explorative Datenanalyse (EDA, vom englischen exploratory data analysis) heißt: die Daten zeichnen und einfache Zusammenfassungen berechnen, um zu sehen, womit du es zu tun hast: Form, Gruppen, Punkte weit weg vom Rest. Ein Mittelwert oder eine Korrelation ist eine Zusammenfassung, und eine Zusammenfassung kann genau das Wichtige verstecken. Heute zwei Beispiele: Anscombes vier kleine Datensätze und die Pinguine aus Lektion 0.1.
Wähle eine Antwort und wie sicher du bist.
Antworte, um das Labor freizuschalten.
Interaktives Labor
Dieses interaktive Labor läuft im Browser mit aktiviertem JavaScript. Der Text drumherum beschreibt, was es zeigt.
Antwort anzeigen
Richtige Antwort: Völlig verschieden: eine Wolke, ein Bogen, ein Ausreißer und ein ferner Punkt
Völlig verschieden. Datensatz I ist eine Wolke um die Gerade. Datensatz II liegt auf einem Bogen: Eine Parabel erklärt R² = 1,000 der Streuung von y, die Gerade nur 0,666. In Datensatz III liegen zehn Punkte fast genau auf einer anderen, flacheren Geraden (Steigung 0,345), und ein Ausreißer zieht die angepasste Gerade zu sich, bis zur Steigung 0,5. In Datensatz IV haben zehn Punkte dasselbe x = 8, und ein einziger Punkt bei (19; 12,50) legt die Gerade fest.
Probier es aus
- Klicke dich durch die Datensätze I–IV. Welche Zahlen unter den Diagrammen ändern sich, welche bleiben gleich?
- In welchem Datensatz legt ein einziger Punkt die Gerade fest? Was würde ohne ihn mit der Geraden passieren?
- Wechsle zu den Pinguinen und wähle Schnabellänge × Schnabelhöhe. Welches Vorzeichen hat die Korrelation? Teile die Pinguine dann nach Art auf.
- Prüfe dasselbe Paar aufgeteilt nach Insel. Warum ist das Bild anders als bei den Arten?
Wenn du es im Lab geprüft hast, geben wir dem, was du siehst, einen Namen.
Die Idee in einfachen Worten
Kennzahlen, also Mittelwert, Varianz, Korrelation und Regressionsgerade, fassen Daten in wenigen Zahlen zusammen. Eine Zusammenfassung verliert immer etwas. Francis Anscombe baute 1973 vier Datensätze mit je 11 Punkten, in denen diese Zahlen fast identisch sind: Mittelwert von x 9, von y 7,50, Varianz von x 11, von y 4,12–4,13, Korrelation 0,816, Gerade y = 3,00 + 0,500·x. Im Diagramm ist Datensatz I eine Wolke, II ein Bogen, III eine Gerade mit einem Ausreißer, IV eine senkrechte Säule mit einem fernen Punkt. Eine lineare Regression liefert für jeden dieselbe Gerade, obwohl sie nur den ersten sinnvoll beschreibt.
Die Pinguine zeigen dasselbe an echten Daten. Über alle 342 Pinguine beträgt die Korrelation von Schnabellänge und Schnabelhöhe −0,235: je länger der Schnabel, desto flacher. Nach Arten aufgeteilt kehrt sich das Vorzeichen um: Adelie 0,391, Chinstrap 0,654, Gentoo 0,643. Innerhalb jeder Art ist ein längerer Schnabel auch höher. Eine Zahl für den ganzen Datensatz beschreibt einen Zusammenhang, den es in keiner Gruppe gibt.
Jak to policzono
- Quartett: Anscombe (1973), The American Statistician. 4 Datensätze mit je 11 Punkten, Kopie aus dem Repository seaborn-data. Varianz geteilt durch n − 1.
- Pinguine: Palmer Penguins (Gorman, Williams und Fraser, 2014; Paket palmerpenguins: Horst, Hill und Gorman, 2020), Lizenz CC0. 342 Pinguine mit Schnabelmaßen, 3 Arten: Adelie 151, Chinstrap 68, Gentoo 123.
- Korrelation r: Pearson-Koeffizient, von −1 bis 1; 0 heißt: kein linearer Zusammenhang.
- Geraden: kleinste Quadrate, getrennt für jeden Datensatz und jede Gruppe.
Warum es funktioniert
Woher kommt das umgekehrte Vorzeichen bei den Pinguinen? Gentoo haben lange, aber flache Schnäbel: im Mittel 47,5 mm lang und 15,0 mm hoch. Adelie haben kurze, hohe Schnäbel: 38,8 und 18,3 mm. Eine einzige Korrelation für alle vergleicht vor allem die Arten miteinander: Gentoo liegen unten rechts im Diagramm, Adelie oben links, also fällt die Gerade durch alle Punkte. Innerhalb jeder Art ist der Zusammenhang positiv, weil ein größerer Pinguin in beide Richtungen einen größeren Schnabel hat. Das ist das Simpson-Paradox: Wenn sich Gruppen in ihren Mittelwerten unterscheiden, kann der Zusammenhang im Ganzen das umgekehrte Vorzeichen haben wie in jeder Gruppe.
Im Quartett ist der Mechanismus noch einfacher. Mittelwert, Varianz und Korrelation sind Summen über die Punkte, und verschiedene Anordnungen von Punkten ergeben dieselben Summen, so wie verschiedene Zahlenreihen denselben Mittelwert haben. Am stärksten ziehen Punkte weit weg vom Rest. In Datensatz IV legt der Punkt bei x = 19 allein die Steigung fest, denn die anderen 10 Punkte haben dasselbe x = 8 und sagen nichts über die Richtung.
Ist das Ergebnis bei den Pinguinen ein Zufall dieser einen Stichprobe? Im Code unten ziehen wir die Pinguine 1000-mal mit Zurücklegen neu: gleich viele Pinguine, manche doppelt, manche gar nicht. In 1000 von 1000 Ziehungen ist die Korrelation über alle negativ und in jeder Art positiv.
Häufiger Fehler
Richtig oder falsch: „Kennzahlen reichen; wenn zwei Datensätze denselben Mittelwert, dieselbe Varianz und Korrelation haben, sehen sie ähnlich aus“. Falsch. Im Lab haben Anscombes vier Datensätze diese Zahlen bis auf zwei Nachkommastellen gemeinsam und sehen völlig verschieden aus. Zahlen fassen zusammen: Sie zeigen weder die Form noch die Gruppen noch einzelne Punkte, die am Ergebnis ziehen. Bei den Pinguinen sagt eine Korrelation von −0,235 „längerer Schnabel, flacherer Schnabel“, und in jeder Art ist es umgekehrt.
Für ein Modell hat das konkrete Folgen. Eine lineare Regression auf Datensatz II sagt eine Gerade vorher, wo die Daten auf einem Bogen liegen. Ein Pinguin-Modell, das die Art nicht kennt, lernt einen negativen Zusammenhang, den es in keiner Art gibt. Deshalb zeichnest du zuerst die Daten und wählst erst dann Modell und Merkmale.
Quiz
Drei Fragen zur Selbstkontrolle. Wähle eine Antwort oder klappe die Lösung unter der Frage auf. Mit der Tastatur: Pfeiltasten wählen, Enter oder Leertaste bestätigt.
Das Wichtigste
- Bevor du ein Modell baust, zeichne die Daten: die Verteilung jedes Merkmals, Paare von Merkmalen und Gruppen.
- Dieselben Mittelwerte, Varianzen und Korrelationen können eine Wolke, einen Bogen, einen Ausreißer oder einen Hebelpunkt verbergen.
- Ein Zusammenhang in den ganzen Daten kann das umgekehrte Vorzeichen haben wie in jeder Gruppe (Simpson-Paradox); färbe Diagramme nach Gruppen.
- Ein einziger ferner Punkt kann die Gerade allein festlegen: Prüfe, was sich ohne ihn ändert.
Tiefer: Formel, Code, Praxis
Die Mathematik
Pearson-Korrelation: r = Σ(xᵢ − x̄)(yᵢ − ȳ) / √(Σ(xᵢ − x̄)² · Σ(yᵢ − ȳ)²). Gerade der kleinsten Quadrate: b = r · s_y / s_x, a = ȳ − b · x̄. Die Gerade hängt also nur von den Mittelwerten, den Standardabweichungen und der Korrelation ab: Datensätze mit diesen gemeinsamen Zahlen haben dieselbe Gerade, wie auch immer sie aussehen.
Das Simpson-Paradox in einer Korrelation entsteht, wenn man die Kovarianz nach Gruppen zerlegt: cov(x, y) = Σ_g p_g · cov_g(x, y) + Σ_g p_g · (x̄_g − x̄)(ȳ_g − ȳ), wobei p_g der Anteil der Gruppe g ist. Der erste Term ist der Zusammenhang innerhalb der Gruppen, der zweite der Zusammenhang zwischen den Gruppenmittelwerten. Liegen die Gruppenmittelwerte auf einer fallenden Linie, ist der zweite Term negativ und kann den positiven ersten überwiegen.
Im Code (Python)
Dieselbe Rechnung in pandas: die Zahlen des Quartetts, die Schnabelkorrelation über alle Pinguine und innerhalb der Arten, und 1000 Ziehungen mit Zurücklegen, die prüfen, ob das umgekehrte Vorzeichen ein Zufall dieser Stichprobe ist.
import numpy as np
import pandas as pd
q = pd.read_csv("data/raw/anscombe.csv")
for name, d in q.groupby("dataset"):
slope, intercept = np.polyfit(d.x, d.y, 1)
print(f"set {name}: mean x {d.x.mean():.2f}, mean y {d.y.mean():.2f}, variance x {d.x.var():.2f}, variance y {d.y.var():.2f}, r {d.x.corr(d.y):.3f}, line y = {intercept:.2f} + {slope:.3f}x")
df = pd.read_csv("data/raw/penguins.csv").dropna(subset=["bill_length_mm", "bill_depth_mm"])
r = lambda d: d.bill_length_mm.corr(d.bill_depth_mm)
print(f"{len(df)} penguins, bill length vs bill depth: all r = {r(df):.3f}; " + ", ".join(f"{s} {r(g):.3f}" for s, g in df.groupby("species")))
rng = np.random.default_rng(0)
same = 0
for b in range(1000):
s = df.sample(len(df), replace=True, random_state=rng) # Ziehung mit Zurücklegen: gleich viele Pinguine, manche doppelt
same += r(s) < 0 and all(r(g) > 0 for _, g in s.groupby("species"))
print(f"1000 bootstrap resamples: negative over all and positive in every species in {same}")
Ausgabe
set I: mean x 9.00, mean y 7.50, variance x 11.00, variance y 4.13, r 0.816, line y = 3.00 + 0.500x
set II: mean x 9.00, mean y 7.50, variance x 11.00, variance y 4.13, r 0.816, line y = 3.00 + 0.500x
set III: mean x 9.00, mean y 7.50, variance x 11.00, variance y 4.12, r 0.816, line y = 3.00 + 0.500x
set IV: mean x 9.00, mean y 7.50, variance x 11.00, variance y 4.12, r 0.817, line y = 3.00 + 0.500x
342 penguins, bill length vs bill depth: all r = -0.235; Adelie 0.391, Chinstrap 0.654, Gentoo 0.643
1000 bootstrap resamples: negative over all and positive in every species in 1000
Die vier Datensätze unterscheiden sich erst in der dritten Nachkommastelle. Bei den Pinguinen ist das umgekehrte Vorzeichen kein Zufall dieser Stichprobe: Es hält in 1000 von 1000 Ziehungen mit Zurücklegen.
Notebook herunterladen (.ipynb). Öffne es in Jupyter oder lade es in Google Colab hoch; fehlende Daten lädt es selbst.
Für die Praxis
- In pandas:
df.describe(),df.isna().sum()unddf.groupby("species").mean(). In seaborn zeichnetpairplot(df, hue="species")alle Paare von Messungen in Gruppenfarben mit einem Aufruf. - Sieh dir die Verteilung jedes Merkmals (Histogramm), Paare von Merkmalen (Streudiagramm) und fehlende Werte an, bevor du irgendetwas aufteilst oder trainierst.
- Mach die EDA, die Entscheidungen lenkt (Merkmale wählen, Schwellen, Zeilen entfernen), auf dem Trainingsteil. Für solche Entscheidungen auf die Testdaten zu schauen ist ein Datenleck (Lektion 4.5).
- Schreib auf, was du gesehen hast: Gruppen, Ausreißer, seltsame Codes (z. B. 0 statt eines fehlenden Werts). Das ist eine Liste von Dingen, die du prüfst, wenn sich das Modell seltsam verhält.
War das hilfreich?
Danke! Das hilft uns, besser zu werden.
Mehr im Atlas
Einträge der Enzyklopädie zu den Ideen dieser Lektion: