588 lines
28 KiB
Markdown
588 lines
28 KiB
Markdown
# Notizen SL Lektion 5 (Foliensatz 13–15)
|
||
|
||
> 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 2–5), Durchlauf 2 testet Fold 2 (trainiert auf 1, 3–5), 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.
|
||
|
||
> *(eigene Bearbeitung — bewusst nicht vorgelöst)*
|
||
|
||
---
|
||
|
||
# Validierung — Klassifikationsmetriken (Foliensatz 14)
|
||
|
||
> Bewertung von **Klassifikations**modellen (Ergänzung zu den Regressionsmetriken oben).
|
||
|
||
## Konfusionsmatrix
|
||
|
||
Gegenüberstellung tatsächlicher vs. vorhergesagter Klassen:
|
||
|
||
- **TP** (True Positive): positiver Fall korrekt als positiv erkannt
|
||
- **TN** (True Negative): negativer Fall korrekt als negativ erkannt
|
||
- **FP** (False Positive): negativer Fall fälschlich als positiv → **Fehler Typ I**
|
||
- **FN** (False Negative): positiver Fall fälschlich als negativ → **Fehler Typ II**
|
||
|
||
Konvention: **Zeilen = tatsächliche** Klasse, **Spalten = vorhergesagte** Klasse.
|
||
|
||
> ⚠️ Achtung: Das genaue Layout variiert je nach Quelle (welche Klasse oben/links steht — in diesem Foliensatz sind sogar zwei verschiedene Anordnungen abgebildet). `sklearn.metrics.confusion_matrix` liefert für binär [0,1] die Reihenfolge `[[TN, FP], [FN, TP]]` (Labels aufsteigend sortiert). → immer Achsenbeschriftung prüfen, bevor man Zellen interpretiert.
|
||
|
||
**Nutzen:** detaillierte Fehleranalyse (nicht nur Gesamt-Accuracy), Modelloptimierung (Schwachstellen sichtbar machen), Modellvergleich, Basis für abgeleitete Metriken (Precision, Recall, F1).
|
||
|
||
> Warum nicht nur Accuracy? Bei **unausgeglichenen** Klassen ist Accuracy irreführend: immer „negativ" raten bei 99 % Negativen → 99 % Accuracy, aber 0 % der positiven Fälle erkannt. Darum Precision/Recall/F1.
|
||
|
||
## Precision
|
||
|
||
$$\text{Precision} = \frac{TP}{TP + FP} = \frac{TP}{\text{alle als positiv vorhergesagten}}$$
|
||
|
||
- *Wie viele der als positiv vorhergesagten Fälle sind wirklich positiv?*
|
||
- einsetzen, wenn **positive Vorhersagen genau** sein müssen (FP teuer; z.B. Spam-Filter: lieber Spam durchlassen als wichtige Mail fälschlich blocken)
|
||
- steigt, wenn die FP sinken
|
||
|
||
## Recall (Sensitivität)
|
||
|
||
$$\text{Recall} = \frac{TP}{TP + FN} = \frac{TP}{\text{alle tatsächlich positiven}}$$
|
||
|
||
- *Wie viele der tatsächlich positiven Fälle wurden erkannt?*
|
||
- einsetzen, wenn **FN teurer** sind als FP (z.B. Krankheitsdiagnose: kranke Person nicht übersehen)
|
||
- steigt, wenn die FN sinken
|
||
|
||
## Precision vs. Recall
|
||
|
||
- **Zielkonflikt** (Trade-off): mit steigender Precision sinkt i.d.R. der Recall — und umgekehrt.
|
||
- steuerbar über den Entscheidungs-Schwellenwert (Threshold) des Klassifikators.
|
||
|
||
## F1-Score
|
||
|
||
$$F_1 = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}}$$
|
||
|
||
- **harmonisches Mittel** von Precision und Recall (nicht arithmetisch!) → bestraft Ungleichgewicht: ist *einer* der beiden klein, wird auch F1 klein.
|
||
- balanciert beide; besonders wertvoll bei **unausgeglichenen** Datensätzen.
|
||
|
||
## Praxis: Kreuzvalidierung (Stabilität)
|
||
|
||
```python
|
||
from sklearn.model_selection import cross_val_score
|
||
scores = cross_val_score(model, X, y, cv=kfold) # kfold default = 5
|
||
print("mean:", np.mean(scores), "std:", np.std(scores))
|
||
sns.boxplot(x=scores)
|
||
```
|
||
|
||
- `cross_val_score` gibt ein **Array** mit dem Score je Fold zurück und macht das Splitten **selbst** (kein manueller Train-Test-Split nötig).
|
||
- **mean** → durchschnittliche Performance.
|
||
- **std** → **Stabilität** des Learners: wie stark hängt die Performance von der zufälligen Datenaufteilung (random_state) ab.
|
||
- **kleine std = stabileres** Resultat der Methode.
|
||
|
||
# ML OPs (Foliensatz 15)
|
||
|
||
## Hauptaufgaben
|
||
|
||
1. Entwicklung der Modelle
|
||
2. Vorbereitung für die Produktion
|
||
3. Bereitstellen in der Produktion
|
||
4. Überwachungs- und Rückkopplungsschleife
|
||
5. Modellsteuerung
|
||
|
||
## Modelle Entwickeln
|
||
|
||
- Ein ML-Modell ist eine Projektion der Realität
|
||
- Partielle und annähernde Darstellung einer realen Sache oder Prozesses
|
||
- ML-Modelle reduzieren sich nach dem Training auf eine mathematische Formel
|
||
- liefert bei Eingabe bestimmter Parameter ein Ergebnis
|
||
- ein ML-Modell ist
|
||
- Die Menge der Parameter die zum Wiederaufbau und zur Anwendung der Formel erforderlich sind
|
||
- Zustandslos und determisnistisch
|
||
|
||
### Erforderliche Komponenten
|
||
|
||
- Trainingsdaten
|
||
- Datensatz fürs Modelltraining
|
||
- Leistungskennzahl
|
||
- Was versucht das Modell zu optimieren?
|
||
- ML-Algorithmus
|
||
- Priorität auf Leistung, Stabilität, Interpretierbarkeit und Rechenkosten
|
||
- Hyperparameter
|
||
- Konfigurationen für die ML-Algorithmen, quasi das Feintuning
|
||
- Auswertungsdaten
|
||
- Unterscheided sich vom Trainingsdatensatz und wird verwendet um zu bewerten
|
||
|
||
### MLOps Überlegungen nach Alorithmustyp
|
||
|
||
> Wichtig ist sich den Limitationen aller Algorithmen bewusst zu sein
|
||
|
||
- Linear
|
||
- Regression (linear und logistisch)
|
||
- Tendiert zu Overfitting!
|
||
- Baumbasiert
|
||
- Entscheidungsbaum
|
||
- kann instabil sein, kleine Anpassungen führen zu grossen Veränderungen
|
||
- Random Forest
|
||
- vorhersagen können schwer verständlich sein, und sind langsam
|
||
- Gradientenboosting
|
||
- auch schwer verständlich, sensitiv auf kleine Änderungen im Modell
|
||
- Tiefgründiges lernen
|
||
- Neuronale Netzwerke
|
||
- nahezu unmöglich zu versthen, training extrem langsam
|
||
|
||
### Versionverwaltung
|
||
|
||
- Unerlässlich, besonders für Audits
|
||
- Es muss auch später klar sein wann welches Modell wo im Einsatz war
|
||
- Modelle müssen reproduzierbar sein!
|
||
- Daher muss klar nachvollziehbar sein wie ein Modell zu stande kam
|
||
- Ergebnisse
|
||
- Implementierung
|
||
- Umgebung
|
||
|
||
## Vorbereitung für die Produktion
|
||
|
||
### Laufzeitumgebung
|
||
|
||
- Modell Pipeline
|
||
- Werkzeuge müssen während der Modellentwicklung eingerichtet werden
|
||
- Reproduzierbarkeit und Versionskontrolle beachten!
|
||
|
||
### Modellrisikobewertung
|
||
|
||
- Was wenn sich das Modell auf die denkbar schlechteste Weise verhält?
|
||
- Worst Case Szenario abbilden
|
||
- Was wenn es dem Benutzer gelingt die Trainingsdaten oder die interne Logik zu extrahieren?
|
||
- Risikoabschätzung, im Wesentlichen folgendes
|
||
- Fehler, Irrtümer beim Entwurf oder Training
|
||
- Fehler im Laufzeit-Framework
|
||
- Geringe Qualität der Trainingsdaten
|
||
- Unterschied Trainingsdaten und Produktionsdaten (zu gross)
|
||
- Missbrauch des Modells
|
||
- Gegnerische Angriffe
|
||
- Rechtliches Risiko
|
||
|
||
## Bereitstellunge in der Produktion
|
||
|
||
### CI/CD Pipelines
|
||
|
||
1. Modell erstellen
|
||
- Artefakte erstellen
|
||
- ins Artifactory pushen
|
||
- Überprüfungen (Rechtliches etc.)
|
||
2. Bereitstellung in Testumgebung
|
||
- Tests durchführen, ML Leistung und Rechenleistung validieren
|
||
- Manuelle Validierung
|
||
3. Bereitstellung in Produktion
|
||
- Modell vollständig implementieren
|
||
|
||
### Überwachungs und Rückkopplungsschleife
|
||
|
||
- Wie oft sollten Modelle neu trainiert werden?
|
||
- kommt aufs Modell drauf an
|
||
- Entscheidungsgrundlagen
|
||
- Bereich
|
||
- In Cybersicherheit und Echtzeitverarbeitung regelmässig aktualisieren
|
||
- Spracherkennung bspw. stabiler
|
||
- Kosten
|
||
- Lohnt es sich?
|
||
- Leistungsfähigkeit des Modells
|
||
|
||
### Modellverschlechterung
|
||
|
||
- Sobald das Modell in Produktion ist gibt es zwei wichtige Kennzahlen
|
||
- Bewertung der Realität
|
||
- man wartet einfach bis was passiert
|
||
- berechnung der Leistung des Modells auf basis tatsächlicher Werte
|
||
- wenn Differenz den Schwellenwert überschreitet, muss das Modell neu trainiert werden
|
||
- Eingangsdrifterkennung
|
||
- Eine Abweichung der Datenverteilung zwischen Trainings- und Testphase
|
||
- Problem: Leistung des Modells in Produktion nicht gleich wie in Training
|
||
- Mögliche Ursachen:
|
||
- Verzerrung durch Stichprobenauswahl
|
||
- Saisonalität
|
||
- Nicht-Stationäre Umgebgung
|
||
- Erkennung: Mit statistischen Tests
|