Zacznij terazZacznij za darmo

Modelowanie interakcji (2)

W tym ćwiczeniu porównasz wydajność modelu z interakcją dopasowanego w poprzednim ćwiczeniu z wydajnością modelu uwzględniającego tylko efekty główne. Ponieważ ten zbiór danych jest mały, do symulowania predykcji na danych spoza próby użyjemy walidacji krzyżowej.

Zaczniesz korzystać z pakietu dplyr do wykonywania obliczeń.

  • mutate() (docs) dodaje nowe kolumny do tbl (rodzaju ramki danych)
  • group_by() (docs) określa sposób grupowania wierszy w tbl
  • summarize() (docs) oblicza statystyki podsumowujące dla kolumny

Skorzystasz również z funkcji pivot_longer() (docs) z pakietu tidyr, która łączy wiele kolumn w pary klucz–wartość. Ramka danych alcohol oraz formuły fmla_add i fmla_interaction zostały wstępnie załadowane.

To ćwiczenie jest częścią kursu

Nadzorowane uczenie maszynowe w R: regresja

Zobacz kurs

Instrukcje do ćwiczenia

  • Użyj funkcji kWayCrossValidation() (docs), aby utworzyć plan podziału dla 3-krotnej walidacji krzyżowej.
    • Pierwszy argument to liczba wierszy do podziału.
    • Drugi argument to liczba fałd walidacji krzyżowej.
    • Trzeci i czwarty argument funkcji możesz ustawić na NULL.
  • Przeanalizuj i uruchom przykładowy kod, aby uzyskać predykcje z 3-krotnej walidacji krzyżowej dla modelu bez interakcji, a następnie przypisz je do kolumny pred_add.
  • Uzyskaj predykcje z 3-krotnej walidacji krzyżowej dla modelu z interakcjami. Przypisz predykcje do kolumny pred_interaction.
    • Przykładowy kod pokazuje ci tę procedurę.
    • Użyj tego samego splitPlan, który już utworzyłeś/utworzyłaś.
  • Uzupełnij puste miejsca, aby:
    • za pomocą pivot_longer zebrać predykcje w jedną kolumnę pred,
    • dodać kolumnę reszt (rzeczywisty wynik – przewidywany wynik),
    • obliczyć RMSE predykcji z walidacji krzyżowej dla każdego typu modelu.
  • Porównaj wartości RMSE. Na podstawie tych wyników — który model warto wybrać?

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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 = ___(___(___)))
Edytuj i uruchom kod