Errore relativo
In questo esercizio confronterai l'errore relativo con l'errore assoluto. Ai fini del modeling, definiamo l'errore relativo come
$$ rel = \frac{(y - pred)}{y} $$
cioè l'errore è relativo al valore reale. Misurerai l'errore relativo complessivo di un modello usando la root mean squared relative error:
$$ rmse_{rel} = \sqrt(\overline{rel^2}) $$
dove \(\overline{rel^2}\) è la media di \(rel^2\).
Il dataset di esempio (toy) fdata è già caricato. Include le colonne:
y: l'output reale da predire con un modello; immagina sia l'importo di denaro che un cliente spenderà durante una visita al tuo negozio.pred: le previsioni di un modello che predicey.label: categorica: indica seyproviene da una popolazione che effettua acquistismallolarge.
Vuoi capire quale modello fa "meglio": quello che predice gli acquisti small o quello che predice quelli large.
Questo esercizio fa parte del corso
Supervised Learning in R: Regression
Istruzioni dell'esercizio
- Compila gli spazi vuoti per esaminare i dati. Nota che gli acquisti grandi tendono a essere circa 100 volte più grandi di quelli piccoli.
- Compila gli spazi vuoti per creare le colonne di errore:
- Definisci il residuo come
y - pred. - Definisci l'errore relativo come
residual / y.
- Definisci il residuo come
- Compila gli spazi vuoti per calcolare e confrontare RMSE e RMSE relativa.
- Come si confrontano gli errori assoluti? E quelli relativi?
- Esamina il grafico delle previsioni rispetto all'outcome.
- Secondo te, quale modello fa "meglio"?
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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")