開始使用免費開始

探索 XGBoost 的過度擬合

在用不同的最大深度訓練了 3 個 XGBoost 模型之後,接下來要評估它們的表現。為了達成這個目的,你會同時在訓練資料與測試資料上衡量每個模型的品質。如你現在所知,訓練資料是模型曾經用來訓練的資料;測試資料則是下一個月的銷售資料,模型從未看過。

本練習的目標是判斷是否有任何模型發生過度擬合。衡量模型品質時,你將使用均方誤差(Mean Squared Error,MSE)。在 sklearn.metrics 中提供了 mean_squared_error() 函式,接受兩個引數:真實值與預測值。

traintest 這兩個 DataFrame,以及已訓練好的 3 個模型(xg_depth_2xg_depth_8xg_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))
編輯並執行程式碼