n-fold çapraz doğrulama ile bir modelleme prosedürünü değerlendir
Bu egzersizde, önceki egzersizde oluşturduğun splitPlan adlı 3 katlı çapraz doğrulama planını kullanarak, mpg$hwy değişkeninden mpg$cty değerlerini tahmin eden bir modelin tahminlerini üreteceksin.
Eğer eğitim verisi dframe ise, çerçeveye çapraz doğrulama tahminlerinden oluşan bir sütun eklemenin bir yolu şöyledir:
# Uygun uzunlukta bir sütun başlat
dframe$pred.cv <- 0
# k kat sayısıdır
# splitPlan çapraz doğrulama planıdır
for(i in 1:k) {
# i'inci bölmeyi al
split <- splitPlan[[i]]
# Bu bölmenin eğitim verisi üzerinde
# bir model kur (bu örnekte lm)
model <- lm(fmla, data = dframe[split$train,])
# Bu bölmenin uygulama verisi üzerinde
# tahminler yap
dframe$pred.cv[split$app] <- predict(model, newdata = dframe[split$app,])
}
Çapraz doğrulama, tüm veriden kurulmuş bir modelin yeni veride ne kadar iyi performans göstereceğini öngörür. Test/eğitim ayrımında olduğu gibi, iyi bir modelleme prosedüründe çapraz doğrulama performansı ile Eğitim performansı birbirine yakın olmalıdır.
mpg veri çerçevesi, splitPlan adlı çapraz doğrulama planı ve rmse() fonksiyonu önceden yüklendi.
Bu egzersiz, kursun bir parçasıdır
R'de Supervised Learning: Regresyon
Egzersiz talimatları
splitPlaniçindeki 3 katlı çapraz doğrulama planını çalıştır ve tahminlerimpg$pred.cvsütununa yaz.lm()vecty ~ hwyformülünü kullan.
- Tüm
mpgverisi üzerinde bir lineer regresyon modeli kur (formülcty ~ hwy) ve tahminlerimpg$preddeğişkenine ata. - Tam modelin tahminlerinin kök ortalama karesel hatasını (
mpg$pred) elde etmek içinrmse()kullan.rmse()fonksiyonunun iki argüman aldığını unutma: tahmin edilen değerler ve gerçek çıktı. - Çapraz doğrulama tahminlerinin kök ortalama karesel hatasını elde et. İki değer aşağı yukarı aynı mı?
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
# mpg is available
summary(mpg)
# splitPlan is available
str(splitPlan)
# Run the 3-fold cross validation plan from splitPlan
k <- ___ # Number of folds
mpg$pred.cv <- 0
for(i in ___) {
split <- ___
model <- lm(___, data = ___)
mpg$pred.cv[___] <- predict(___, newdata = ___)
}
# Predict from a full model
mpg$pred <- ___(___(cty ~ hwy, data = mpg))
# Get the rmse of the full model's predictions
___(___, ___)
# Get the rmse of the cross-validation predictions
___(___, ___)