ML Atlas

Machine Learning von Grund auf · Lektion 1.3 · 4 von 33 fertigen Lektionen · 12 Min.

Der Vergleichswert: Womit vergleichst du dein Modell?

Kurz gesagt

Bevor du ein Modell lobst, rechne das Ergebnis ohne Lernen aus: häufigste Klasse oder Mittelwert. Sind Kranke selten, trifft „immer gesund“ und findet keinen.

Aufwärmen Zwei Fragen aus früheren Lektionen. Eine Minute, und sie blockiert die Lektion nicht.
Aus Lektion 1.2: Daten, Merkmale, Labels und Aufteilung Du änderst nur den Zufallsstartwert der Aufteilung, und die Testgenauigkeit verschiebt sich. Was zeigt das?

Antwort anzeigen

Richtige Antwort: Der Testwert ist eine Schätzung und hängt von der Aufteilung der Zeilen ab

Andere Seeds liefern andere Testzeilen, also schwankt der Wert zufällig – umso mehr, je kleiner die Testdaten sind.

Aus Lektion 1.1: Was ist maschinelles Lernen? Ein Modell liegt bei diesen Tumordaten in etwa 60 % der Fälle richtig. Warum ist das nicht beeindruckend?

Antwort anzeigen

Richtige Antwort: Weil die Antwort „immer gutartig“ schon in fast zwei Dritteln der Fälle stimmt

Die meisten Tumoren im Datensatz sind gutartig, also muss ein Modell erst die triviale Mehrheitsantwort schlagen, bevor es nützlich ist.

In Lektion 0.1 erkannte der Baum 95,1 % der Pinguine, Raten nur 43,7 %. Diese zweite Zahl ist der Vergleichswert (englisch baseline): das Ergebnis einer Antwort, die nichts lernt. Ohne ihn weißt du nicht, ob ein Modell überhaupt etwas gelernt hat. Heute siehst du, wie man ihn in zwei Aufgaben berechnet und wann die Genauigkeit allein täuscht. Die Daten: 569 Biopsien von Brusttumoren und 442 Patienten mit Diabetes.

Erst vorhersagen, dann prüfen Im Test bleiben 107 gutartige Biopsien und nur 1 bösartige. Das „Modell“ antwortet bei jeder Biopsie „gutartig“. Welche Genauigkeit erreicht es, und wie viele bösartige findet es?
Wie sicher bist du?

Interaktives Labor

Dieses interaktive Labor läuft im Browser mit aktiviertem JavaScript. Der Text drumherum beschreibt, was es zeigt.

Antwort anzeigen

Richtige Antwort: Etwa 99 %, mehr als die gelernte Regel, und es findet keine einzige

107 von 108 Biopsien sind 99,1 % Genauigkeit, und die bösartige rutscht durch. Die gelernte Regel mit einer Schwelle erreicht in diesem Test 90,7 %, also weniger, aber sie findet die bösartige Biopsie. Im vollen Test mit 64 bösartigen kommt „immer gutartig“ nur auf 62,6 %.

Probier es aus

  • Beginne mit den Biopsien und allen 64 bösartigen. Um wie viel schlägt die gelernte Regel „immer gutartig“?
  • Schieb den Regler nach rechts, bis nur noch 5 bösartige übrig sind, dann 1. Was passiert mit der Genauigkeit von „immer gutartig“ und mit der Zahl der gefundenen bösartigen?
  • Wechsle zu Diabetes. Vergleiche den Fehler der Geraden mit BMI und des Modells mit 10 Messwerten mit dem Fehler des Mittelwerts allein.

Wenn du es im Labor geprüft hast, benennen wir, was du siehst.

Die Idee in einfachen Worten

Der Vergleichswert ist die einfachste Antwort, die man ohne Lernen geben kann. In der Klassifikation ist das die häufigste Klasse: Von den 398 Lernbiopsien sind 250 gutartig, also lautet die Antwort immer „gutartig“. In der Regression ist es der Mittelwert: Jeder Patient bekommt denselben vorhergesagten Krankheitsverlauf, den Durchschnitt der Lernpatienten.

Ein Modell ist erst sinnvoll, wenn es den Vergleichswert auf denselben Testdaten deutlich schlägt. Bei den Biopsien erreicht die Regel mit einem Messwert und einer Schwelle 91,2 % gegenüber 62,6 %. Bei Diabetes hat das Modell mit 10 Messwerten einen Fehler von 2827 gegenüber 5076 für den Mittelwert, also 44,3 % weniger. Eine Gerade nur mit BMI senkt den Fehler bloß um 19,3 %.

Es gibt auch einen schwächeren Vergleichswert: Raten im Verhältnis, also „gutartig“ mit einer Wahrscheinlichkeit gleich dem Anteil gutartiger Lernbiopsien. Im Mittel trifft das 53,2 %, weniger als „immer gutartig“. Deshalb nimmt man die häufigste Klasse als Vergleichswert: Zufallsraten ist leichter zu schlagen als echtes Verständnis.

Jak to policzono
  • Biopsien: Breast Cancer Wisconsin (Diagnostic), UCI, Lizenz CC BY 4.0. 569 Biopsien (357 gutartig, 212 bösartig), 10 Messwerte der Zellkerne.
  • Diabetes: der Datensatz Diabetes (Efron u. a., 2004), der mit scikit-learn ausgeliefert wird; die Autoren haben keine Lizenz angegeben. 442 Patienten, 10 Messwerte, Krankheitsverlauf ein Jahr später.
  • Aufteilung 70/30, dieselbe wie train_test_split(test_size=0.3, random_state=1) in scikit-learn; Biopsien geschichtet. Im Test sind 171 Biopsien und 133 Patienten.
  • Regel: ein Entscheidungsbaum mit einer Frage (CART). Regressionsmodell: kleinste Quadrate.

Warum es funktioniert

Die Genauigkeit von „immer die häufigste Klasse“ ist einfach der Anteil dieser Klasse im Test. Im vollen Test sind 107 von 171 Biopsien gutartig, daher 62,6 %. Lässt du 1 bösartige übrig, sind 107 von 108 gutartig, daher 99,1 %. Die Genauigkeit des Vergleichswerts sagt nichts über die Biopsien. Sie sagt nur, wie selten die andere Klasse ist.

Deshalb trennt die Genauigkeit bei einer seltenen Klasse kein gutes Modell mehr von einem nutzlosen. Mit 5 bösartigen im Test erreicht „immer gutartig“ 95,5 % und die Regel 91,1 %, obwohl nur die Regel alle 5 findet. Das ist keine glückliche Aufteilung: Bei 100 verschiedenen Aufteilungen schlägt „immer gutartig“ die Regel bei der Genauigkeit in 82. Was hilft, ist eine zweite Zahl neben der Genauigkeit: wie viele Fälle der seltenen Klasse das Modell wirklich gefunden hat.

In der Regression ist der Mittelwert die beste konstante Antwort: Keine andere einzelne Zahl hat auf den Lerndaten eine kleinere mittlere quadratische Abweichung. Jedes Modell mit Messwerten sollte ihn schlagen, und hier tut es das immer. Bei 100 Aufteilungen haben die Gerade mit BMI und das Modell mit 10 Messwerten jedes Mal einen kleineren Fehler als der Mittelwert, im Mittel 33,7 % und 48,5 % weniger.

Häufiger Fehler

Richtig oder falsch: „90 % Genauigkeit sind viel“. Falsch, genauer: Die Zahl allein sagt das nicht. Wenn 1 von 100 Menschen krank ist, hat der Test „immer gesund“ 99 % Genauigkeit und findet niemanden. Ein Modell mit 90 % wäre dann bei der Genauigkeit schlechter als nichts und könnte trotzdem sehr wertvoll sein, wenn es die Kranken findet. Gib immer den Vergleichswert neben dem Ergebnis an und prüfe, wie viele Fälle der seltenen Klasse das Modell gefunden hat.

Wo der Vergleich hinkt: Der Vergleichswert ist eine Untergrenze, kein Ziel. Ihn um Haaresbreite zu schlagen, bedeutet meist nichts, weil eine andere Aufteilung der Daten das Ergebnis umdrehen kann.

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.

1. Was ist der Vergleichswert in der Klassifikation?
Antwort anzeigen

Richtige Antwort: Die Antwort „immer die häufigste Klasse in den Lerndaten“

Der Vergleichswert ist das Ergebnis einer Antwort ohne Lernen. Hier erreicht „immer gutartig“ im vollen Test 62,6 %, und jedes Modell muss ihn deutlich schlagen.

2. Der Test hat 108 Biopsien, davon 1 bösartige. „Immer gutartig“ erreicht 99,1 %, die Regel 90,7 %. Was ist besser fürs Screening?
Antwort anzeigen

Richtige Antwort: Die Regel, weil sie die bösartige findet und „immer gutartig“ nie

Bei einer seltenen Klasse belohnt die Genauigkeit, sie zu ignorieren. „Immer gutartig“ findet nie eine bösartige Biopsie, egal wie viele es gibt.

3. Ein Regressionsmodell hat einen Fehler von 4096, der Mittelwert 5076. Um wie viel ist das Modell besser als der Vergleichswert?
Antwort anzeigen

Richtige Antwort: Um 19,3 %, denn 1 − 4096 / 5076 ≈ 0,193, und das ist nicht viel

Du vergleichst mit dem Vergleichswert: Die Gerade mit BMI senkt den Fehler um 19,3 %, das Modell mit 10 Messwerten um 44,3 %.

Das Wichtigste

  • Der Vergleichswert ist das Ergebnis ohne Lernen: die häufigste Klasse in der Klassifikation, der Mittelwert in der Regression.
  • Ein Modell vergleichst du mit dem Vergleichswert auf denselben Testdaten, nicht mit null.
  • Ist eine Klasse selten, trifft „immer die häufige Klasse“ oft und findet niemanden; gib auch an, wie viele seltene Fälle das Modell gefunden hat.
  • Prüf den Vorsprung an vielen Aufteilungen, denn eine einzelne kann zufällig gut ausfallen.

Tiefer: Formel, Code, Praxis

Die Mathematik

Die Genauigkeit der Antwort „immer Klasse k“ ist der Anteil dieser Klasse im Test: Genauigkeit = n_k / n. Im vollen Test 107 / 171 ≈ 0,626, mit einer bösartigen Biopsie 107 / 108 ≈ 0,991.

Raten von „gutartig“ mit Wahrscheinlichkeit p (der Anteil gutartiger Lernbiopsien, 250 / 398 ≈ 0,628) trifft im Mittel p · q + (1 − p) · (1 − q), wobei q der Anteil gutartiger Biopsien im Test ist. Im vollen Test sind das etwa 0,532.

In der Regression hat eine konstante Antwort c den Fehler MSE(c) = (1/n) · Σ (yᵢ − c)². Die Ableitung −(2/n) · Σ (yᵢ − c) wird bei c = ȳ null, also liefert der Mittelwert den kleinsten Fehler aller Konstanten. Die relative Verbesserung ist 1 − MSE(Modell) / MSE(Mittelwert): für 10 Messwerte 1 − 2827 / 5076 ≈ 0,443.

Im Code (Python)

Derselbe Versuch in scikit-learn: der Vergleichswert und die Regel mit einer Schwelle auf den Biopsien bei 64, 5 und 1 bösartigen im Test, der Vergleich an 100 Aufteilungen und danach Mittelwert, Gerade mit BMI und das Modell mit 10 Messwerten bei Diabetes.

import numpy as np
from sklearn.datasets import load_breast_cancer, load_diabetes
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.linear_model import LinearRegression

X, y = load_breast_cancer(return_X_y=True)
X = X[:, :10]  # die 10 „mean“-Messwerte wie im Labor; y: 0 = bösartig, 1 = gutartig
def biopsies(seed, keep_malignant):
    tr, te = train_test_split(np.arange(len(y)), test_size=0.3, stratify=y, random_state=seed)
    te = np.sort(te)  # Testzeilen in Dateireihenfolge, wie im Labor
    major = np.bincount(y[tr]).argmax()  # Vergleichswert: die häufigste Klasse unter den Lernbiopsien
    rule = DecisionTreeClassifier(max_depth=1, random_state=0).fit(X[tr], y[tr])  # ein Messwert, eine Schwelle
    rows = np.r_[te[y[te] == 1], te[y[te] == 0][:keep_malignant]]  # alle gutartigen + die ersten m bösartigen
    pred = rule.predict(X[rows])
    return (y[rows] == major).mean(), ((major == 0) & (y[rows] == 0)).sum(), (pred == y[rows]).mean(), ((pred == 0) & (y[rows] == 0)).sum()
for m in (64, 5, 1):
    base, base_found, acc, found = biopsies(1, m)
    print(f"malignant {m}: always benign {base:.3f} (finds {base_found}), rule {acc:.3f} (finds {found})")
wins = sum(biopsies(s, 5)[0] > biopsies(s, 5)[2] for s in range(100))
print(f"100 splits, 5 malignant: always benign beats the rule in {wins}")

Xd, yd = load_diabetes(return_X_y=True)
def diabetes(seed):
    a, b, c, e = train_test_split(Xd, yd, test_size=0.3, random_state=seed)
    mse = lambda p: ((e - p) ** 2).mean()
    return mse(c.mean()), mse(LinearRegression().fit(a[:, [2]], c).predict(b[:, [2]])), mse(LinearRegression().fit(a, c).predict(b))
mean, bmi, full = diabetes(1)
print(f"diabetes: mean {mean:.0f}, BMI {bmi:.0f} ({1 - bmi / mean:.1%} lower), all 10 {full:.0f} ({1 - full / mean:.1%} lower)")
r = np.array([diabetes(s) for s in range(100)])
print(f"100 splits: BMI beats the mean in {(r[:, 1] < r[:, 0]).sum()}, all 10 in {(r[:, 2] < r[:, 0]).sum()}; error lower by {1 - r[:, 1].mean() / r[:, 0].mean():.1%} and {1 - r[:, 2].mean() / r[:, 0].mean():.1%} on average")

Ausgabe

malignant 64: always benign 0.626 (finds 0), rule 0.912 (finds 59)
malignant 5: always benign 0.955 (finds 0), rule 0.911 (finds 5)
malignant 1: always benign 0.991 (finds 0), rule 0.907 (finds 1)
100 splits, 5 malignant: always benign beats the rule in 82
diabetes: mean 5076, BMI 4096 (19.3% lower), all 10 2827 (44.3% lower)
100 splits: BMI beats the mean in 100, all 10 in 100; error lower by 33.7% and 48.5% on average

Bei Aufteilung 1 sind die Zahlen dieselben wie im Labor. Das Modell mit 10 Messwerten im Labor rechnet mit Daten, die auf zwei Nachkommastellen gerundet sind, daher kann sein Fehler um einen Bruchteil von diesem Code abweichen, gerundet sind es aber ebenfalls 2827.

Für die Praxis
  • In scikit-learn liefern DummyClassifier(strategy="most_frequent") und DummyRegressor(strategy="mean") den Vergleichswert. Berechne ihn auf derselben Aufteilung wie das Modell.
  • Bei unausgewogenen Klassen gib neben der Genauigkeit die Sensitivität der seltenen Klasse oder die balancierte Genauigkeit an; „immer die häufige Klasse“ hat eine balancierte Genauigkeit von 50 %.
  • Ein stärkerer Vergleichswert ist oft eine einfache Regel mit einem Messwert oder das Modell, das die Firma schon nutzt. Ein neues Modell muss das beste davon schlagen.
  • Ist der Vorsprung vor dem Vergleichswert klein, prüf ihn an vielen Aufteilungen oder mit Kreuzvalidierung, bevor du ihn verkündest.

Mehr im Atlas

Einträge der Enzyklopädie zu den Ideen dieser Lektion: