Validierung nutzen

Eine Kaggle-Competition in Python gewinnen

Yauhen Babakhin

Kaggle Grandmaster

Daten-Leakage

 

Leakage-Logo

 

  • Leakage in den Features – Nutzung von Daten, die im echten Einsatz nicht verfügbar sind

  • Leakage in der Validierungsstrategie – Validierung weicht von der realen Situation ab

Eine Kaggle-Competition in Python gewinnen

Zeitdaten

 

falsche Validierungsstrategie für Zeitdaten

Eine Kaggle-Competition in Python gewinnen

Zeit-K-Fold-Cross-Validation

 

 

Zeit-K-Fold-Cross-Validation-Schema

Eine Kaggle-Competition in Python gewinnen

Zeit-K-Fold-Cross-Validation

# TimeSeriesSplit importieren
from sklearn.model_selection import TimeSeriesSplit

# TimeSeriesSplit-Objekt erzeugen
time_kfold = TimeSeriesSplit(n_splits=5)
# Train nach Datum sortieren
train = train.sort_values('date')

# Über die Splits iterieren
for train_index, test_index in time_kfold.split(train):
    cv_train, cv_test = train.iloc[train_index], train.iloc[test_index]
Eine Kaggle-Competition in Python gewinnen

Validierungspipeline

# Liste für die Ergebnisse
fold_metrics = []

for train_index, test_index in CV_STRATEGY.split(train): cv_train, cv_test = train.iloc[train_index], train.iloc[test_index]
# Modell trainieren model.fit(cv_train)
# Vorhersagen erstellen predictions = model.predict(cv_test)
# Metrik berechnen metric = evaluate(cv_test, predictions) fold_metrics.append(metric)
Eine Kaggle-Competition in Python gewinnen

Modellvergleich

 

Fold-Nummer Modell A MSE Modell B MSE
Fold 1 2.95 2.97
Fold 2 2.84 2.45
Fold 3 2.62 2.73
Fold 4 2.79 2.83
Eine Kaggle-Competition in Python gewinnen

Gesamtscore der Validierung

import numpy as np

# Einfacher Mittelwert über die Folds
mean_score = np.mean(fold_metrics)
# Gesamter Validierungsscore
overall_score_minimizing = np.mean(fold_metrics) + np.std(fold_metrics)
# Oder
overall_score_maximizing = np.mean(fold_metrics) - np.std(fold_metrics)
Eine Kaggle-Competition in Python gewinnen

Modellvergleich

Fold-Nummer Modell A MSE Modell B MSE
Fold 1 2.95 2.97
Fold 2 2.84 2.45
Fold 3 2.62 2.73
Fold 4 2.79 2.83
Mittel 2.80 2.75
Gesamt 2.919 2.935
Eine Kaggle-Competition in Python gewinnen

Lass uns üben!

Eine Kaggle-Competition in Python gewinnen

Preparing Video For Download...