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ściy.label: zmienna kategoryczna – określa, czy wartośćypochodzi z populacji dokonującej zakupówsmall(małych) czylarge(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
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.
- Zdefiniuj resztę jako
- 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")