Zacznij terazZacznij za darmo

Błąd względny

W tym ćwiczeniu porównasz błąd względny z błędem bezwzględnym. Na potrzeby modelowania zdefiniujemy błąd względny jako

$$ rel = \frac{(y - pred)}{y} $$

czyli błąd wyrażony względem prawdziwej wartości wynikowej. Ogólny błąd względny modelu będziemy mierzyć za pomocą pierwiastka średniokwadratowego błędu względnego:

$$ rmse_{rel} = \sqrt(\overline{rel^2}) $$

gdzie \(\overline{rel^2}\) to średnia z \(rel^2\).

Przykładowy (zabawkowy) zbiór danych fdata został już wczytany. Zawiera następujące kolumny:

  • y: prawdziwa wartość wyjściowa, którą model ma przewidywać; wyobraź sobie, że to kwota, jaką klient wyda podczas wizyty w twoim sklepie.
  • pred: przewidywania modelu dla wartości y.
  • label: zmienna kategoryczna – określa, czy wartość y pochodzi z populacji dokonującej zakupów small (małych) czy large (dużych).

Chcesz wiedzieć, który model radzi sobie „lepiej": ten przewidujący zakupy small czy large.

To ćwiczenie jest częścią kursu

Nadzorowane uczenie maszynowe w R: regresja

Zobacz kurs

Instrukcje do ćwiczenia

  • Uzupełnij luki, aby zbadać dane. Zwróć uwagę, że duże zakupy są zazwyczaj około 100 razy większe niż małe.
  • Uzupełnij luki, aby utworzyć kolumny błędów:
    • Zdefiniuj resztę jako y - pred.
    • Zdefiniuj błąd względny jako residual / y.
  • Uzupełnij luki, aby obliczyć i porównać RMSE oraz względne RMSE.
    • Jak wyglądają błędy bezwzględne? A błędy względne?
  • Przeanalizuj wykres przewidywań w zestawieniu z wartościami rzeczywistymi.
    • Który model radzi sobie Twoim zdaniem „lepiej"?

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# fdata is available
summary(fdata)

# Examine the data: generate the summaries for the groups large and small:
fdata %>% 
    group_by(label) %>%     # group by small/large purchases
    summarize(min  = ___,   # min of y
              mean = ___,   # mean of y
              max  = ___)   # max of y

# Fill in the blanks to add error columns
fdata2 <- fdata %>% 
         group_by(label) %>%       # group by label
           mutate(residual = ___,  # Residual
                  relerr   = ___)  # Relative error

# Compare the rmse and rmse.rel of the large and small groups:
fdata2 %>% 
  group_by(label) %>% 
  summarize(rmse     = ___,   # RMSE
            rmse.rel = ___)   # Root mean squared relative error
            
# Plot the predictions for both groups of purchases
ggplot(fdata2, aes(x = pred, y = y, color = label)) + 
  geom_point() + 
  geom_abline() + 
  facet_wrap(~ label, ncol = 1, scales = "free") + 
  ggtitle("Outcome vs prediction")
Edytuj i uruchom kod