Zacznij terazZacznij za darmo

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 USD
  • size: 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.

scatterplot

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Napisz formułę fmla_sqr wyrażającą cenę jako funkcję kwadratu powierzchni. Wyświetl ją.
  • Dopasuj model model_sqr do danych, używając formuły fmla_sqr.
  • Dla porównania dopasuj liniowy model model_lin do danych, używając formuły price ~ size.
  • Uzupełnij brakujące fragmenty, aby:
    • wygenerować predykcje na danych treningowych z obu modeli,
    • przekształcić predykcje do jednej kolumny pred przy użyciu pivot_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")
Edytuj i uruchom kod