85 lines
3.0 KiB
Markdown
85 lines
3.0 KiB
Markdown
# 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
|
||
```
|