Pemilihan jumlah boosting secara otomatis dengan early_stopping
Sekarang, alih-alih mencoba memilih secara manual jumlah boosting round terbaik, Anda dapat dengan mudah membuat XGBoost secara otomatis memilih jumlah boosting round untuk Anda di dalam xgb.cv(). Ini dilakukan dengan teknik yang disebut early stopping.
Early stopping bekerja dengan menguji model XGBoost setelah setiap boosting round terhadap himpunan data hold-out dan menghentikan pembuatan boosting round tambahan (sehingga pelatihan model selesai lebih awal) jika metrik hold-out ("rmse" dalam kasus kita) tidak membaik selama sejumlah ronde tertentu. Di sini Anda akan menggunakan parameter early_stopping_rounds dalam xgb.cv() dengan jumlah boosting round maksimum yang besar (50). Perlu diingat bahwa jika metrik hold-out terus membaik hingga num_boost_rounds tercapai, maka early stopping tidak akan terjadi.
Di sini, DMatrix dan kamus parameter telah dibuat untuk Anda. Tugas Anda adalah menggunakan cross-validation dengan early stopping. Silakan coba!
Latihan ini adalah bagian dari kursus
Extreme Gradient Boosting dengan XGBoost
Petunjuk latihan
- Lakukan cross-validation 3-fold dengan early stopping dan
"rmse"sebagai metrik. Gunakan10early stopping rounds dan50boosting rounds. Tentukanseedsebesar123dan pastikan keluarannya berupa DataFramepandas. Ingat untuk menetapkan parameter lain sepertidtrain,params, danmetrics. - Cetak
cv_results.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# 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(____)