XGBoost'ta aşırı öğrenmeyi keşfet
Maksimum derinlikleri farklı olan 3 XGBoost modeli eğittikten sonra, şimdi bunların kalitesini değerlendireceksin. Bu amaçla, her bir modelin hem train verisi hem de test verisi üzerindeki performansını ölçeceksin. Bildiğin gibi, train verisi modellerin üzerinde eğitildiği veridir. Test verisi ise modellerin hiç görmediği, bir sonraki ayın satış verileridir.
Bu egzersizin hedefi, eğitilen modellerden herhangi birinin aşırı öğrenme (overfitting) yapıp yapmadığını belirlemek. Modellerin kalitesini ölçmek için Ortalama Kare Hatası (MSE) kullanacaksın. sklearn.metrics içinde mean_squared_error() fonksiyonu olarak bulunur ve iki argüman alır: gerçek değerler ve tahmin edilen değerler.
train ve test DataFrame'leri ile birlikte eğitilmiş 3 model (xg_depth_2, xg_depth_8, xg_depth_15) çalışma alanında hazır.
Bu egzersiz, kursun bir parçasıdır
Python ile Bir Kaggle Yarışmasını Kazanmak
Egzersiz talimatları
- Her model için hem train hem de test verisi üzerinde tahmin yap.
- Hem train hem de test verisinde gerçek değerlerle tahminlerin arasındaki MSE'yi hesapla.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
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))