Gradient Boosting Machine के लिए सही संख्या में पेड़ चुनें
इस अभ्यास में, आप एक gradient boosting मॉडल बनाने की तैयारी करेंगे जो मौसम, दिन का समय और प्रकार के आधार पर प्रति घंटे किराए पर ली गई बाइकों की संख्या का अनुमान लगाएगा. आप मॉडल को जुलाई महीने के डेटा पर ट्रेन करेंगे.
जुलाई का डेटा पहले से लोड है. याद रखें कि bikesJuly.treat में अब आउटपुट कॉलम नहीं है, इसलिए आपको वह अनट्रीटेड डेटा से लेना होगा: bikesJuly$cnt.
आप xgboost पैकेज का उपयोग करके random forest मॉडल फिट करेंगे. फंक्शन xgb.cv() (docs) क्रॉस-वैलिडेशन का उपयोग करता है ताकि जैसे-जैसे हर नया पेड़ मॉडल में जोड़ा जाता है, आउट-ऑफ-सैंपल लर्निंग एरर का अनुमान लगाया जा सके. अंतिम मॉडल में इस्तेमाल होने वाले पेड़ों की उपयुक्त संख्या वही है जो holdout RMSE को न्यूनतम करती है.
इस अभ्यास के लिए, xgb.cv() कॉल के मुख्य आर्ग्युमेंट ये हैं:
data: एक संख्यात्मक मैट्रिक्स.label: आउटपुट का वेक्टर (यह भी संख्यात्मक).nrounds: अधिकतम राउंड्स (बनाए जाने वाले पेड़ों) की संख्या.nfold: क्रॉस-वैलिडेशन के लिए फोल्ड्स की संख्या. 5 एक अच्छा मान है.objective: सतत आउटपुट के लिए"reg:squarederror".eta: learning rate.max_depth: पेड़ों की अधिकतम गहराई.early_stopping_rounds: इतने राउंड तक सुधार न होने पर रोक दें.verbose: चुप रहने के लिएFALSE.
यह अभ्यास पाठ्यक्रम का हिस्सा है
R में Supervised Learning: Regression
अभ्यास निर्देश
- खाली जगह भरकर ट्रीटेड ट्रेनिंग डेटा पर
xgb.cv()चलाएँ; आउटपुट को वैरिएबलcvमें असाइन करें.- डेटा फ्रेम को मैट्रिक्स में बदलने के लिए
as.matrix()का उपयोग करें. - 50 राउंड्स और 5-फोल्ड क्रॉस-वैलिडेशन का उपयोग करें.
early_stopping_roundsको 5 पर सेट करें.etaको 0.75 औरmax_depthको 5 पर सेट करें.
- डेटा फ्रेम को मैट्रिक्स में बदलने के लिए
cvसे डेटा फ्रेमevaluation_logनिकालें और उसे वैरिएबलelogको असाइन करें.evaluation_logकी हर पंक्ति एक अतिरिक्त पेड़ के अनुरूप होती है, इसलिए पंक्ति संख्या आपको मॉडल में पेड़ों की संख्या बताती है.- खाली जगह भरकर उन पेड़ों की संख्या निकालें जिन पर कॉलम
train_rmse_meanऔरtest_rmse_meanका मान न्यूनतम है.which.min()(docs) किसी वेक्टर में न्यूनतम मान का इंडेक्स लौटाता है.- आपको कितने पेड़ चाहिए?
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
# 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)