MulaiMulai sekarang secara gratis

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: FALSE agar tetap senyap.

Latihan ini adalah bagian dari kursus

Supervised Learning di R: Regresi

Lihat Kursus

Petunjuk latihan

  • Lengkapi bagian kosong untuk menjalankan xgb.cv() pada data latih yang sudah ditreatment; tetapkan keluarannya ke variabel cv.
    • Gunakan as.matrix() untuk mengonversi data frame yang sudah ditreatment menjadi matriks.
    • Gunakan 50 ronde, dan validasi silang 5-lipatan.
    • Atur early_stopping_rounds ke 5.
    • Atur eta ke 0,75, max_depth ke 5.
  • Ambil data frame evaluation_log dari cv dan tetapkan ke variabel elog. Setiap baris evaluation_log berkorespondensi 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_mean dan test_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)
Edit dan Jalankan Kode