Explorando overfitting com XGBoost
Depois de treinar 3 modelos XGBoost com diferentes profundidades máximas, você vai avaliar a qualidade deles. Para isso, você vai medir o desempenho de cada modelo tanto nos dados de treino quanto nos dados de teste. Como você já sabe, os dados de treino são aqueles nos quais os modelos foram treinados. Os dados de teste correspondem às vendas do mês seguinte, que os modelos nunca viram.
O objetivo deste exercício é verificar se algum dos modelos treinados está com overfitting. Para medir a qualidade dos modelos, você vai usar o Mean Squared Error (MSE). Ele está disponível em sklearn.metrics como a função mean_squared_error(), que recebe dois argumentos: valores verdadeiros e valores preditos.
Os DataFrames train e test, junto com os 3 modelos treinados (xg_depth_2, xg_depth_8, xg_depth_15), estão disponíveis no seu workspace.
Este exercicio faz parte do curso
Vencendo uma competição do Kaggle em Python
Instruções do exercicio
- Faça previsões para cada modelo tanto nos dados de treino quanto nos dados de teste.
- Calcule o MSE entre os valores verdadeiros e suas previsões para os dados de treino e de teste.
exercicio interativo prático
Tente este exercicio completando este código de exemplo.
from sklearn.metrics import mean_squared_error
dtrain = xgb.DMatrix(data=train[['store', 'item']])
dtest = xgb.DMatrix(data=test[['store', 'item']])
# For each of 3 trained models
for model in [xg_depth_2, xg_depth_8, xg_depth_15]:
# Make predictions
train_pred = model.____(dtrain)
test_pred = model.____(dtest)
# Calculate metrics
mse_train = ____(train['sales'], train_pred)
mse_test = ____(test['sales'], test_pred)
print('MSE Train: {:.3f}. MSE Test: {:.3f}'.format(mse_train, mse_test))