R'de model performansı için çapraz doğrulama nasıl yapılır


İstatistiklerde genellikle iki nedenden dolayı modeller oluştururuz:

  • Bir veya daha fazla yordayıcı değişken ile bir yanıt değişkeni arasındaki ilişkiyi anlayın .
  • Gelecekteki gözlemleri tahmin etmek için bir model kullanın.

Çapraz doğrulama, bir modelin gelecekteki gözlemleri ne kadar iyi tahmin edebildiğini tahmin etmek için kullanışlıdır.

Örneğin, öngörücü değişkenler olarak yaş ve geliri, yanıt değişkeni olarak da temerrüt durumunu kullanan çoklu doğrusal regresyon modeli oluşturabiliriz . Bu durumda, modeli bir veri setine uydurmak isteyebiliriz ve daha sonra bu modeli, yeni başvuru sahibinin gelirine ve yaşına bağlı olarak kredisini ödeyememe olasılığını tahmin etmek için kullanabiliriz.

Modelin güçlü tahmin yeteneğine sahip olup olmadığını belirlemek için onu daha önce hiç görmediği veriler üzerinde tahminlerde bulunmak üzere kullanmamız gerekir . Bu, modelin tahmin hatasını tahmin etmemizi sağlayacaktır.

Tahmin Hatasını Tahmin Etmek İçin Çapraz Doğrulamayı Kullanma

Çapraz doğrulama, tahmin hatasını tahmin edebileceğimiz farklı yolları ifade eder. Çapraz doğrulamaya genel yaklaşım şudur:

1. Veri setinde belirli sayıda gözlemi bir kenara koyun; genellikle tüm gözlemlerin %15-25’i.
2. Modeli veri setinde tuttuğumuz gözlemlere göre yerleştirin (veya “eğitin”).
3. Modelin, modeli eğitmek için kullanmadığımız gözlemler hakkında ne kadar iyi tahminlerde bulunabildiğini test edin.

Bir modelin kalitesini ölçme

Yeni gözlemler hakkında tahminlerde bulunmak için uygun modeli kullandığımızda, modelin kalitesini ölçmek için aşağıdakiler de dahil olmak üzere birkaç farklı ölçüm kullanabiliriz:

Çoklu R-kare: Bu, yordayıcı değişkenler ile yanıt değişkeni arasındaki doğrusal ilişkinin gücünü ölçer . 1’in R-kare katı mükemmel bir doğrusal ilişkiyi belirtirken, 0’ın R-kare katı doğrusal bir ilişki olmadığını gösterir. R-kare çarpanı ne kadar yüksek olursa, yordayıcı değişkenlerin yanıt değişkenini tahmin etme olasılığı o kadar artar.

Kök ortalama kare hatası (RMSE): Yeni bir gözlemin değerini tahmin ederken modelin yaptığı ortalama tahmin hatasını ölçer . Bu, bir gözlemin gerçek değeri ile model tarafından tahmin edilen değer arasındaki ortalama mesafedir. RMSE için daha düşük değerler daha iyi model uyumunu gösterir.

Ortalama Mutlak Hata (MAE): Bir gözlemin gerçek değeri ile model tarafından tahmin edilen değer arasındaki ortalama mutlak farktır. Bu metrik genellikle aykırı değerlere karşı RMSE’ye göre daha az duyarlıdır. MAE için daha düşük değerler daha iyi model uyumunu gösterir.

R’de dört farklı çapraz doğrulama tekniğinin uygulanması

Daha sonra aşağıdaki çapraz doğrulama tekniklerinin R’de nasıl uygulanacağını açıklayacağız:

1. Doğrulama seti yaklaşımı
2. k-katlı çapraz doğrulama
3. Çapraz doğrulamayı bir kenara bırakın
4. Tekrarlanan k-katlı çapraz doğrulama

Bu farklı tekniklerin nasıl kullanılacağını göstermek için mtcars’ın yerleşik R veri kümesinin bir alt kümesini kullanacağız:

 #define dataset
data <- mtcars[, c("mpg", "disp", "hp", "drat")]

#view first six rows of new data
head(data)

# mpg disp hp drat
#Mazda RX4 21.0 160 110 3.90
#Mazda RX4 Wag 21.0 160 110 3.90
#Datsun 710 22.8 108 93 3.85
#Hornet 4 Drive 21.4 258 110 3.08
#Hornet Sportabout 18.7 360 175 3.15
#Valiant 18.1 225 105 2.76

Tahmin değişkenleri olarak disp, hp ve drat’ı ve yanıt değişkeni olarak mpg’yi kullanarak çoklu doğrusal regresyon modeli oluşturacağız .

Doğrulama seti yaklaşımı

Doğrulama seti yaklaşımı şu şekilde çalışır:

1. Verileri iki gruba bölün: bir grup modeli eğitmek için kullanılır (yani model parametrelerini tahmin etmek), diğer grup ise modeli test etmek için kullanılır. Genellikle verilerin %70-80’i rastgele seçilerek eğitim seti oluşturulur ve geri kalan %20-30’luk kısım test seti olarak kullanılır.

2. Eğitim veri kümesini kullanarak modeli oluşturun.
3. Test seti verileri hakkında tahminlerde bulunmak için modeli kullanın.
4. R-kare, RMSE ve MAE gibi ölçümleri kullanarak model kalitesini ölçün.

Örnek:

Aşağıdaki örnek yukarıda tanımladığımız veri kümesini kullanmaktadır. İlk önce verileri parçalara ayırıyoruz.
Verilerin %80’ini eğitim seti olarak ve verilerin geri kalan %20’sini test seti olarak kullanan bir eğitim seti ve bir test seti. Daha sonra eğitim setini kullanarak modeli oluşturuyoruz . Daha sonra modeli test seti hakkında tahminler yapmak için kullanırız. Son olarak modelin kalitesini R-squared, RMSE ve MAE kullanarak ölçüyoruz.

 #load dplyr library used for data manipulation
library(dplyr)

#load caret library used for partitioning data into training and test set
library(caret)

#make this example reproducible
set.seed(0)

#define the dataset
data <- mtcars[, c("mpg", "disp", "hp", "drat")]

#split the dataset into a training set (80%) and test set (20%).
training_obs <- data$mpg %>% createDataPartition(p = 0.8, list = FALSE)

train <- data[training_obs, ]
test <- data[-training_obs, ]

# Build the linear regression model on the training set
model <- lm(mpg ~ ., data = train)

# Use the model to make predictions on the test set
predictions <- model %>% predict(test)

#Examine R-squared, RMSE, and MAE of predictions
data.frame(R_squared = R2(predictions, test$mpg),
           RMSE = RMSE(predictions, test$mpg),
           MAE = MAE(predictions, test$mpg))

#R_squared RMSE MAE
#1 0.9213066 1.876038 1.66614

Farklı modelleri karşılaştırırken test setinde en düşük RMSE’yi üreten model tercih edilir.

Bu yaklaşımın avantajları ve dezavantajları

Doğrulama seti yaklaşımının avantajı basit ve hesaplama açısından verimli olmasıdır. Dezavantajı ise modelin toplam verinin yalnızca bir kısmı kullanılarak oluşturulmuş olmasıdır. Eğitim seti dışında bıraktığımız veriler ilginç veya değerli bilgiler içeriyorsa model bunu dikkate almayacaktır.

k-katlı çapraz doğrulama yaklaşımı

K-katlı çapraz doğrulama yaklaşımı şu şekilde çalışır:

1. Verileri rastgele olarak k “katlamaya” veya alt kümeye (örneğin, 5 veya 10 alt kümeye) bölün.
2. Modeli yalnızca bir alt kümeyi dışarıda bırakarak tüm veriler üzerinde eğitin.
3. Dışlanan alt kümedeki veriler hakkında tahminlerde bulunmak için modeli kullanın.
4. k alt kümenin her biri test kümesi olarak kullanılıncaya kadar bu işlemi tekrarlayın.
5 . K test hatasının ortalamasını alarak modelin kalitesini ölçün. Bu biliniyor
çapraz doğrulama hatası olarak.

Örnek

Bu örnekte öncelikle verileri 5 alt kümeye ayırıyoruz. Daha sonra, verilerin bir alt kümesi dışındaki tümünü kullanarak modeli uyduruyoruz. Daha sonra modeli , dışarıda bırakılan alt küme hakkında tahminler yapmak için kullanırız ve test hatasını kaydederiz (R-kare, RMSE ve MAE kullanarak). Her alt küme test kümesi olarak kullanılıncaya kadar bu işlemi tekrarlıyoruz . Daha sonra basitçe 5 test hatasının ortalamasını hesaplıyoruz .

 #load dplyr library used for data manipulation
library(dplyr)

#load caret library used for partitioning data into training and test set
library(caret)

#make this example reproducible
set.seed(0)

#define the dataset
data <- mtcars[, c("mpg", "disp", "hp", "drat")]

#define the number of subsets (or "folds") to use
train_control <- trainControl(method = "cv", number = 5)

#train the model
model <- train(mpg ~ ., data = data, method = "lm", trControl = train_control)

#Summarize the results
print(model)

#Linear Regression 
#
#32 samples
#3 predictor
#
#No pre-processing
#Resampling: Cross-Validated (5 fold) 
#Summary of sample sizes: 26, 25, 26, 25, 26 
#Resampling results:
#
# RMSE Rsquared MAE     
#3.095501 0.7661981 2.467427
#
#Tuning parameter 'intercept' was held constant at a value of TRUE

Bu yaklaşımın avantajları ve dezavantajları

K-katlı çapraz doğrulama yaklaşımının doğrulama seti yaklaşımına göre avantajı, modeli her seferinde farklı veri parçaları kullanarak birkaç farklı kez oluşturmasıdır , böylece modeli oluştururken önemli verileri atlama şansımız olmaz .

Bu yaklaşımın öznel kısmı, k için kullanılacak değerin, yani verinin bölüneceği alt kümelerin sayısının seçilmesidir . Genel olarak, daha düşük k değerleri daha yüksek yanlılığa ancak daha düşük değişkenliğe yol açarken, daha yüksek k değerleri daha düşük yanlılığa ancak daha yüksek değişkenliğe yol açar.

Uygulamada k genellikle 5 veya 10’a eşit olacak şekilde seçilir, çünkü bu sayıda alt küme aynı anda çok fazla önyargıyı ve çok fazla değişkenliği önleme eğilimindedir.

Birini Dışarıda Bırak Çapraz Doğrulama (LOOCV) yaklaşımı

LOOCV yaklaşımı şu şekilde çalışır:

1. Veri kümesindeki gözlemlerden biri hariç tümünü kullanarak modeli oluşturun.
2. Eksik gözlemin değerini tahmin etmek için modeli kullanın. Bu tahmini test etme hatasını kaydedin.
3. Veri setindeki her gözlem için bu işlemi tekrarlayın.
4. Tüm tahmin hatalarının ortalamasını alarak modelin kalitesini ölçün.

Örnek

Aşağıdaki örnek, önceki örneklerde kullanılan aynı veri kümesi için LOOCV gerçekleştirmenin nasıl kullanılacağını gösterir:

 #load dplyr library used for data manipulation
library(dplyr)

#load caret library used for partitioning data into training and test set
library(caret)

#make this example reproducible
set.seed(0)

#define the dataset
data <- mtcars[, c("mpg", "disp", "hp", "drat")]

#specify that we want to use LOOCV
train_control <- trainControl( method = "LOOCV" )

#train the model
model <- train(mpg ~ ., data = data, method = "lm", trControl = train_control)

#summarize the results
print(model)

#Linear Regression 
#
#32 samples
#3 predictor
#
#No pre-processing
#Resampling: Leave-One-Out Cross-Validation 
#Summary of sample sizes: 31, 31, 31, 31, 31, 31, ... 
#Resampling results:
#
# RMSE Rsquared MAE     
#3.168763 0.7170704 2.503544
#
#Tuning parameter 'intercept' was held constant at a value of TRUE

Bu yaklaşımın avantajları ve dezavantajları

LOOCV’nin avantajı tüm veri noktalarını kullanmamızdır, bu da genel olarak potansiyel yanlılığı azaltır. Ancak modeli her bir gözlemin değerini tahmin etmek için kullandığımız için bu, tahmin hatasında daha fazla değişkenliğe yol açabilir.

Bu yaklaşımın diğer bir dezavantajı, verimsiz ve hesaplama açısından ağır hale gelebilecek kadar çok sayıda modele uyması gerektiğidir.

Tekrarlanan k-katlı çapraz doğrulama yaklaşımı

Basitçe k-katlı çapraz doğrulamayı birden çok kez gerçekleştirerek tekrarlanan k-katlı çapraz doğrulamayı gerçekleştirebiliriz. Son hata, tekrar sayısının ortalama hatasıdır .

Aşağıdaki örnek, 4 kez tekrarlanan 5 katlı bir çapraz doğrulama gerçekleştirir:

 #load dplyr library used for data manipulation
library(dplyr)

#load caret library used for partitioning data into training and test set
library(caret)

#make this example reproducible
set.seed(0)

#define the dataset
data <- mtcars[, c("mpg", "disp", "hp", "drat")]

#define the number of subsets to use and number of times to repeat k-fold CV
train_control <- trainControl(method = "repeatedcv", number = 5, repeats = 4 )

#train the model
model <- train(mpg ~ ., data = data, method = "lm", trControl = train_control)

#summarize the results
print(model)

#Linear Regression 
#
#32 samples
#3 predictor
#
#No pre-processing
#Resampling: Cross-Validated (5 fold, repeated 4 times) 
#Summary of sample sizes: 26, 25, 26, 25, 26, 25, ... 
#Resampling results:
#
# RMSE Rsquared MAE     
#3.176339 0.7909337 2.559131
#
#Tuning parameter 'intercept' was held constant at a value of TRUE

Bu yaklaşımın avantajları ve dezavantajları

Tekrarlanan k-katlı çapraz doğrulama yaklaşımının avantajı, her tekrar için verilerin biraz farklı alt kümelere bölünmesidir; bu da modelin tahmin hatasına ilişkin daha tarafsız bir tahmin sunmalıdır. Bu yaklaşımın dezavantajı, model uydurma sürecini birkaç kez tekrarlamamız gerektiğinden hesaplama açısından yoğun olabilmesidir.

Çapraz doğrulamada katlama sayısı nasıl seçilir

Çapraz doğrulamanın en öznel kısmı kaç katlamanın (yani alt kümelerin) kullanılacağına karar vermektir. Genel olarak, katlama sayısı ne kadar küçükse, hata tahminleri o kadar taraflı olur ancak değişkenlikleri de o kadar az olur. Tersine, katlama sayısı ne kadar yüksek olursa, hata tahminleri o kadar az taraflı olur, ancak tahminler o kadar değişken olur.

Hesaplama süresini de akılda tutmak önemlidir. Her katlama için yeni bir desen eğitmeniz gerekecektir ve bu yavaş bir süreç olsa da, çok sayıda katlama seçerseniz uzun zaman alabilir.

Pratikte çapraz doğrulama genellikle 5 veya 10 katla gerçekleştirilir; çünkü bu, değişkenlik ve önyargı arasında iyi bir denge sağlarken aynı zamanda hesaplama açısından da verimlidir.

Çapraz doğrulama gerçekleştirildikten sonra model nasıl seçilir?

Çapraz doğrulama, bir modelin tahmin hatasını değerlendirmek için kullanılır. Bu, hangi modelin en düşük tahmin hatasına sahip olduğunu (RMSE, R-kare vb. temel alınarak) vurgulayarak iki veya daha fazla farklı model arasında seçim yapmamıza yardımcı olabilir.

En iyi modeli seçmek için çapraz doğrulamayı kullandıktan sonra, seçilen modele uyacak şekilde mevcut tüm verileri kullanırız. Son modelimiz için çapraz doğrulama sırasında eğittiğimiz gerçek model örneklerini kullanmıyoruz.

Örneğin, iki farklı regresyon modeli arasında hangi modelin kullanılmasının daha iyi olduğunu belirlemek için 5 katlı çapraz doğrulamayı kullanabiliriz. Ancak hangi modelin kullanılmasının en iyi olduğunu belirledikten sonra tüm verileri nihai modele uyacak şekilde kullanırız. Yani son modeli oluştururken hiçbir kıvrımı unutmuyoruz.

Yorum ekle

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