Gradient boosting machine için doğru ağaç sayısını bul
Bu egzersizde, hava durumu ile günün türü ve saatine bağlı olarak bir saatte kiralanan bisiklet sayısını tahmin eden bir gradient boosting modeli kurmaya hazırlanacaksın. Modeli Temmuz ayına ait veriler üzerinde eğiteceksin.
Temmuz verileri önceden yüklendi. bikesJuly.treat artık sonuç sütununu içermediğini unutma, bu nedenle onu işlenmemiş veriden almalısın: bikesJuly$cnt.
Rastgele orman modelini kurmak için xgboost paketini kullanacaksın. xgb.cv() (docs) fonksiyonu, her yeni ağaç modele eklendikçe örneklem dışı öğrenme hatasını tahmin etmek için çapraz doğrulamayı kullanır. Nihai modelde kullanılacak uygun ağaç sayısı, ayırma kümesindeki RMSE'yi en aza indiren sayıdır.
Bu egzersizde, xgb.cv() çağrısının temel argümanları şunlardır:
data: sayısal bir matris.label: sonuç vektörü (bu da sayısal).nrounds: maksimum tur sayısı (inşa edilecek ağaç sayısı).nfold: çapraz doğrulama için kat sayısı. 5 iyi bir sayıdır.objective: sürekli sonuçlar için"reg:squarederror".eta: öğrenme oranı.max_depth: ağaçların azami derinliği.early_stopping_rounds: bu kadar tur iyileşme olmazsa dur.verbose: sessiz kalmak içinFALSE.
Bu egzersiz, kursun bir parçasıdır
R'de Supervised Learning: Regresyon
Egzersiz talimatları
xgb.cv()'yi işlenmiş eğitim verisi üzerinde çalıştırmak için boşlukları doldur; çıktıyıcvdeğişkenine ata.- Veri çerçevesini matrise dönüştürmek için
as.matrix()kullan. - 50 tur ve 5 katlı çapraz doğrulama kullan.
early_stopping_roundsdeğerini 5 olarak ayarla.etayı 0.75,max_depthü 5 olarak ayarla.
- Veri çerçevesini matrise dönüştürmek için
cviçindenevaluation_logveri çerçevesini al veelogdeğişkenine ata.evaluation_logun her satırı eklenen bir ağaca karşılık gelir; dolayısıyla satır numarası modeldeki ağaç sayısını verir.train_rmse_meanvetest_rmse_meansütunlarının en düşük değerine karşılık gelen ağaç sayısını almak için boşlukları doldur.which.min()(docs) bir vektördeki en küçük değerin indeksini döndürür.- Kaç ağaca ihtiyacın var?
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
# 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)