Začněte nyníZačněte zdarma

Transformace vstupů: „hokejka" (2)

V předchozím cvičení sis ověřil/a, že kvadratický model zdánlivě lépe odpovídá datům houseprice než lineární model. V tomto cvičení prověříš, jestli by kvadratický model podával lepší výsledky i na nových datech. Protože je tato datová sada malá, použiješ křížovou validaci. Kvadratický vzorec fmla_sqr, který sis vytvořil/a v předchozím cvičení, a datový rámec houseprice máš k dispozici.

Pro srovnání ukázkový kód vypočítá predikce z křížové validace pro lineární model price ~ size.

Toto cvičení je součástí kurzu

Supervised Learning in R: Regression

Zobrazit kurz

Pokyny k cvičení

  • Pomocí kWayCrossValidation() vytvoř plán rozdělení pro 3-násobnou křížovou validaci.
    • Třetí a čtvrtý argument funkce můžeš nastavit na NULL.
  • Prohlédni si ukázkový kód a spusť ho, abys získal/a predikce 3-násobné křížové validace pro model price ~ size, a ulož je do sloupce pred_lin.
  • Získej predikce křížové validace pro cenu jako funkci druhé mocniny velikosti a přiřaď je do sloupce pred_sqr.
    • Postup ti ukazuje ukázkový kód.
    • Můžeš použít plán rozdělení, který sis již vytvořil/a.
  • Doplň chybějící části kódu, abys transformoval/a predikce a vypočítal/a rezidua.
  • Doplň chybějící části kódu pro porovnání hodnot RMSE obou modelů. Který z nich lépe sedí na data?

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# houseprice is available
summary(houseprice)

# fmla_sqr is available
fmla_sqr

# Create a splitting plan for 3-fold cross validation
set.seed(34245)  # set the seed for reproducibility
splitPlan <- ___

# Sample code: get cross-val predictions for price ~ size
houseprice$pred_lin <- 0  # initialize the prediction vector
for(i in 1:3) {
  split <- splitPlan[[i]]
  model_lin <- lm(price ~ size, data = houseprice[split$train,])
  houseprice$pred_lin[split$app] <- predict(model_lin, newdata = houseprice[split$app,])
}

# Get cross-val predictions for price as a function of size^2 (use fmla_sqr)
houseprice$pred_sqr <- 0 # initialize the prediction vector
for(i in 1:3) {
  split <- ___
  model_sqr <- lm(___, data = houseprice[split$train, ])
  houseprice$___[split$app] <- predict(___, newdata = houseprice[split$app, ])
}

# Pivot the predictions and calculate the residuals
houseprice_long <- houseprice %>%
  pivot_longer(cols = c('pred_lin', 'pred_sqr'), names_to = 'modeltype', values_to = 'pred') %>%
  mutate(residuals = ___)

# Compare the cross-validated RMSE for the two models
houseprice_long %>% 
  group_by(modeltype) %>% # group by modeltype
  summarize(rmse = ___)
Upravit a spustit kód