Training & Optimierung: Wie lernt ein Modell?

lock
Bevorstehend

Fehlerfunktion Loss Overfitting und Train/Test-Split verstehen. Praktische Übung mit Python und scikit-learn.

Ziele dieses Moduls
  • Die SuS können die Konzepte Fehlerfunktion (Loss), Overfitting und Train/Test-Split erklĂ€ren und deren Bedeutung fĂŒr das ML-Training begrĂŒnden.
    Verstehen
  • Die SuS können mit Python und scikit-learn ein einfaches ML-Modell trainieren und Train- sowie Test-Score interpretieren.
    Anwenden

Training: Fehlerfunktion & Optimierung

Wie weiss ein Modell ob es richtig liegt? Und wie wird es besser?

Vorhersage vs. RealitÀt

Das Modell macht eine Vorhersage Ć· (y-Hut). Der tatsĂ€chliche Wert heisst y. Der Fehler ist die Differenz: Fehler = y − Ć·.

Iu

Loss / Verlustfunktion

Die Loss-Funktion misst wie falsch das Modell insgesamt liegt. Ein bekanntes Mass: der mittlere quadratische Fehler (MSE) – er quadriert alle Einzel fehler und mittelt sie.

Je kleiner der Loss desto besser das Modell.

Training = Fehler minimieren

Beim Training werden die Parameter (Gewichte) des Modells schrittweise angepasst bis der Fehler möglichst klein ist. Das ist wie ein Gradientenabstieg: man «rutscht» den Fehlerberg hinunter.

Overfitting

Wenn das Modell die Trainingsdaten auswendig lernt statt die zugrundeliegenden Muster. Folge: Es funktioniert perfekt bei den Trainingsdaten aber schlecht bei neuen Daten.

Train/Test-Split

Deshalb teilen wir die Daten auf:

  • Trainingsdaten (z.B. 75%): Zum Trainieren des Modells
  • Testdaten (z.B. 25%): Zum ÜberprĂŒfen ob das Modell wirklich generalisiert

Wenn der Trainings-Score hoch ist aber der Test-Score niedrig → Overfitting!

Challenge

Aufgabe · Lineare Regression mit Python (20 min)

Du arbeitest mit scikit-learn der wichtigsten ML-Bibliothek fĂŒr Python.

Deine Aufgabe

  1. FĂŒhre den Starter-Code aus und beobachte den Train- und Test-Score
  2. VerĂ€ndere test_size (z.B. 0.1 0.5) – was passiert?
  3. Provoziere Overfitting: Verwende ein komplexeres Modell (z.B. PolynomialFeatures mit Grad 10)

Fragen zum Beantworten

  • Was bedeutet ein Score von 1.0 auf Trainingsdaten aber 0.3 auf Testdaten?
  • Warum ist der Test-Score wichtiger als der Trainings-Score?
  • Ab wann wĂŒrdest du sagen: «Das Modell ist overfitted»?

Note

Voraussetzung

Öffne ein Terminal in VS Code und installiere scikit-learn:

pip install scikit-learn numpy

Danach kannst du den Starter-Code direkt ausfĂŒhren.

from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
import numpy as np

# Beispieldaten: Lernzeit (h) → Testergebnis (Punkte)
X = np.array([[1], [2], [3], [4], [5], [6], [7], [8]])
y = np.array([40, 50, 55, 60, 68, 72, 78, 85])

# Train/Test-Split (75% Train, 25% Test)
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.25, random_state=42
)

# Modell erstellen und trainieren
model = LinearRegression()
model.fit(X_train, y_train)

# Scores ausgeben
print("Train-Score:", model.score(X_train, y_train))
print("Test-Score: ", model.score(X_test, y_test))
print("Vorhersage fĂŒr 5h Lernzeit:", model.predict([[5]]))

Reflection

Reflexion & Diskussion: Was kann ML – was nicht?

Think-Pair-Share: Diskutiert mit deinem Nachbarn – wo sind die Grenzen von ML?

Was braucht ein gutes Modell zwingend?

  • Genug (reprĂ€sentative) Trainingsdaten: Wenige oder einseitige Daten → schlechte Vorhersagen
  • Korrekte Labels bei Supervised Learning: Falsche Labels → falsches Modell
  • Geeignete Problemstruktur: Nicht jedes Problem ist ML-geeignet. Manchmal reicht eine einfache Regel

ML kann nicht...

  • ... «verstehen» was es tut – es erkennt nur statistische Muster
  • ... commonsense-Entscheidungen treffen ohne Trainingsdaten
  • ... erklĂ€ren warum es eine Entscheidung getroffen hat (Black-Box-Problem)