НачатьНачать бесплатно

Исследование переобучения XGBoost

Вы обучили 3 модели XGBoost с разной максимальной глубиной, а теперь оцените их качество. Для этого вы измерите качество каждой модели как на обучающих данных, так и на тестовых. Напомним: обучающие данные — это те, на которых модели проходили обучение, а тестовые данные — это данные о продажах за следующий месяц, которые модели ранее не видели.

Цель упражнения — определить, есть ли среди обученных моделей переобучившиеся. Для оценки качества моделей используется среднеквадратичная ошибка (MSE). Она доступна в sklearn.metrics в виде функции mean_squared_error(), которая принимает два аргумента: истинные значения и предсказанные.

Фреймы данных train и test, а также 3 обученные модели (xg_depth_2, xg_depth_8, xg_depth_15) уже доступны в вашем рабочем пространстве.

Это упражнение является частью курса

Победа в соревновании Kaggle на Python

Посмотреть курс

Инструкции к упражнению

  • Получите предсказания каждой модели на обучающих и тестовых данных.
  • Вычислите MSE между истинными значениями и предсказаниями для обучающих и тестовых данных.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

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))
Редактировать и запускать код