# 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.