# Workshop 2 – Feature Engineering & Datenaufbereitung ## Aufgabenstellung Untersuchung des Melbourne Housing Datasets aus ML-Perspektive. Erste Empfehlungen zur Datenaufbereitung formulieren. ### Zu untersuchende Punkte - **Ungeeignete Variablen** identifizieren (von vornherein nicht für ML brauchbar) - **Missing Values** – pro Variable geeignete Strategie wählen - **Nicht-numerische Variablen** – passende Encoding-Strategie wählen - **Anomalien** entdecken, die bereinigt werden müssen (Outlier, Inkonsistenzen, Duplikate) - **Empfehlungen** zur Datenaufbereitung formulieren ### Zeitrahmen 90 Minuten ## Hilfsmittel der Dozentin - `WS 02 Feature Engineering Exploration Overview.ipynb` – ermittelt Kennwerte der Variablen in einem DataFrame und stellt diese in einer Excel-Tabelle zusammen - `pandas_profiling_melb_data.html` – vorgenerierter Profiling-Report ## Vorgehen 1. **Profiling-Report sichten** (ydata-profiling) für schnellen Überblick 2. **Variablen filtern** – ungeeignete Spalten markieren (z.B. IDs, Freitextfelder, zu hohe Kardinalität) 3. **Missing Values analysieren** – Anteil pro Spalte, Muster (MCAR / MAR / MNAR) 4. **Kategoriale Variablen** – Strategie pro Spalte festlegen 5. **Anomalien suchen** – Outlier (Boxplots, z-Score, IQR), inkonsistente Werte, Duplikate 6. **Empfehlungen dokumentieren** – in der Workshop-1-Tabelle ergänzen ## Theorie-Bausteine ### Missing-Value-Strategien | Strategie | Wann geeignet | |---|---| | Zeile löschen | wenige Missings, MCAR | | Spalte löschen | sehr hoher Missing-Anteil (>50%), wenig Information | | Mean / Median imputieren | numerisch, symmetrisch / schief verteilt | | Mode imputieren | kategorial | | Konstanter Wert (z.B. "Unknown", 0) | kategorial mit Bedeutung "fehlt" | | KNN / Iterative Imputation | komplexere Muster, mehr Aufwand | | Indikator-Spalte | "fehlt" selbst ist Information (MNAR) | ### Missing-Value-Typen (Rubin) - **MCAR** – Missing Completely At Random: Fehlen unabhängig von allem - **MAR** – Missing At Random: Fehlen erklärbar durch andere beobachtete Variablen - **MNAR** – Missing Not At Random: Fehlen hängt vom fehlenden Wert selbst ab ### Encoding-Strategien für kategoriale Variablen | Strategie | Wann geeignet | |---|---| | **Label-Encoding** | ordinal mit klarer Reihenfolge | | **One-Hot-Encoding** | nominal, wenige Kategorien (<~15) | | **Target-Encoding** | nominal, hohe Kardinalität, Vorsicht: Leakage | | **Frequency-Encoding** | hohe Kardinalität, einfach | | **Binary-Encoding** | hohe Kardinalität, weniger Spalten als One-Hot | | **Embeddings** | sehr hohe Kardinalität, Deep Learning | ### Outlier-Detection - Boxplot / IQR-Regel (1.5 × IQR) - z-Score (|z| > 3) - Visuell via Histogramm / Scatter - Domain-Wissen (z.B. negativer Preis, Baujahr 1196 statt 1996) ## Struktur ``` . ├── devenv.nix ├── devenv.lock ├── devenv.yaml ├── data/ │ └── melb_data.csv └── solution/ ├── 01_skalenniveaus.md ```