Modul 14 von 15 · 📖 9 min Lesezeit · ⏱ 30 min gesamt

FI-DPA 14 ML-Pipeline — Daten, Training, Evaluation

Inhaltsverzeichnis (6 Abschnitte)
  1. Konzepte und Hintergrund
  2. Architektur-Diagramm
  3. Praktische Schritte
  4. Häufige Fallstricke
  5. Weiterführende Ressourcen
  6. Wissens-Check

FI-DPA 14 ML-Pipeline — Daten, Training, Evaluation

In diesem Modul erlernen Sie die grundlegenden Konzepte und praktischen Schritte zur Erstellung einer maschinellen Lern-Pipeline. Sie verstehen, wie Daten vorbereitet, in Trainings-, Validierungs- und Testmengen aufgeteilt und wie Modelle trainiert und evaluiert werden. Der Fokus liegt auf dem praktischen Einsatz von scikit-learn und den entscheidenden Metriken zur Bewertung von Modellen.

Sie erwerben das Wissen, um typische Fehlerquellen in ML-Projekten zu vermeiden und lernen Methoden wie Cross-Validation und Hyperparameter-Tuning kennen, um die Leistung Ihrer Modelle systematisch zu verbessern.

Konzepte und Hintergrund

Feature Engineering
Der Prozess der Transformation und Auswahl von Rohmerkmalen (Features), um die Leistung von ML-Modellen zu verbessern. Dazu gehören Normalisierung, Kodierung kategorialer Variablen, Erstellung neuer Features und Auswahl relevanter Merkmale.
Train/Validation/Test-Split
Die Aufteilung des Datensatzes in drei separate Mengen: zum Training des Modells, zur Optimierung von Hyperparametern und zur finalen, unverzerrten Bewertung der Modellleistung.
Cross-Validation
Eine robuste Methode zur Modellbewertung, bei der der Datensatz mehrfach in verschiedene Trainings- und Testmengen aufgeteilt wird, um die Abhängigkeit von einer bestimmten Aufteilung zu minimieren.
Hyperparameter-Tuning
Der Prozess der systematischen Suche nach optimalen Einstellungen für die Hyperparameter eines ML-Modells, die nicht direkt aus den Daten gelernt werden.
Evaluationsmetriken
Quantitative Maße zur Bewertung der Leistung von ML-Modellen, wie Accuracy (Genauigkeit), F1-Score (harmonischer Mittelwert aus Precision und Recall), ROC-AUC (Fläche unter der ROC-Kurve) und RMSE (Wurzel des mittleren quadratischen Fehlers).

Architektur-Diagramm

flowchart LR
    A[Rohdaten] --> B[Feature Engineering]
    B --> C[Train/Validation/Test-Split]
    C --> D[Modelltraining]
    D --> E[Hyperparameter-Tuning]
    E --> F[Modellvalidierung]
    F --> G[Modellbewertung]
    G --> H[Modelldeployment]

Praktische Schritte

  1. Daten laden und explorieren mit pandas, um erste Einblicke in die Datenstruktur und Qualität zu gewinnen.
    import pandas as pd
    data = pd.read_csv('daten.csv')
    print(data.head())
    print(data.info())
  2. Feature Engineering durchführen: fehlende Werte behandeln, kategorische Variablen kodieren und Features skalieren.
    from sklearn.preprocessing import StandardScaler, OneHotEncoder
    from sklearn.impute import SimpleImputer
    
    # Numerische Features skalieren
    scaler = StandardScaler()
    data[['feature1', 'feature2']] = scaler.fit_transform(data[['feature1', 'feature2']])
    
    # Kategorische Features kodieren
    encoder = OneHotEncoder()
    encoded_features = encoder.fit_transform(data[['kategorie']])
  3. Daten in Trainings-, Validierungs- und Testmengen aufteilen, um Überanpassung zu vermeiden.
    from sklearn.model_selection import train_test_split
    
    X = data.drop('zielvariable', axis=1)
    y = data['zielvariable']
    
    X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size=0.3, random_state=42)
    X_val, X_test, y_val, y_test = train_test_split(X_temp, y_temp, test_size=0.5, random_state=42)
  4. Ein ML-Modell (z.B. Random Forest) mit den Trainingsdaten trainieren.
    from sklearn.ensemble import RandomForestClassifier
    
    model = RandomForestClassifier(n_estimators=100, random_state=42)
    model.fit(X_train, y_train)
  5. Hyperparameter-Tuning mit GridSearchCV und Cross-Validation durchführen.
    from sklearn.model_selection import GridSearchCV
    
    param_grid = {
        'n_estimators': [50, 100, 200],
        'max_depth': [None, 10, 20, 30]
    }
    
    grid_search = GridSearchCV(estimator=model, param_grid=param_grid, cv=5, scoring='accuracy')
    grid_search.fit(X_train, y_train)
  6. Das beste Modell auf den Validierungsdaten evaluieren und Metriken berechnen.
    from sklearn.metrics import accuracy_score, f1_score, roc_auc_score
    
    y_pred = grid_search.predict(X_val)
    print(f"Accuracy: {accuracy_score(y_val, y_pred)}")
    print(f"F1-Score: {f1_score(y_val, y_pred)}")
    print(f"ROC-AUC: {roc_auc_score(y_val, y_pred)}")
  7. Das finale Modell auf den noch nicht verwendeten Testdaten bewerten, um eine unverzerrte Leistungseinschätzung zu erhalten.
    final_predictions = grid_search.predict(X_test)
    print(f"Final Accuracy: {accuracy_score(y_test, final_predictions)}")

Häufige Fallstricke

Weiterführende Ressourcen

Wissens-Check

Vier Fragen zur Selbstkontrolle. Klicken Sie jede Frage an, um die richtige Antwort und Erklärung zu sehen.

Was ist der Hauptzweil des Feature Engineerings in einer ML-Pipeline?
  • A) Die Reduzierung der Datengröße zur schnelleren Verarbeitung
  • B) Die Transformation und Auswahl von Features zur Verbesserung der Modellleistung
  • C) Die vollständige Automatisierung des Datenprozesses
  • D) Die Eliminierung aller kategorialen Variablen aus dem Datensatz

Richtige Antwort: B. Feature Engineering zielt darauf ab, durch gezielte Transformation und Auswahl von Features die Leistung von ML-Modellen zu verbessern, während die anderen Optionen nur Teilaspekte oder Fehlinterpretationen dieses Prozesses darstellen.

Warum wird ein Datensatz in Trainings-, Validierungs- und Testmengen aufgeteilt?
  • A) Um die Speicherkapazität zu reduzieren und die Verarbeitung zu beschleunigen
  • B) Um die Modellleistung auf ungesehenen Daten objektiv bewerten zu können
  • C) Um die Anzahl der Features zu reduzieren und Overfitting zu vermeiden
  • D) Um die Datenqualität zu verbessern und fehlende Werte zu korrigieren

Richtige Antwort: B. Die Aufteilung ermöglicht eine objektive Bewertung der Modellleistung auf ungesehenen Daten, während die anderen Optionen nicht den Hauptzweck dieser Aufteilung beschreiben.

Was ist der Hauptvorteil von Cross-Validation im Vergleich zum einfachen Train/Test-Split?
  • A) Es reduziert die Rechenzeit des Trainingsprozesses erheblich
  • B) Es ermöglicht eine zuverlässigere Bewertung der Modellleistung durch mehrfache Aufteilungen
  • C) Es eliminiert die Notwendigkeit von Hyperparameter-Tuning
  • D) Es automatisiert das Feature Engineering vollständig

Richtige Antwort: B. Cross-Validation liefert eine robustere Schätzung der Modellleistung, da sie die Abhängigkeit von einer bestimmten Datenaufteilung minimiert, während die anderen Optionen keine korrekten Vorteile von Cross-Validation beschreiben.

Welche Metrik wäre am besten geeignet, um die Leistung eines Klassifikationsmodells bei unausgeglichenen Klassen zu bewerten?
  • A) Accuracy (Genauigkeit)
  • B) ROC-AUC
  • C) RMSE (Wurzel des mittleren quadratischen Fehlers)
  • D) Durchschnittliche Precision

Richtige Antwort: B. ROC-AUC ist besonders bei unausgeglichenen Klassen geeignet, da sie die Trennfähigkeit des Modells über verschiedene Schwellenwerte hinweg bewertet, während Accuracy bei unausgeglichenen Klassen irreführend sein kann und RMSE für Regression, nicht Klassifikation verwendet wird.