Etkileşimi modelleme (2)
Bu egzersizde, önceki egzersizde kurduğun etkileşimli modelin performansını, sadece ana etkileri içeren bir modelin performansıyla karşılaştıracaksın. Bu veri kümesi küçük olduğundan, örnekleme dışı veriler üzerinde tahmin yapmayı taklit etmek için çapraz doğrulama kullanacağız.
Hesaplamalar için dplyr paketini kullanmaya başlayacaksın.
mutate()(docs) bir tbl'a (veri çerçevesi türü) yeni sütunlar eklergroup_by()(docs) bir tbl'da satırların nasıl gruplanacağını belirtirsummarize()(docs) bir sütunun özet istatistiklerini hesaplar
Ayrıca birden çok sütunu anahtar-değer çiftlerine dönüştüren tidyr'ın pivot_longer() (docs) fonksiyonunu kullanacaksın. alcohol veri çerçevesi ile fmla_add ve fmla_interaction formülleri önceden yüklendi.
Bu egzersiz, kursun bir parçasıdır
R'de Supervised Learning: Regresyon
Egzersiz talimatları
- 3 katlı bir çapraz doğrulama için bir bölme planı oluşturmak üzere
kWayCrossValidation()(docs) kullan.- İlk argüman bölünecek satır sayısıdır.
- İkinci argüman çapraz doğrulama için katman (fold) sayısıdır.
- Fonksiyonun 3. ve 4. argümanlarını
NULLolarak ayarlayabilirsin.
- Örnek kodu inceleyip çalıştırarak, etkileşim içermeyen bir modelin 3 katlı çapraz doğrulama tahminlerini al ve bunları
pred_addsütununa ata. - Etkileşimli modelin 3 katlı çapraz doğrulama tahminlerini al. Tahminleri
pred_interactionsütununa ata.- Prosedürü örnek kod gösteriyor.
- Zaten oluşturduğun aynı
splitPlan'i kullan.
- Boşlukları doldurarak şunları yap:
- Tahminleri tek bir
predsütununapivot_longerile dönüştür. - artıklar için bir sütun ekle (gerçek çıktı - tahmin edilen çıktı).
- her model türü için çapraz doğrulama tahminlerinin RMSE değerini elde et.
- Tahminleri tek bir
- RMSE'leri karşılaştır. Bu sonuçlara göre hangi modeli kullanmalısın?
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
# alcohol is available
summary(alcohol)
# Both the formulae are available
fmla_add
fmla_interaction
# Create the splitting plan for 3-fold cross validation
set.seed(34245) # set the seed for reproducibility
splitPlan <- ___(___(___), ___, ___, ___)
# Sample code: Get cross-val predictions for main-effects only model
alcohol$pred_add <- 0 # initialize the prediction vector
for(i in 1:3) {
split <- splitPlan[[i]]
model_add <- lm(fmla_add, data = alcohol[split$train, ])
alcohol$pred_add[split$app] <- predict(model_add, newdata = alcohol[split$app, ])
}
# Get the cross-val predictions for the model with interactions
alcohol$pred_interaction <- 0 # initialize the prediction vector
for(i ___ ___) {
split <- ___
model_interaction <- lm(___, data = alcohol[split$train, ])
alcohol$___[split$app] <- predict(___, newdata = alcohol[split$app, ])
}
# Get RMSE
alcohol %>%
pivot_longer(cols=c('pred_add', 'pred_interaction'), names_to='modeltype', values_to='pred') %>%
mutate(residuals = ____) %>%
group_by(modeltype) %>%
summarize(rmse = ___(___(___)))