R Academy · Ders

xgboost ile Gradyan Artırma

xgboost parametrelerini, erken durdurmayı ve öğrenme hızı çizelgelerini yapılandırın.

3. ders / 413 adım

xgboost ile Gradyan Artırma, CoddyKit'te ücretsiz bir R Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, R Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. R Academy kursu toplamda 4 dersten oluşur.

Gradient Boosting Nedir?

Gradient boosting, bir topluluğu sıralı olarak oluşturur. Her yeni ağaç, kayıp fonksiyonunun negatif gradyanına uyarak önceki topluluğun artık hatalarını düzeltir. Random forest yöntemlerinin aksine (paralel ağaçlar), boosting ağaçları birer birer oluşturur ve her ağaç bir öncekinin hatalarından öğrenir.

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'un iyileştirilmiş dahili veri biçimidir. Özellik matrisini ve etiket vektörünü birlikte depolayarak hızlı ve belleği verimli kullanan hesaplama olanağı sağlar. Eğitimden önce verilerinizi her zaman DMatrix'e dönüştürün.

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() — Temel Eğitim

xgboost(data, nrounds, eta, max_depth, objective), modeli eğitir. Temel parametreler şunlardır: eta (öğrenme oranı; daha küçük değer daha dayanıklı ancak daha yavaştır), max_depth (ağaç derinliği; model karmaşıklığını denetler) ve nrounds (ağaç sayısı).

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 — Doğrulama Kaybını İzleme

watchlist bağımsız değişkeni, adlandırılmış bir DMatrix nesneleri listesi kabul eder. XGBoost, her boosting turundan sonra listelenen her veri kümesindeki kaybı değerlendirir ve yazdırır. Eğitim ve doğrulama kaybını izlemek ve aşırı öğrenmenin ne zaman başladığını belirlemek için bunu kullanın.

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, doğrulama ölçütü art arda 20 tur boyunca iyileşmezse eğitimi durdurur. Böylece kapsamlı elle ayarlama yapmadan en uygun ağaç sayısını otomatik olarak bulur ve hem yetersiz öğrenmeyi hem de aşırı öğrenmeyi önler.

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)

İkili Sınıflandırma

İkili sınıflandırma için tahmin edilen olasılıkları üreten objective = 'binary:logistic' ayarını kullanın. Etiket sayısal 0/1 biçiminde olmalıdır. eval_metric parametresini kullanarak AUC veya log-kayıp ile değerlendirin.

# 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
)

Tahminler

predict(model, dtest), ham tahmin değerleri döndürür: sınıflandırmada olasılıklar, regresyonda ise gerçek değerli tahminler. Sınıflandırma görevlerinde olasılıkları sınıf etiketlerine dönüştürmek için 0,5 eşik değerini uygulayın.

# 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() — Çapraz Doğrulama

xgb.cv(params, data, nrounds, nfold), XGBoost içinde k katlı çapraz doğrulama yürütür. XGBoost katları dahili olarak yönettiği için bu yöntem rsample kullanmaktan daha hızlıdır. Çıktıda her tur için ölçütün ortalaması ve SD değeri gösterilir.

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]])

Temel Hiperparametreler

XGBoost'ta en etkili hiperparametreler şunlardır:

  • eta: Öğrenme oranı (0.01-0.3). Daha düşük değerlerde daha fazla ağaç gerekir ve model daha dayanıklı olur.
  • max_depth: Ağaç derinliği (3-10). Daha büyük değerler daha karmaşık modeller oluşturur ve daha hızlı aşırı öğrenir.
  • subsample: Ağaç başına satır oranı (0.5-1.0). Aşırı öğrenmeyi azaltır.
  • colsample_bytree: Ağaç başına özellik oranı (0.5-1.0).
  • lambda: Yaprak ağırlıkları üzerinde L2 düzenlileştirmesi.
  • alpha: Yaprak ağırlıkları üzerinde L1 düzenlileştirmesi.
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
)

Modelleri Kaydetme ve Yükleme

XGBoost modelleri, xgb.save(model, 'model.xgb') ile diske ikili biçimde kaydedilebilir ve xgb.load('model.xgb') ile yeniden yüklenebilir. Bu, üretimde kullanıma alma için önerilen biçimdir ve bit düzeyinde tam yeniden üretilebilirlik sağlar.

# 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

Çok Sınıflı Sınıflandırma

Çok sınıflı problemler için objective = 'multi:softprob' kullanın ve num_class değerini sınıf sayısına ayarlayın. Etiketler, 0'dan başlayan tamsayılar olmalıdır. Çıktı, her sınıf için olasılıkların bulunduğu bir matristir.

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)

Hızlı Kontrol

xgb.train() içinde early_stopping_rounds = 20 ayarının amacı nedir?

XGBoost Özeti

XGBoost ile Gradient Boosting'den çıkarılacak temel sonuçlar:

  • xgb.DMatrix(data, label), XGBoost'un iyileştirilmiş veri biçimini oluşturur.
  • Temel parametreler: eta (öğrenme oranı), max_depth, subsample ve colsample_bytree.
  • watchlist, her turdaki eğitim ve doğrulama kaybını izler.
  • early_stopping_rounds, en uygun ağaç sayısını otomatik olarak bulur.
  • xgb.cv(), hızlı hiperparametre araması için XGBoost içinde k katlı CV yürütür.
  • İkili sınıflandırma için objective = 'binary:logistic', çok sınıflı sınıflandırma için 'multi:softprob' kullanın.
  • Modelleri xgb.save() / xgb.load() ile kaydedin ve yükleyin.
# 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)))
Başlamak ücretsiz

Yapay zeka eğitmeniyle R öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
43
Dersler
159

Sıkça Sorulan Sorular

“xgboost ile Gradyan Artırma” dersi ücretsiz mi?

Evet — “xgboost ile Gradyan Artırma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve R Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. R Academy kursu toplamda 4 dersten oluşur.

“xgboost ile Gradyan Artırma” dersinde ne öğreneceğim?

xgboost parametrelerini, erken durdurmayı ve öğrenme hızı çizelgelerini yapılandırın. R Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

R Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te R Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“xgboost ile Gradyan Artırma” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu R Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her R Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Karar Ağaçları: Topluluk Modellerinin Temeli
  2. ranger ile Rastgele Ormanlar
  3. xgboost ile Gradyan Artırma
  4. Özellik Önem Derecesi ve Model Yorumlama
← R Academy Sayfasına Dön