Files
cas-pml/SL/notizen/L5_Notizen.md
T
2026-06-11 10:26:23 +02:00

396 lines
20 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Notizen SL Lektion 5 (Foliensatz 1315)
> Thema: Regression, Validierung, MLOps
> Datum: 11.06.2026
> Dozentin: Violeta Vogel
## Regression Definition
- Regression ist ein statistisches Analyseverfahren.
- Ziele:
- Beziehungen zwischen einer abhängigen und einer oder mehreren unabhängigen Variablen modellieren
- Zusammenhänge quantitativ beschreiben
- Werte der abhängigen Variable prognostizieren
## Typen der Regression
- **Einfache lineare Regression**: zwei Variablen, eine abhängige (AV), eine unabhängige (UV)
- **Multiple lineare Regression**: mehrere unabhängige Variablen beeinflussen gemeinsam eine abhängige Variable
- **Logistische Regression**: wenn die abhängige Variable kategorial ist (binär oder multinominal)
- **Ridge / Lasso Regression**: spezielle Formen der linearen Regression, eingesetzt bei **Multikollinearität** (hohe Korrelation zwischen Prädiktoren)
### Wahl der Methode nach Datentyp
Die passende Regressionsart hängt vom Skalenniveau von AV und UV ab:
| Regressionsart | Skala AV (Kriterium) | Skala UV (Prädiktor) |
| ----------------------------- | --------------------------------- | ------------------------------- |
| Einfache lineare Regression | metrisch | metrisch |
| Multiple lineare Regression | metrisch | metrisch / ordinal / dichotom |
| Logistische Regression | dichotom | intervallskaliert / diskret / beliebig |
| Multinominale logistische R. | kategorial (binär/multinominal) | beliebig |
## Korrelation
- Beschreibt, **wie** Variablen zusammenhängen.
- Arten:
- **positiver Zusammenhang**: höhere Werte der einen Variable → höhere Werte der anderen
- **negativer Zusammenhang**: höhere Werte der einen → niedrigere der anderen
- **kein Zusammenhang**: Veränderung der einen hat keinen Einfluss auf die andere
> ⚠️ Achtung: $r \approx 0$ heisst nur **kein _linearer_** Zusammenhang. Ein klarer nichtlinearer Zusammenhang (z.B. parabelförmig) kann trotzdem $r \approx 0$ haben. → immer auch den Scatterplot anschauen.
## Korrelation und Regression
- **Korrelation**: Frage nach dem Zusammenhang zwischen zwei Variablen.
- **Regression**: nutzt diesen Zusammenhang, um Werte der einen Variable auf Basis der anderen **vorherzusagen**.
## Residuum
- Der Abstand aller Punkte zur Vorhersagelinie soll minimal sein.
- Dieser Abstand (Wert Vorhersage) heisst **Residuum** (Rest).
- Bestimmt mit der **Methode der kleinsten Quadrate** (Minimierung der Fehlerquadratsumme).
## Einfache lineare Regression
- Untersucht die lineare Beziehung zwischen zwei stetigen Variablen.
### Regressionsgleichung
$$\hat{y}_i = a + b \cdot x_i$$
- $\hat{y}_i$: vorhergesagter Wert (Schätzung, kann vom echten Wert abweichen)
- $a$: Schnittpunkt mit der y-Achse (Ordinatenabschnitt / Intercept)
- $b$: Steigung der Geraden (Regressionskoeffizient / Regressionsgewicht)
- $x_i$: Wert der Variablen, die zur Vorhersage genutzt wird
*Beispiel:* $\hat{y} = 0{,}5x + 1$, für $x = 5$ → $\hat{y} = 0{,}5 \cdot 5 + 1 = 3{,}5$
### Voraussetzungen für die lineare Regression
- linearer Zusammenhang zwischen den Variablen
- Skalenniveau von AV und UV metrisch (konkrete Zahlenwerte, z.B. Körpergrösse)
- Residuen sollen untereinander **keine Korrelation** aufweisen
- Residuen sollen **konstant über den ganzen Wertebereich** der AV streuen → **Homoskedastizität**
- möglichst wenig Ausreisser (haben grossen Einfluss auf die Vorhersagegüte)
## Multiple lineare Regression
- Mehrere unabhängige Variablen (**Prädiktoren**) erklären gemeinsam $y$.
### Regressionsgleichung
$$\hat{y}_i = a + b_1 x_{1i} + b_2 x_{2i} + \dots + b_k x_{ki}$$
- jeder Term $b_k \cdot x_{ki}$ ist ein **Prädiktor**
- mit Fehlerterm geschrieben: $y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \dots + \beta_k x_k + \varepsilon$
- jeder Koeffizient $\beta_k$ zeigt den Einfluss seiner Variable auf $y$, **während die anderen Variablen konstant gehalten werden** (das ist der Kernunterschied zur einfachen Regression)
> **Merksatz:** Jede multiple Regression ist eine lineare Regression (linear in den Koeffizienten), aber nicht jede lineare Regression ist multipel. Die multiple Regression erweitert die einfache um mehrere Einflussgrössen.
### Regressionsgewicht
- **Unstandardisiert ($b$)**
- Wertebereich abhängig von der gewählten Skala
- inhaltlich interpretierbar
- zwischen Prädiktoren nur vergleichbar, wenn diese auf derselben Skala gemessen wurden
- **Standardisiert ($\beta$)** (an der Standardabweichung normiert)
- Wertebereich $[-1, +1]$
- inhaltlich **nicht** interpretierbar
- zwischen Prädiktoren vergleichbar
- interpretierbar wie Korrelationen ($r$)
### Output-Tabelle lesen (b, β, T, Sig.)
| Spalte | Bedeutung |
| -------- | ------------------------------------------------------------------------- |
| (Konstante) | Ordinatenabschnitt ($a$ bzw. $\beta_0$) |
| $b$ | unstandardisiertes Regressionsgewicht |
| $\beta$ | standardisiertes Regressionsgewicht |
| $T$ | Teststatistik: hat der Prädiktor einen signifikanten Einfluss? |
| Sig. | p-Wert: kleiner Wert (z.B. < 0.05) → Einfluss vermutlich **nicht zufällig** |
> Sternchen sind Signifikanzniveaus: `*` p<0.05, `**` p<0.01, `***` p<0.001.
> Im Folienbeispiel: *Geschmack* (0.001 \*\*) und *Preis* (0.000 \*\*\*) signifikant, *Aussehen* (0.682) nicht.
### Voraussetzungen für die multiple lineare Regression
- Skalenniveau von AV und UV metrisch
- linearer Zusammenhang Prädiktoren ↔ AV (grafisch prüfen)
- Residuen normalverteilt (bei ausreichend grosser Stichprobe vernachlässigbar)
- **Homoskedastizität**: Streuung der y-Werte über den ganzen Wertebereich von x homogen (Levene-Test oder grafisch)
- wenig Ausreisser / einflussreiche Punkte (Leverage-Analyse)
- Residuen dürfen nicht korrelieren — unkritisch, solange die Korrelation **zwischen den Prädiktoren** den Schwellenwert $r = 0{,}8$ nicht überschreitet
## Multiple vs. lineare Regression
| Merkmal | Lineare Regression | Multiple Regression |
| ---------------------- | ------------------------------------- | -------------------------------------------------- |
| Anzahl unab. Variablen | 1 | 2 oder mehr |
| Ziel | Zusammenhang $x \leftrightarrow y$ untersuchen | gemeinsamen Einfluss mehrerer Variablen auf $y$ untersuchen |
| Beispiel | Umsatz durch Werbebudget erklären | Umsatz durch Werbebudget, Preis und Saison erklären |
| Grafische Darstellung | Gerade in 2D | Ebene bzw. Hyperfläche in mehreren Dimensionen |
## Use Cases für Regression
Mögliche Zuordnungen (UV → AV, Ziel = Vorhersage der AV):
| Gebiet | Unabhängige Variablen (UV) | Abhängige Variable (AV) |
| ---------------- | --------------------------------------- | ----------------------- |
| Immobilienpreise | Alter des Gebäudes, Anzahl Zimmer, Wohnfläche | Verkaufspreis |
| Gehaltsanalyse | Berufserfahrung, Ausbildung | Gehalt |
| Autopreise | gefahrene Kilometer, Gewicht, Baujahr | Fahrzeugpreis |
| Medizin | Alter, Gewicht, Blutdruck | Krankheitsrisiko |
| Sportanalyse | Trainingsstunden, Gewicht | Leistung / Platzierung |
| Finanzdaten | Einkommen, Ausbildung, Schulden | Kreditwürdigkeit |
> Hinweis: Beispiel-Mappings, in der Lektion nicht abschliessend von der Dozentin durchgegangen.
## Herausforderungen bei der Regression
- **Nichtlineare Zusammenhänge**: lineare Regression unterstellt Linearität; real oft komplexer (z.B. Alter → Einkommen selten streng linear)
- **Multikollinearität**: stark korrelierte Prädiktoren → einzelne Effekte schwer trennbar (z.B. Wohnfläche vs. Anzahl Zimmer)
- **Ausreisser**: wenige Extremwerte können die Gerade stark verzerren
- **Overfitting**: Modell passt sich zu stark an Trainingsdaten an, generalisiert schlecht
- **Underfitting**: Modell zu einfach, erfasst wichtige Muster nicht
- **Heteroskedastizität**: Fehlerstreuung nicht konstant → Schätzungen/Tests unzuverlässig
- **Fehlende Daten**: verzerrte Ergebnisse
- **Verletzung der Modellannahmen** (Linearität, Unabhängigkeit der Fehler, konstante Fehlervarianz, Normalverteilung der Residuen) → sinkende Aussagekraft
- **Auswahl relevanter Variablen**: zu viele irrelevante erhöhen Komplexität, wichtige fehlende verzerren
- **Kausalität vs. Korrelation**: Regression zeigt Zusammenhänge, beweist **keine** Ursache-Wirkung (z.B. Eisverkauf ↔ Badeunfälle: beide steigen im Sommer, kein kausaler Link)
- **Interpretierbarkeit**: komplexere Modelle ggf. genauer, aber schwerer interpretierbar
---
# Regularisierung: Lasso & Ridge
Beide fügen der Kostenfunktion (Fehlerquadratsumme) einen **Strafterm** hinzu, der grosse Koeffizienten „teuer" macht → weniger Komplexität, weniger Overfitting.
## Lasso Regression (L1-Regularisierung)
- führt **Variablenselektion UND Regularisierung** durch
- Ziel: Überanpassung verhindern, Modellgenauigkeit verbessern
- Vorgehen: einige Koeffizienten werden **auf Null** gesetzt → spärliche (sparse) Modelle
### Formel
$$L = \sum_{i=1}^{n}\bigl(y_i - (a + b x_i)\bigr)^2 + \lambda \sum_{j} |b_j|$$
- erster Term: Fehlerquadratsumme (OLS)
- zweiter Term: L1-Norm der Koeffizienten $\times\ \lambda$
### Einsatz
- genomische Auswahl (Gene mit stärkstem Krankheits-/Merkmalsbezug identifizieren)
- Vorhersage in Wirtschaft/Finanzen (z.B. Aktienkurse)
- Kreditrisikobewertung
### Vor- und Nachteile
| Vorteile | Nachteile |
| ------------------------------ | ------------------------------------------ |
| automatische Variablenselektion | problematisch bei stark korrelierten Variablen |
| verhindert Overfitting | Wahl von $\lambda$ kann schwierig sein |
| einfachere Interpretation | kann wichtige Variablen entfernen |
| geeignet für viele Merkmale | erfasst Nichtlinearitäten nur begrenzt |
> Bei stark korrelierten Variablen wählt Lasso oft nur **eine** davon und ignoriert die anderen → Informationsverlust.
## Ridge Regression (L2-Regularisierung)
- Abwandlung der linearen Regression mit zusätzlichem Regularisierungsterm
- berücksichtigt die **Grösse** der Koeffizienten, verhindert einzelne sehr grosse Koeffizienten
- Folge: geringere Wahrscheinlichkeit für Overfitting
- **schrumpft** Koeffizienten, setzt sie aber (anders als Lasso) **selten auf Null** → keine Variablenselektion
### Formel
$$\sum_{i=1}^{n}(y_i - \hat{y}_i)^2 + \lambda \sum_{j=1}^{p}\beta_j^2$$
- $\beta_j$: Regressionskoeffizienten
- $\lambda$: Regularisierungsparameter — je grösser $\lambda$, desto stärker werden die Koeffizienten verkleinert
- Strafterm = **Quadrat** der Koeffizienten (L2) — hier liegt der Unterschied zu Lasso (Betrag, L1)
### Herausforderungen / Hinweise
- Wahl von $\lambda$: zu klein → kaum Unterschied zur OLS; zu gross → wichtige Info geht verloren
- **keine** Variablenselektion → bei vielen Merkmalen schwerer interpretierbar
- **Standardisierung erforderlich**, da Variablen unterschiedliche Grössenordnungen haben
- bildet Nichtlinearitäten nur begrenzt ab
### Einsatz
Immobilienbewertung (viele korrelierte Merkmale), Finanzen (Aktienrenditen, Kreditrisiken), Marketing (Kanäle → Umsatz), Medizin (Krankheitsrisiken), allg. bessere Generalisierung bei vielen Variablen.
### Vor- und Nachteile
| Vorteile | Nachteile |
| --------------------------------- | ------------------------------------------ |
| reduziert Overfitting | keine automatische Variablenselektion |
| gut bei Multikollinearität | Wahl von $\lambda$ kann schwierig sein |
| nutzt alle verfügbaren Infos | bei vielen Variablen schlechter interpretierbar |
| stabile Schätzungen | erfasst Nichtlinearitäten nur begrenzt |
## Lasso vs. Ridge
| Ridge | Lasso |
| ------------------------------------ | ------------------------------------------ |
| verkleinert Koeffizienten | verkleinert Koeffizienten |
| setzt Koeffizienten **selten** auf 0 | **kann** Koeffizienten auf 0 setzen |
| behält alle Variablen | führt Variablenselektion durch |
| gut bei stark korrelierten Variablen | wählt oft nur einige korrelierte Variablen aus |
## ⭐ λ vs. alpha — Auflösung der Verwirrung
Das war der wunde Punkt in der Lektion (Dozentin sprach von „Alpha", zeigte aber auf $\lambda$):
- In der **Theorie/Statistik** heisst der Regularisierungsparameter **$\lambda$** (Lambda).
- In **scikit-learn** heisst genau derselbe Parameter **`alpha`** (bei `Lasso`, `Ridge`).
- Folie 66 bestätigt es wörtlich: *„der Parameter `alpha` entspricht $\lambda$ in der theoretischen Einführung."*
-**Es ist dasselbe.** Nur die Benennung unterscheidet sich (Mathe-Notation vs. sklearn-API). Beim Lernen einfach $\lambda = $ `alpha` setzen.
**Wirkung (für Lasso und Ridge gleich):**
- $\lambda = 0$ → keine Regularisierung, normale OLS-Regression
- $\lambda$ klein → wenig Schrumpfung, mehr Merkmale bleiben (Risiko Overfitting)
- $\lambda$ gross → starke Schrumpfung
- **Lasso**: setzt Koeffizienten auf 0 → Feature Selection
- **Ridge**: schrumpft sie nur, behält alle
> 💡 *Hinweis (nicht in den Folien, falls du tiefer willst):* Die genaue **Skalierung** der Zielfunktion ist in sklearn nicht identisch — `Lasso` rechnet mit Faktor $\frac{1}{2n}$ vor dem Fehlerterm, `Ridge` nicht. `alpha` ↔ $\lambda$ stimmt also **konzeptionell**, der numerische Massstab kann zwischen den beiden abweichen. Für die Prüfung irrelevant, aber gut zu wissen, wenn du `alpha`-Werte zwischen Modellen vergleichst.
---
# Evaluation von Regressionsmodellen
## Mean Absolute Error (MAE)
$$\text{MAE} = \frac{1}{n}\sum_{i=1}^{n} |y_i - \hat{y}_i|$$
- misst die durchschnittliche absolute Abweichung
- **+** einfach zu interpretieren, robust gegenüber Ausreissern
- **** grosse Fehler werden nicht besonders stark bestraft
- *Beispiel:* MAE = 5 → Vorhersagen weichen im Schnitt um 5 Einheiten ab
## Mean Squared Error (MSE)
$$\text{MSE} = \frac{1}{n}\sum_{i=1}^{n} (y_i - \hat{y}_i)^2$$
- durchschnittliche **quadratische** Abweichung
- **+** bestraft grosse Fehler stark, weit verbreitet im ML
- **** empfindlich gegenüber Ausreissern, Einheit ist „quadriert" (schwerer interpretierbar)
## Root Mean Squared Error (RMSE)
$$\text{RMSE} = \sqrt{\frac{1}{n}\sum_{i=1}^{n} (y_i - \hat{y}_i)^2}$$
- Quadratwurzel des MSE
- **+** gleiche Einheit wie die Zielvariable, gewichtet grosse Fehler stärker
- **** sensibel gegenüber Ausreissern
## Vergleich
| Methode | Zweck | Vorteile | Nachteile | Typischer Einsatz |
| ------- | ----------------------------- | --------------------------------- | -------------------------------------- | ----------------------------------- |
| MAE | durchschn. absoluter Fehler | einfach, robust ggü. Ausreissern | grosse Fehler kaum bestraft | wenn durchschn. Fehlergrösse zählt |
| MSE | durchschn. quadrat. Fehler | bestraft grosse Fehler stark | empfindlich ggü. Ausreissern, schwerer interpretierbar | wenn grosse Fehler vermieden werden sollen |
| RMSE | Fehler in Originaleinheit | gleiche Einheit wie Zielvariable | sensibel ggü. Ausreissern | Standardmetrik für viele Probleme |
| Cross Validation | Generalisierung bewerten | erkennt Overfitting, robuster | höherer Rechenaufwand | Modellvergleich & -validierung |
> Daneben gibt es $R^2$ (Bestimmtheitsmass) — sklearn nutzt das per `model.score()` (siehe Praxis).
## Cross Validation
- Verfahren zur Bewertung von ML-/Regressionsmodellen.
- Ziel: prüfen, wie gut ein Modell auf **unbekannten** Daten funktioniert (Generalisierung).
- Reduziert das Risiko einer „glücklichen" Aufteilung durch **mehrere** Trainings-/Test-Splits.
### Vorgehen (k-Fold)
1. Datensatz in $k$ gleich grosse Teile (Folds) aufteilen
2. einen Fold als Testdaten verwenden
3. die übrigen $k-1$ Folds als Trainingsdaten
4. Modell trainieren und testen
5. $k$-mal wiederholen, sodass jeder Fold einmal Testdaten ist
6. Ergebnisse mitteln
*Beispiel (k=5):* Durchlauf 1 testet Fold 1 (trainiert auf 25), Durchlauf 2 testet Fold 2 (trainiert auf 1, 35), usw.
### Hinweise
- **Rechenaufwand**: Modell wird mehrfach trainiert → teurer als einfacher Train-Test-Split
- **Wahl von $k$**: klein (5) = schneller; gross (10) = stabiler, aber aufwändiger
- **Data Leakage**: Test-Infos dürfen nicht ins Training gelangen, sonst zu optimistische Ergebnisse
- **Zeitreihen**: normale k-Fold ungeeignet — zukünftige Daten dürfen nicht zur Vorhersage vergangener verwendet werden (→ stattdessen z.B. `TimeSeriesSplit`)
### Vor- und Nachteile
| Vorteile | Nachteile |
| -------------------------------- | -------------------------------------- |
| zuverlässigere Leistungsbewertung | höherer Rechenaufwand |
| erkennt Overfitting | bei grossen Datensätzen langsam |
| nutzt Daten effizient | nicht direkt für Zeitreihen geeignet |
| gut für Modellvergleich | sorgfältige Umsetzung erforderlich |
## Evaluation: Herausforderungen
- Overfitting / Underfitting (s.o.)
- Ausreisser beeinflussen MSE und RMSE stark
- Data Leakage verfälscht die Evaluation
- unausgewogene Daten (über-/unterrepräsentierte Wertebereiche)
---
# Praxis (Foliensatz, Demo & Melbourne Housing)
> Kurzreferenz für den Praxisteil — der eigentliche Workshop 08 ist unten als offene Aufgabe notiert.
### Setup
- **Demo-Dataset** `demo_data_regr.csv`: 2 Spalten (X = Feature, y = Target), 81 Beobachtungen — nur zur Veranschaulichung, **kein** Train-Test-Split.
- **Melbourne Housing** `melb_data_prep.csv`: 18'393 Zeilen, 24 Spalten (10 float, 14 int), Target `Price` (float). Hier erfolgen die Performance-Vergleiche → **wird** gesplittet.
```python
import pandas as pd, numpy as np, matplotlib.pyplot as plt, seaborn as sns
from bfh_cas_pml import prep_data, prep_demo_data
X_train, X_test, y_train, y_test = prep_data('melb_data_prep.csv', 'Price', seed=1234)
X_demo, y_demo = prep_demo_data('demo_data_regr.csv', 'y')
```
### Lineare Regression
```python
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X_train, y_train)
print(model.intercept_, model.coef_) # X_train.columns für Feature-Zuordnung
print(model.score(X_test, y_test)) # liefert R²
```
- `fit_intercept=True` (Default) sorgt dafür, dass der Intercept berechnet wird; sonst auf 0 fixiert.
- `model.score(X_test, y_test)` == `r2_score(y_test, model.predict(X_test))`**R²** (Folienwert ≈ 0.560).
- **Fazit aus dem Scatter** (y_pred vs. y_test): Modell erzeugt teils **negative** Preise (unglaubwürdig), Zusammenhang wirkt nicht ganz linear — evtl. Feature-Korrelationen / Extremwerte.
### Lasso & Ridge
```python
from sklearn.linear_model import Lasso, Ridge
Lasso().fit(X_train, y_train) # R² ≈ 0.560
Ridge().fit(X_train, y_train) # R² ≈ 0.560
```
- Default-`alpha` ändert hier kaum etwas am R² → als reine Regressoren **nicht** Favorit.
- **aber**: starke Instrumente für **Feature Selection** (v.a. Lasso). Mit `alpha=10000` bleiben von 23 Features nur **7** übrig (z.B. Rooms, Bathroom, Car, logLandsize, Method_S, Regionname_Southern_Metropolitan, day_of_week) → daraus liesse sich eine Filtermaske bauen.
- Erinnerung: `alpha` == $\lambda$ (siehe oben).
### 🛠 Workshop 08 (60', offen)
Untersuche den Einfluss des **Standardisierens der Features** auf:
- Modellkoeffizienten
- Predictions
- Score
Optional/zu Hause: Einfluss des **Logarithmierens des Targets** auf die Performance der linearen Regression.