IniziaInizia gratis

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 predice y.
  • label: categorica: indica se y proviene da una popolazione che effettua acquisti small o large.

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

Visualizza il corso

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.
  • 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")
Modifica ed esegui il codice