R'de k-katlamalı çapraz doğrulama (adım adım)


Bir modelin veri seti üzerindeki performansını değerlendirmek için modelin yaptığı tahminlerin gözlemlenen verilerle ne kadar iyi eşleştiğini ölçmemiz gerekir.

Bunu yapmak için yaygın olarak kullanılan bir yöntem, aşağıdaki yaklaşımı kullanan k-katlı çapraz doğrulama olarak bilinir:

1. Bir veri kümesini rastgele olarak yaklaşık olarak eşit büyüklükte k gruba veya “katlamaya” bölün.

2. Tutucu set olarak kıvrımlardan birini seçin. Şablonu kalan k-1 kıvrımlarına göre ayarlayın. Gerilmiş kattaki gözlemler üzerinden MSE testini hesaplayın.

3. Her seferinde farklı bir kümeyi dışlama kümesi olarak kullanarak bu işlemi k kez tekrarlayın.

4. Genel test MSE’sini k test MSE’sinin ortalaması olarak hesaplayın.

R’de k-katlı çapraz doğrulama gerçekleştirmenin en kolay yolu, R’deki düzeltme işareti kitaplığından trainControl() işlevini kullanmaktır.

Bu eğitimde, R’de belirli bir model için k-katlı çapraz doğrulama gerçekleştirmek üzere bu işlevin nasıl kullanılacağına ilişkin hızlı bir örnek sunulmaktadır.

Örnek: R’de K-Katlamalı Çapraz Doğrulama

R’de aşağıdaki veri kümesine sahip olduğumuzu varsayalım:

 #create data frame
df <- data.frame(y=c(6, 8, 12, 14, 14, 15, 17, 22, 24, 23),
                 x1=c(2, 5, 4, 3, 4, 6, 7, 5, 8, 9),
                 x2=c(14, 12, 12, 13, 7, 8, 7, 4, 6, 5))

#view data frame
df

y x1 x2
6 2 14
8 5 12
12 4 12
14 3 13
14 4 7
15 6 8
17 7 7
22 5 4
24 8 6
23 9 5

Aşağıdaki kod, R’deki bu veri kümesine çoklu doğrusal regresyon modelinin nasıl sığdırılacağını ve modelin performansını değerlendirmek için k = 5 kez k-katlı çapraz doğrulamanın nasıl gerçekleştirileceğini gösterir:

 library (caret)

#specify the cross-validation method
ctrl <- trainControl(method = " cv ", number = 5)

#fit a regression model and use k-fold CV to evaluate performance
model <- train(y ~ x1 + x2, data = df, method = " lm ", trControl = ctrl)

#view summary of k-fold CV               
print(model)

Linear Regression 

10 samples
 2 predictors

No pre-processing
Resampling: Cross-Validated (5 fold) 
Summary of sample sizes: 8, 8, 8, 8, 8 
Resampling results:

  RMSE Rsquared MAE     
  3.018979 1 2.882348

Tuning parameter 'intercept' was held constant at a value of TRUE

Sonucun nasıl yorumlanacağı aşağıda açıklanmıştır:

  • Hiçbir ön işlem yapılmadı. Yani modelleri yerleştirmeden önce verileri hiçbir şekilde ölçeklendirmedik .
  • Modeli değerlendirmek için kullandığımız yeniden örnekleme yöntemi 5 kat çapraz doğrulamaydı.
  • Her eğitim seti için örneklem büyüklüğü 8’dir.
  • RMSE: kök ortalama kare hatası. Bu, model tarafından yapılan tahminler ile gerçek gözlemler arasındaki ortalama farkı ölçer. RMSE ne kadar düşük olursa, model gerçek gözlemleri o kadar doğru tahmin edebilir.
  • Rsquared: Bu, model tarafından yapılan tahminler ile gerçek gözlemler arasındaki korelasyonun bir ölçüsüdür. R-kare değeri ne kadar yüksek olursa, model gerçek gözlemleri o kadar doğru tahmin edebilir.
  • MAE: Ortalama mutlak hata. Bu, model tarafından yapılan tahminler ile gerçek gözlemler arasındaki ortalama mutlak farktır. MAE ne kadar düşük olursa, model gerçek gözlemleri o kadar doğru tahmin edebilir.

Sonuçta sağlanan üç ölçümün her biri (RMSE, R-kare ve MAE), bize modelin yayınlanmamış veriler üzerindeki performansı hakkında fikir verir.

Uygulamada, hangi modelin en düşük test hatası oranlarını ürettiğine ve dolayısıyla kullanılacak en iyi model olduğuna karar vermek için genellikle birkaç farklı model uydururuz ve burada sunulan sonuçların sağladığı üç ölçümü karşılaştırırız.

Nihai model uyumunu incelemek için aşağıdaki kodu kullanabiliriz:

 #view final model
model$finalModel

Call:
lm(formula = .outcome ~ ., data = dat)

Coefficients:
(Intercept) x1 x2  
    21.2672 0.7803 -1.1253  

Nihai model şu şekilde ortaya çıkıyor:

y = 21,2672 + 0,7803*(x 1 ) – 1,12538(x 2 )

Her katlama için yapılan model tahminlerini görüntülemek için aşağıdaki kodu kullanabiliriz:

 #view predictions for each fold
model$resample

      RMSE Rsquared MAE Resample
1 4.808773 1 3.544494 Fold1
2 3.464675 1 3.366812 Fold2
3 6.281255 1 6.280702 Fold3
4 3.759222 1 3.573883 Fold4
5 1.741127 1 1.679767 Fold5

Bu örnekte k=5 katlamayı seçtiğimizi, ancak istediğiniz sayıda katlamayı seçebileceğinizi unutmayın. Pratikte genellikle 5 ila 10 kat arasında seçim yaparız, çünkü bu, güvenilir test hatası oranları üreten en uygun kat sayısıdır.

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir