開始使用免費開始

使用 early_stopping 自動選擇 boosting 回合數

現在,不用再嘗試「精挑細選」最佳的 boosting 回合數了。你可以直接在 xgb.cv() 中讓 XGBoost 自動幫你選擇回合數。這是透過一種稱為 early stopping 的技巧來達成。

Early stopping 的做法是:在每一個 boosting 回合後,將 XGBoost 模型拿去對保留出的資料集進行測試;如果在指定的回合數內,保留集上的評估指標(在此為 "rmse")不再改善,就停止產生更多的 boosting 回合(也就是提早結束模型訓練)。在這裡,你會在 xgb.cv() 中設定 early_stopping_rounds,並給一個較大的可能 boosting 回合上限(50)。請注意,若評估指標一路持續改善直到達到 num_boost_rounds,則不會發生 early stopping。

這裡已經為你建立好 DMatrix 與參數字典。你的任務是使用帶有 early stopping 的交叉驗證。動手做做看吧!

本練習屬於課程

使用 XGBoost 的極端梯度提升

檢視課程

練習說明

  • 以 3 折交叉驗證搭配 early stopping,並以 "rmse" 作為評估指標。使用 10 個 early stopping 回合與 50 個 boosting 回合。指定 seed123,並確保輸出為 pandas 的 DataFrame。記得同時指定 dtrainparamsmetrics 等其他參數。
  • 印出 cv_results

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# Create your housing DMatrix: housing_dmatrix
housing_dmatrix = xgb.DMatrix(data=X, label=y)

# Create the parameter dictionary for each tree: params
params = {"objective":"reg:squarederror", "max_depth":4}

# Perform cross-validation with early stopping: cv_results
cv_results = ____

# Print cv_results
print(____)
編輯並執行程式碼