과적합 살펴보기: XGBoost
최대 깊이가 서로 다른 3개의 XGBoost 모델을 학습했으니, 이제 성능을 평가해 보겠습니다. 이를 위해 학습 데이터(train 데이터)와 테스트 데이터 모두에서 각 모델의 품질을 측정합니다. 이미 알고 계시듯이, 학습 데이터는 모델을 학습시키는 데 사용한 데이터이고, 테스트 데이터는 모델이 한 번도 본 적 없는 다음 달 매출 데이터입니다.
이번 연습 문제의 목표는 학습한 모델 중 과적합이 있는지 확인하는 것입니다. 모델의 품질을 측정하기 위해 평균제곱오차(Mean Squared Error, MSE)를 사용합니다. 이는 sklearn.metrics의 mean_squared_error() 함수로 제공되며, 참값과 예측값 두 개의 인자를 받습니다.
train과 test DataFrame, 그리고 학습된 3개 모델(xg_depth_2, xg_depth_8, xg_depth_15)이 워크스페이스에 제공됩니다.
이 연습은 강의의 일부입니다
Python으로 Kaggle 대회 공략하기
연습 안내
- 각 모델에 대해 학습 데이터와 테스트 데이터 모두에 대한 예측을 만드세요.
- 학습 데이터와 테스트 데이터 각각에 대해, 실제 값과 예측값 사이의 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))