Transformacje cech wejściowych: „kij hokejowy"
W tym ćwiczeniu zbudujesz model do przewidywania ceny na podstawie miary wielkości domu (powierzchni). Wczytany zbiór danych houseprice zawiera następujące kolumny:
price: cena domu w jednostkach 1000 USDsize: powierzchnia
Wykres punktowy danych pokazuje wyraźną nieliniowość: zależność przypomina „kij hokejowy" – cena jest stosunkowo płaska dla mniejszych domów, lecz gwałtownie rośnie wraz ze wzrostem wielkości. Wielomiany drugiego i trzeciego stopnia często dobrze oddają tego rodzaju relacje. Warto zauważyć, że nie musi istnieć żadne „fizyczne" uzasadnienie dla związku price z kwadratem size – wielomian drugiego stopnia to po prostu zwarta aproksymacja zaobserwowanej zależności.

Dopasuj model przewidujący cenę jako funkcję kwadratu powierzchni i sprawdź jego dopasowanie na danych treningowych.
Ponieważ ^ służy również do wyrażania interakcji, użyj funkcji I() (dokumentacja), aby wyrażenie x^2 zostało potraktowane dosłownie – czyli jako kwadrat x, a nie interakcja x z samym sobą.
exampleFormula = y ~ I(x^2)
To ćwiczenie jest częścią kursu
Nadzorowane uczenie maszynowe w R: regresja
Instrukcje do ćwiczenia
- Napisz formułę
fmla_sqrwyrażającą cenę jako funkcję kwadratu powierzchni. Wyświetl ją. - Dopasuj model
model_sqrdo danych, używając formułyfmla_sqr. - Dla porównania dopasuj liniowy model
model_lindo danych, używając formułyprice ~ size. - Uzupełnij brakujące fragmenty, aby:
- wygenerować predykcje na danych treningowych z obu modeli,
- przekształcić predykcje do jednej kolumny
predprzy użyciupivot_longer(), - graficznie porównać predykcje obu modeli z danymi. Który model lepiej pasuje do danych?
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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")