Error relativo
En este ejercicio, vas a comparar el error relativo con el error absoluto. A efectos de modelado, definiremos el error relativo como
$$ rel = \frac{(y - pred)}{y} $$
es decir, el error es relativo al valor real. Medirás el error relativo global de un modelo usando la raíz del error cuadrático medio relativo:
$$ rmse_{rel} = \sqrt(\overline{rel^2}) $$
donde \(\overline{rel^2}\) es la media de \(rel^2\).
El conjunto de datos de ejemplo (toy) fdata ya está cargado. Incluye las columnas:
y: el valor real que un modelo debe predecir; imagina que es el dinero que gastará un cliente en una visita a tu tienda.pred: las predicciones de un modelo que predicey.label: categórica: indica siyproviene de una población que hace comprassmallolarge.
Quieres saber qué modelo lo hace “mejor”: el que predice las compras small o el que predice las large.
Este ejercicio forma parte del curso
Aprendizaje supervisado en R: Regresión
Instrucciones del ejercicio
- Rellena los huecos para explorar los datos. Fíjate en que las compras grandes suelen ser unas 100 veces mayores que las pequeñas.
- Rellena los huecos para crear las columnas de error:
- Define el residuo como
y - pred. - Define el error relativo como
residual / y.
- Define el residuo como
- Rellena los huecos para calcular y comparar el RMSE y el RMSE relativo.
- ¿Cómo se comparan los errores absolutos? ¿Y los relativos?
- Examina el gráfico de predicciones frente al resultado.
- En tu opinión, ¿qué modelo lo hace “mejor”?
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
# 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")