0Pricing
R Academy · Ders

ranger ile Rastgele Ormanlar

Rastgele orman modellerini eğitin, mtry ve ntrees değerlerini ayarlayın ve OOB hatasını değerlendirin.

ranger ile Rastgele Ormanlar, CoddyKit'te ücretsiz bir R Academy dersidir. Bu, 4 dersinin 2. 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.

Random Forest Nedir?

Bir random forest, verilerin önyükleme ile oluşturulmuş örneklemleri üzerinde çok sayıda karar ağacı kurar; ardından tahminlerin ortalamasını alır (regresyon) veya çoğunluk oyu kullanır (sınıflandırma). Topluluğa adını veren iki rastgelelik kaynağı vardır: satırların önyükleme ile örneklenmesi ve her bölmede özelliklerin rastgele seçilmesi.

library(ranger)

# Minimal random forest: 500 trees, auto mtry
rf <- ranger(
  medv ~ .,
  data      = MASS::Boston,
  num.trees = 500
)

print(rf)

mtry Parametresi

mtry, her bölmede rastgele olarak değerlendirilen özellik sayısıdır. Toplam özellik sayısından daha az özellik kullanmak, ağaçların birbirleriyle korelasyonunu azaltarak varyansı düşürür. Genel kural olarak sınıflandırmada mtry = sqrt(p), regresyonda ise mtry = p/3 kullanılır; burada p, yordayıcıların sayısıdır.

p <- ncol(MASS::Boston) - 1  # number of predictors

rf_class <- ranger(
  Species ~ ., data = iris,
  num.trees = 500,
  mtry      = floor(sqrt(4))  # sqrt(p) for classification
)

rf_reg <- ranger(
  medv ~ ., data = MASS::Boston,
  num.trees = 500,
  mtry      = floor(p / 3)    # p/3 for regression
)

cat('Classification OOB Error:', rf_class$prediction.error)
cat('Regression OOB RMSE:', sqrt(rf_reg$prediction.error))

OOB Hatası — Ücretsiz Doğrulama

Her ağaç bir önyükleme örneklemiyle eğitildiği için gözlemlerin yaklaşık üçte biri dışarıda bırakılır (önyükleme dışı, OOB). Bu OOB örnekleri, her ağaç için yerleşik bir doğrulama kümesi görevi görür. Toplam OOB hatası, sınama hatasının neredeyse yanlılıksız bir tahminidir; ayrı bir doğrulama kümesi gerekmez.

rf <- ranger(
  medv ~ ., data = MASS::Boston,
  num.trees = 500,
  mtry      = 4
)

# OOB MSE
cat('OOB MSE:', rf$prediction.error)

# OOB RMSE
cat('OOB RMSE:', sqrt(rf$prediction.error))

# For classification: OOB error rate
rf_cl <- ranger(Species ~ ., data = iris)
cat('OOB Error Rate:', rf_cl$prediction.error)

Değişken Önemi

importance = 'impurity' ayarı, tüm ağaçlarda her özellik için düğüm safsızlığındaki (Gini veya MSE) toplam azalmayı kaydeder. importance = 'permutation' ayarı ise her özellik rastgele karıştırıldığında doğruluktaki kaybı ölçer; bu yöntem daha güvenilirdir ancak daha yavaştır.

rf_imp <- ranger(
  medv ~ ., data = MASS::Boston,
  num.trees  = 500,
  importance = 'impurity'
)

# Sorted importance scores
imp <- sort(rf_imp$variable.importance, decreasing = TRUE)
print(imp)

# Quick plot
barplot(imp, las = 2, col = 'steelblue',
        main = 'Random Forest Variable Importance')

ranger ile Tahminler

Tahminler üretmek için predict(rf, data = test) kullanın. Sonuç bir listedir; tahminlere $predictions ile erişin. Sınıflandırmada tahminler, varsayılan olarak factor düzeyleridir.

set.seed(1)
idx   <- sample(nrow(MASS::Boston), 400)
train <- MASS::Boston[idx, ]
test  <- MASS::Boston[-idx, ]

rf <- ranger(medv ~ ., data = train, num.trees = 500)

pred <- predict(rf, data = test)
test_rmse <- sqrt(mean((pred$predictions - test$medv)^2))
cat('Test RMSE:', round(test_rmse, 3))

Karışıklık Matrisi Kavramı

Sınıflandırmada karışıklık matrisi, gerçek sınıfları tahmin edilen sınıflarla çapraz tablolar. Bu tablodan türetilen temel ölçütler arasında doğruluk, kesinlik (TP / (TP + FP)), duyarlılık (TP / (TP + FN)) ve F1 skoru bulunur. ranger, OOB karışıklık matrisini doğrudan sağlar.

rf_cl <- ranger(
  Species ~ ., data = iris,
  num.trees = 500,
  mtry      = 2
)

# OOB confusion matrix
print(rf_cl$confusion.matrix)

# OOB error rate
cat('OOB Error Rate:', rf_cl$prediction.error)

# Manual accuracy on OOB predictions
# (1 - error rate)
cat('OOB Accuracy:', 1 - rf_cl$prediction.error)

mtry ve num.trees Ayarlarını Yapma

Daha fazla ağaç, azalan getirilerin yaklaşık 300-500 ağaç civarında başlamasına kadar varyansı her zaman azaltır. mtry parametresinin en uygun bir değeri vardır. Basit bir ayarlama döngüsü, çapraz doğrulama kullanmadan en uygun değeri bulmak için bir mtry değerleri aralığında OOB hatasını değerlendirir.

mtry_vals <- c(2, 4, 6, 8, 10)
oob_errors <- sapply(mtry_vals, function(m) {
  rf <- ranger(
    medv ~ ., data = MASS::Boston,
    num.trees = 300, mtry = m
  )
  rf$prediction.error
})

best_mtry <- mtry_vals[which.min(oob_errors)]
cat('Best mtry:', best_mtry)
plot(mtry_vals, sqrt(oob_errors), type = 'b',
     xlab = 'mtry', ylab = 'OOB RMSE')

Sınıflandırma için ranger

Sınıflandırmada, kesin etiketler yerine sınıf olasılığı tahminleri elde etmek için probability = TRUE ayarını kullanın. Bu ayar, ROC eğrisi hesaplamak ve kalibre edilmiş olasılık tahminleri elde etmek için gereklidir; ayrıca yardstick ölçütlerinin beklediği çıktı biçimiyle uyumludur.

# Ensure the target is a factor
iris$Species <- as.factor(iris$Species)

rf_prob <- ranger(
  Species ~ ., data = iris,
  num.trees   = 300,
  probability = TRUE  # output class probabilities
)

# Predictions are a matrix of probabilities
pred_prob <- predict(rf_prob, data = iris[1:5, ])
print(pred_prob$predictions)

ranger ile Paralel Çalışma

ranger, hız ve paralel çalışma için tasarlanmıştır. Kullanılabilir tüm CPU çekirdeklerini kullanmak için num.threads değerini ayarlayın. Bu, özellikle çok sayıda ağaç içeren büyük veri kümelerinde, daha eski randomForest paketine kıyasla büyük hız artışları sağlayabilir.

# Use all available cores
rf_fast <- ranger(
  medv ~ ., data = MASS::Boston,
  num.trees  = 1000,
  mtry       = 4,
  num.threads = parallel::detectCores()
)

cat('Trees:', rf_fast$num.trees)
cat('Threads used:', rf_fast$num.threads)
cat('OOB RMSE:', sqrt(rf_fast$prediction.error))

tidymodels ile ranger

ranger'ı tutarlı bir söz dizimi sağlayan ve iş akışlarıyla, çapraz doğrulamayla ve ayarlamayla bütünleşen tidymodels arayüzü üzerinden kullanabilirsiniz. Motoru 'ranger' olarak belirtin ve motora özgü bağımsız değişkenleri set_engine() ile aktarın.

library(parsnip)
library(workflows)

rf_spec <- rand_forest(
  mtry  = tune(),
  trees = 500,
  min_n = tune()
) |>
  set_engine('ranger', importance = 'impurity') |>
  set_mode('regression')

wf <- workflow() |>
  add_recipe(rec) |>
  add_model(rf_spec)

print(wf)

ranger Çıktısını Yorumlama

Yazdırılan ranger modeli şunları gösterir: ağaç sayısı, hedef değişken, kullanılan özellik sayısı, OOB tahmin hatası ve R-kare (regresyon için). Hızlı bir akıl sağlığı kontrolü olarak OOB hatasını mutlaka inceleyin; büyük bir veri kümesinde bu değer son derece düşükse veri sızıntısından şüphelenin.

rf <- ranger(
  medv ~ ., data = MASS::Boston,
  num.trees  = 500, mtry = 4,
  importance = 'impurity'
)

# Key output fields
cat('OOB MSE:      ', rf$prediction.error, '\n')
cat('OOB RMSE:     ', sqrt(rf$prediction.error), '\n')
cat('R-squared:    ', rf$r.squared, '\n')
cat('Num trees:    ', rf$num.trees, '\n')
cat('Num features: ', rf$num.independent.variables, '\n')

Hızlı Kontrol

ranger ile oluşturulmuş bir random forest'ta OOB (önyükleme dışı) hatası neyi tahmin eder?

Random Forest Özeti

ranger ile Random Forest yönteminden çıkarılacak temel sonuçlar:

  • Random forest yöntemleri, önyükleme ile oluşturulmuş örneklemler üzerinde kurulan çok sayıda ağacı ve her bölmedeki rastgele özellik seçimini birleştirir.
  • mtry: sınıflandırma için sqrt(p), regresyon için p/3; bu parametreyi ayarlayın.
  • OOB hatası, ücretsiz ve neredeyse yanlılıksız bir doğrulama tahmini sağlar.
  • importance = 'impurity' veya 'permutation', değişken önemi puanları sağlar.
  • Sınıflandırmada sınıf olasılığı çıktıları için probability = TRUE ayarını kullanın.
  • ranger yüksek düzeyde paralel çalışır; büyük veri kümelerinde num.threads kullanın.
  • rand_forest() |> set_engine('ranger') ile tidymodels'e bütünleştirin.
rf <- ranger(
  medv ~ ., data = MASS::Boston,
  num.trees  = 500,
  mtry       = 4,
  importance = 'impurity',
  num.threads = parallel::detectCores()
)

cat('OOB RMSE:', sqrt(rf$prediction.error))
cat('R2:', rf$r.squared)

print(sort(rf$variable.importance, decreasing = TRUE))

Sıkça Sorulan Sorular

“ranger ile Rastgele Ormanlar” dersi ücretsiz mi?

Evet — “ranger ile Rastgele Ormanlar” 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.

“ranger ile Rastgele Ormanlar” dersinde ne öğreneceğim?

Rastgele orman modellerini eğitin, mtry ve ntrees değerlerini ayarlayın ve OOB hatasını değerlendirin. 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 2. dersidir.

“ranger ile Rastgele Ormanlar” 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