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

Transformace vstupů: „hokejová hůl"

V tomto cvičení sestavíš model pro predikci ceny na základě velikosti domu (plochy). Dataset houseprice, který máš k dispozici, obsahuje tyto sloupce:

  • price: cena domu v jednotkách 1 000 $
  • size: plocha domu

Rozptylový graf dat ukazuje výrazně nelineární vztah – takzvaný tvar „hokejové hole", kdy cena u menších domů téměř neroste, ale s větší plochou strmě stoupá. Kvadratické a kubické funkce jsou pro vyjádření takovýchto vztahů často vhodnou volbou. Nemusí přitom existovat žádný „fyzikální" důvod, proč by price mělo záviset na druhé mocnině size – kvadratická funkce je prostě uzavřenou aproximací pozorovaného vztahu.

scatterplot

Sestavíš model, který predikuje cenu jako funkci druhé mocniny plochy, a podíváš se, jak dobře odpovídá trénovacím datům.

Protože ^ se používá také k vyjádření interakcí, použij funkci I() (docs), která zajistí, že výraz x^2 bude zpracován „tak, jak je" – tedy jako druhá mocnina x, nikoli jako interakce x se sebou samým.

exampleFormula = y ~ I(x^2)

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

Supervised Learning in R: Regression

Zobrazit kurz

Pokyny k cvičení

  • Zapiš vzorec fmla_sqr vyjadřující cenu jako funkci druhé mocniny plochy. Vypiš ho.
  • Na základě fmla_sqr natrénuj model model_sqr.
  • Pro srovnání natrénuj lineární model model_lin s vzorcem price ~ size.
  • Doplň chybějící části kódu tak, aby:
    • oba modely vytvořily predikce na trénovacích datech,
    • predikce byly sloučeny do jednoho sloupce pred pomocí pivot_longer(),
    • bylo možné graficky porovnat predikce obou modelů s reálnými daty. Který model sedí lépe?

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)

# Create the formula for price as a function of squared size
(fmla_sqr <- ___)

# Fit a model of price as a function of squared size (use fmla_sqr)
model_sqr <- ___

# Fit a model of price as a linear function of size
model_lin <- ___

# Make predictions and compare
houseprice %>% 
    mutate(pred_lin = ___(___),       # predictions from linear model
           pred_sqr = ___(___)) %>%   # predictions from quadratic model
    pivot_longer(cols = c('pred_lin', 'pred_sqr'), names_to = 'modeltype', values_to = 'pred') %>% # pivot the predictions
    ggplot(aes(x = size)) + 
       geom_point(aes(y = ___)) +                   # actual prices
       geom_line(aes(y = ___, color = modeltype)) + # the predictions
       scale_color_brewer(palette = "Dark2")
Upravit a spustit kód