Temukan jumlah pohon yang tepat untuk gradient boosting machine
Dalam latihan ini, Anda akan menyiapkan pembuatan model gradient boosting untuk memprediksi jumlah sepeda yang disewa per jam sebagai fungsi dari cuaca serta jenis dan waktu dalam sehari. Anda akan melatih model pada data bulan Juli.
Data bulan Juli telah dimuat sebelumnya. Ingat bahwa bikesJuly.treat tidak lagi memiliki kolom keluaran, sehingga Anda harus mengambilnya dari data yang belum diproses: bikesJuly$cnt.
Anda akan menggunakan paket xgboost untuk menyesuaikan model random forest. Fungsi xgb.cv() (docs) menggunakan validasi silang untuk mengestimasi galat pembelajaran out-of-sample saat setiap pohon baru ditambahkan ke model. Jumlah pohon yang sesuai untuk digunakan pada model final adalah jumlah yang meminimalkan RMSE holdout.
Untuk latihan ini, argumen kunci pada pemanggilan xgb.cv() adalah:
data: matriks numerik.label: vektor keluaran (juga numerik).nrounds: jumlah maksimum ronde (pohon yang dibangun).nfold: jumlah lipatan untuk validasi silang. 5 adalah pilihan yang baik.objective:"reg:squarederror"untuk keluaran kontinu.eta: laju pembelajaran.max_depth: kedalaman maksimum pohon.early_stopping_rounds: berhenti setelah sejumlah ronde tanpa perbaikan.verbose:FALSEagar tetap senyap.
Latihan ini adalah bagian dari kursus
Supervised Learning di R: Regresi
Petunjuk latihan
- Lengkapi bagian kosong untuk menjalankan
xgb.cv()pada data latih yang sudah ditreatment; tetapkan keluarannya ke variabelcv.- Gunakan
as.matrix()untuk mengonversi data frame yang sudah ditreatment menjadi matriks. - Gunakan 50 ronde, dan validasi silang 5-lipatan.
- Atur
early_stopping_roundske 5. - Atur
etake 0,75,max_depthke 5.
- Gunakan
- Ambil data frame
evaluation_logdaricvdan tetapkan ke variabelelog. Setiap barisevaluation_logberkorespondensi dengan penambahan satu pohon, sehingga nomor baris menunjukkan jumlah pohon dalam model. - Lengkapi bagian kosong untuk mendapatkan jumlah pohon dengan nilai minimum pada kolom
train_rmse_meandantest_rmse_mean.which.min()(docs) mengembalikan indeks dari nilai minimum dalam sebuah vektor.- Berapa banyak pohon yang Anda perlukan?
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# Run xgb.cv
cv <- xgb.cv(data = ____,
label = ___,
nrounds = ___,
nfold = ___,
objective = "reg:squarederror",
eta = ___,
max_depth = ___,
early_stopping_rounds = ___,
verbose = FALSE # silent
)
# Get the evaluation log
elog <- ___
# Determine and print how many trees minimize training and test error
elog %>%
summarize(ntrees.train = ___, # find the index of min(train_rmse_mean)
ntrees.test = ___) # find the index of min(test_rmse_mean)