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.

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
Pokyny k cvičení
- Zapiš vzorec
fmla_sqrvyjadřující cenu jako funkci druhé mocniny plochy. Vypiš ho. - Na základě
fmla_sqrnatrénuj modelmodel_sqr. - Pro srovnání natrénuj lineární model
model_lins vzorcemprice ~ 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
predpomocí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")