Uso da validação

Vencendo uma competição do Kaggle em Python

Yauhen Babakhin

Kaggle Grandmaster

Vazamento de dados

 

logo de vazamento

 

  • Vazamento em features – uso de dados que não estarão disponíveis no cenário real

  • Vazamento na estratégia de validação – a estratégia difere da situação real

Vencendo uma competição do Kaggle em Python

Dados temporais

 

estratégia de validação incorreta para dados de tempo

Vencendo uma competição do Kaggle em Python

Validação cruzada K-fold temporal

 

 

esquema de validação cruzada K-fold temporal

Vencendo uma competição do Kaggle em Python

Validação cruzada K-fold temporal

# Importar TimeSeriesSplit
from sklearn.model_selection import TimeSeriesSplit

# Criar um objeto TimeSeriesSplit
time_kfold = TimeSeriesSplit(n_splits=5)
# Ordenar o train por data
train = train.sort_values('date')

# Loop pelos splits de validação cruzada
for train_index, test_index in time_kfold.split(train):
    cv_train, cv_test = train.iloc[train_index], train.iloc[test_index]
Vencendo uma competição do Kaggle em Python

Pipeline de validação

# Lista para os resultados
fold_metrics = []

for train_index, test_index in CV_STRATEGY.split(train): cv_train, cv_test = train.iloc[train_index], train.iloc[test_index]
# Treinar um modelo model.fit(cv_train)
# Fazer previsões predictions = model.predict(cv_test)
# Calcular a métrica metric = evaluate(cv_test, predictions) fold_metrics.append(metric)
Vencendo uma competição do Kaggle em Python

Comparação de modelos

 

Nº do fold MSE Modelo A MSE Modelo B
Fold 1 2.95 2.97
Fold 2 2.84 2.45
Fold 3 2.62 2.73
Fold 4 2.79 2.83
Vencendo uma competição do Kaggle em Python

Score geral de validação

import numpy as np

# Média simples entre os folds
mean_score = np.mean(fold_metrics)
# Score geral de validação
overall_score_minimizing = np.mean(fold_metrics) + np.std(fold_metrics)
# Ou
overall_score_maximizing = np.mean(fold_metrics) - np.std(fold_metrics)
Vencendo uma competição do Kaggle em Python

Comparação de modelos

Nº do fold MSE Modelo A MSE Modelo B
Fold 1 2.95 2.97
Fold 2 2.84 2.45
Fold 3 2.62 2.73
Fold 4 2.79 2.83
Média 2.80 2.75
Geral 2.919 2.935
Vencendo uma competição do Kaggle em Python

Vamos praticar!

Vencendo uma competição do Kaggle em Python

Preparing Video For Download...