R Academy · पाठ

xgboost से ग्रेडिएंट बूस्टिंग

xgboost के पैरामीटर, जल्दी रोकना और सीखने की दर की अनुसूचियाँ कॉन्फ़िगर करें।

पाठ 3, कुल 4 में से13 चरण

xgboost से ग्रेडिएंट बूस्टिंग, CoddyKit पर R Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह R Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। R Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

ग्रेडिएंट बूस्टिंग क्या है?

ग्रेडिएंट बूस्टिंग क्रमिक रूप से एक समूह-विधि बनाता है। प्रत्येक नया वृक्ष हानि फलन के ऋणात्मक ग्रेडिएंट पर फिट होकर पिछले समूह की अवशिष्ट त्रुटियों को सुधारता है। रैंडम फ़ॉरेस्ट के विपरीत, जिसमें वृक्ष समानांतर बनाए जाते हैं, बूस्टिंग एक समय में एक वृक्ष बनाता है और प्रत्येक वृक्ष पिछले वृक्ष की गलतियों से सीखता है।

library(xgboost)

# XGBoost expects data in a special matrix format
# We'll build a simple example step by step
cat('XGBoost version:', packageVersion('xgboost'))

# Key concept: each tree reduces the ensemble error
# Final prediction = sum of all tree predictions

xgb.DMatrix()

xgb.DMatrix(data, label) XGBoost का अनुकूलित आंतरिक डेटा प्रारूप है। यह विशेषता मैट्रिक्स और लेबल सदिश को एक साथ संग्रहीत करता है, जिससे तेज़ और कम मेमोरी वाली गणना संभव होती है। प्रशिक्षण से पहले अपने डेटा को हमेशा DMatrix में बदलें।

library(xgboost)
library(MASS)

X_train <- as.matrix(Boston[1:400, -14])  # features
y_train <- Boston[1:400, 14]              # medv (target)

X_test  <- as.matrix(Boston[401:506, -14])
y_test  <- Boston[401:506, 14]

dtrain <- xgb.DMatrix(data = X_train, label = y_train)
dtest  <- xgb.DMatrix(data = X_test,  label = y_test)

cat('DMatrix rows:', nrow(dtrain))

xgboost() — बुनियादी प्रशिक्षण

xgboost(data, nrounds, eta, max_depth, objective) मॉडल को प्रशिक्षित करता है। मुख्य पैरामीटर हैं: eta (सीखने की दर, छोटा मान = अधिक मजबूत लेकिन धीमा), max_depth (वृक्ष की गहराई, मॉडल की जटिलता नियंत्रित करती है) और nrounds (वृक्षों की संख्या)।

params <- list(
  objective  = 'reg:squarederror',
  eta        = 0.1,     # learning rate
  max_depth  = 6,       # tree depth
  subsample  = 0.8,     # row subsampling
  colsample_bytree = 0.8  # column subsampling
)

set.seed(42)
model <- xgboost(
  data    = dtrain,
  params  = params,
  nrounds = 100,
  verbose = 0
)

cat('Model trained with', model$niter, 'rounds')

Watchlist — सत्यापन हानि की निगरानी

watchlist तर्क नामित DMatrix ऑब्जेक्ट्स की सूची स्वीकार करता है। XGBoost प्रत्येक बूस्टिंग चरण के बाद सूची में दिए गए प्रत्येक डेटासेट की हानि का मूल्यांकन और प्रिंट करता है। इसका उपयोग प्रशिक्षण और सत्यापन हानि पर नज़र रखने तथा अधिक-फिटिंग शुरू होने का पता लगाने के लिए करें।

watchlist <- list(train = dtrain, eval = dtest)

model <- xgb.train(
  params    = params,
  data      = dtrain,
  nrounds   = 200,
  watchlist = watchlist,
  verbose   = 1
)

# The log shows train-rmse and eval-rmse per round
# Watch for eval-rmse increasing (overfitting signal)

early_stopping_rounds

early_stopping_rounds = 20 तब प्रशिक्षण रोक देता है, जब सत्यापन माप में लगातार 20 चरणों तक सुधार नहीं हुआ हो। इससे वृक्षों की इष्टतम संख्या अपने-आप मिल जाती है और व्यापक मैन्युअल ट्यूनिंग के बिना कम-फिटिंग तथा अधिक-फिटिंग दोनों से बचा जा सकता है।

model <- xgb.train(
  params              = params,
  data                = dtrain,
  nrounds             = 1000,      # max rounds
  watchlist           = list(train = dtrain, eval = dtest),
  early_stopping_rounds = 20,      # stop if no improvement
  print_every_n       = 50,
  verbose             = 1
)

cat('Best iteration:', model$best_iteration)
cat('Best eval RMSE:', model$best_score)

द्विआधारी वर्गीकरण

द्विआधारी वर्गीकरण के लिए objective = 'binary:logistic' का उपयोग करें, जो अनुमानित प्रायिकताएँ आउटपुट करता है। लेबल 0/1 numeric होना चाहिए। eval_metric पैरामीटर का उपयोग करके AUC या log-loss से मूल्यांकन करें।

# Binary classification example
library(MASS)
Pima <- MASS::Pima.tr

X_cl <- as.matrix(Pima[, -8])
y_cl <- as.numeric(Pima$type) - 1  # factor to 0/1

dt_cl <- xgb.DMatrix(data = X_cl, label = y_cl)

mod_cl <- xgboost(
  data       = dt_cl,
  objective  = 'binary:logistic',
  eval_metric = 'auc',
  eta        = 0.05,
  max_depth  = 4,
  nrounds    = 100,
  verbose    = 0
)

पूर्वानुमान

predict(model, dtest) कच्चे अनुमानित मान लौटाता है—वर्गीकरण के लिए प्रायिकताएँ और प्रतिगमन के लिए वास्तविक-मूल्य पूर्वानुमान। वर्गीकरण कार्यों में प्रायिकताओं को वर्ग लेबल में बदलने के लिए 0.5 की सीमा लागू करें।

# Regression predictions
reg_preds <- predict(model, dtest)
rmse <- sqrt(mean((reg_preds - y_test)^2))
cat('Test RMSE:', round(rmse, 3))

# Classification predictions
prob_preds  <- predict(mod_cl, dt_cl)
class_preds <- ifelse(prob_preds > 0.5, 1, 0)
accuracy <- mean(class_preds == y_cl)
cat('Training Accuracy:', round(accuracy, 3))

xgb.cv() — क्रॉस-वैलिडेशन

xgb.cv(params, data, nrounds, nfold) XGBoost के भीतर k-फोल्ड क्रॉस-वैलिडेशन चलाता है। यह rsample के उपयोग से तेज़ है, क्योंकि XGBoost फोल्ड का प्रबंधन आंतरिक रूप से करता है। आउटपुट प्रत्येक चरण के लिए माप का माध्य और SD दिखाता है।

cv_result <- xgb.cv(
  params    = params,
  data      = dtrain,
  nrounds   = 200,
  nfold     = 5,
  early_stopping_rounds = 15,
  print_every_n = 20,
  verbose   = 1
)

# Best nrounds from CV
best_nrounds <- cv_result$best_iteration
cat('Optimal nrounds:', best_nrounds)

# CV RMSE at best iteration
cat('CV RMSE:', cv_result$evaluation_log[best_nrounds, 'test_rmse_mean'][[1]])

मुख्य हाइपरपैरामीटर

XGBoost के सबसे प्रभावशाली हाइपरपैरामीटर:

  • eta: सीखने की दर (0.01–0.3)। कम मान = अधिक वृक्ष आवश्यक, अधिक मजबूती।
  • max_depth: वृक्ष की गहराई (3–10)। बड़ा मान = अधिक जटिलता, तेज़ी से अधिक-फिटिंग।
  • subsample: प्रत्येक वृक्ष के लिए पंक्तियों का अंश (0.5–1.0)। अधिक-फिटिंग घटाता है।
  • colsample_bytree: प्रत्येक वृक्ष के लिए विशेषताओं का अंश (0.5–1.0)।
  • lambda: पत्ती के भारों पर L2 नियमितीकरण।
  • alpha: पत्ती के भारों पर L1 नियमितीकरण।
params_tuned <- list(
  objective         = 'reg:squarederror',
  eta               = 0.05,
  max_depth         = 5,
  subsample         = 0.75,
  colsample_bytree  = 0.75,
  lambda            = 1.0,    # L2 regularization
  alpha             = 0.1,    # L1 regularization
  min_child_weight  = 3       # min samples in leaf
)

model_tuned <- xgboost(
  data = dtrain, params = params_tuned,
  nrounds = best_nrounds, verbose = 0
)

मॉडलों को सहेजना और लोड करना

XGBoost मॉडलों को xgb.save(model, 'model.xgb') से डिस्क पर बाइनरी प्रारूप में सहेजा और xgb.load('model.xgb') से फिर लोड किया जा सकता है। उत्पादन में परिनियोजन के लिए यही अनुशंसित प्रारूप है और यह बिट-स्तरीय पुनरुत्पादनीयता सुनिश्चित करता है।

# Save model
xgb.save(model, '/tmp/xgb_boston.xgb')

# Reload and predict
loaded_model <- xgb.load('/tmp/xgb_boston.xgb')
new_preds <- predict(loaded_model, dtest)

# Verify predictions match
all.equal(reg_preds, new_preds)  # TRUE

बहु-वर्गीय वर्गीकरण

बहु-वर्गीय समस्याओं के लिए objective = 'multi:softprob' का उपयोग करें और num_class को वर्गों की संख्या पर सेट करें। लेबल 0 से शुरू होने वाले integer होने चाहिए। आउटपुट प्रत्येक वर्ग के लिए प्रायिकताओं का एक मैट्रिक्स होता है।

X_mc <- as.matrix(iris[, -5])
y_mc <- as.integer(iris$Species) - 1  # 0, 1, 2

dt_mc <- xgb.DMatrix(data = X_mc, label = y_mc)

params_mc <- list(
  objective  = 'multi:softprob',
  num_class  = 3,
  eta        = 0.1,
  max_depth  = 3
)

mod_mc <- xgboost(
  data = dt_mc, params = params_mc,
  nrounds = 50, verbose = 0
)

# Predictions: matrix of shape (n, num_class)
prob_matrix <- matrix(predict(mod_mc, dt_mc), ncol = 3, byrow = TRUE)
head(prob_matrix)

त्वरित जाँच

xgb.train() में early_stopping_rounds = 20 सेट करने का उद्देश्य क्या है?

XGBoost का पुनरावलोकन

XGBoost वाले ग्रेडिएंट बूस्टिंग से मुख्य बातें:

  • xgb.DMatrix(data, label) XGBoost का अनुकूलित डेटा प्रारूप बनाता है।
  • मुख्य पैरामीटर: eta (सीखने की दर), max_depth, subsample, colsample_bytree।
  • watchlist प्रत्येक चरण पर प्रशिक्षण और सत्यापन हानि की निगरानी करता है।
  • early_stopping_rounds वृक्षों की इष्टतम संख्या अपने-आप खोजता है।
  • xgb.cv() तेज़ हाइपरपैरामीटर खोज के लिए XGBoost के भीतर k-फोल्ड CV चलाता है।
  • द्विआधारी वर्गीकरण के लिए objective = 'binary:logistic' और बहु-वर्गीय वर्गीकरण के लिए 'multi:softprob' का उपयोग करें।
  • xgb.save() / xgb.load() से मॉडलों को सहेजें और लोड करें।
# Production XGBoost pipeline
dtrain <- xgb.DMatrix(data = X_train, label = y_train)
dtest  <- xgb.DMatrix(data = X_test,  label = y_test)

params <- list(objective = 'reg:squarederror',
               eta = 0.05, max_depth = 5, subsample = 0.8)

cv  <- xgb.cv(params, dtrain, nrounds = 500, nfold = 5,
              early_stopping_rounds = 20, verbose = 0)

model <- xgboost(data = dtrain, params = params,
                 nrounds = cv$best_iteration, verbose = 0)

preds <- predict(model, dtest)
cat('RMSE:', sqrt(mean((preds - y_test)^2)))
शुरुआत निःशुल्क

एआई शिक्षक के साथ R सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
43
पाठ
159

अक्सर पूछे जाने वाले प्रश्न

क्या “xgboost से ग्रेडिएंट बूस्टिंग” पाठ निःशुल्क है?

हाँ — R Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “xgboost से ग्रेडिएंट बूस्टिंग” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। R Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“xgboost से ग्रेडिएंट बूस्टिंग” में मैं क्या सीखूँगा?

xgboost के पैरामीटर, जल्दी रोकना और सीखने की दर की अनुसूचियाँ कॉन्फ़िगर करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ R Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या R Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर R Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“xgboost से ग्रेडिएंट बूस्टिंग” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस R Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर R Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. निर्णय वृक्ष: एन्सेम्बल की नींव
  2. ranger से रैंडम फ़ॉरेस्ट
  3. xgboost से ग्रेडिएंट बूस्टिंग
  4. फीचर महत्त्व और मॉडल की व्याख्या
← R Academy पर वापस जाएँ