Transformar la variable respuesta antes de modelar

Aprendizaje supervisado en R: Regresión

Nina Zumel and John Mount

Win-Vector, LLC

La transformación log para datos monetarios

  • Valores monetarios: distribución lognormal
  • Cola larga, rango dinámico amplio (60-700K)
Aprendizaje supervisado en R: Regresión

Distribuciones lognormales

  • media > mediana (~ 50K vs 39K)
  • Predecir la media sobreestimará los valores típicos
Aprendizaje supervisado en R: Regresión

De vuelta a la distribución normal

Para una distribución normal:

  • media = mediana (aquí: 4.53 vs 4.59)
  • rango dinámico más razonable (1.8 - 5.8)
Aprendizaje supervisado en R: Regresión

El procedimiento

  1. Aplica log a la respuesta y ajusta un modelo
     model <- lm(log(y) ~ x, data = train)
    
Aprendizaje supervisado en R: Regresión

El procedimiento

  1. Aplica log a la respuesta y ajusta un modelo
     model <- lm(log(y) ~ x, data = train)
    
  2. Genera las predicciones en el espacio log
     logpred <- predict(model, data = test)
    
Aprendizaje supervisado en R: Regresión

El procedimiento

  1. Aplica log a la respuesta y ajusta un modelo
     model <- lm(log(y) ~ x, data = train)
    
  2. Genera las predicciones en el espacio log
     logpred <- predict(model, data = test)
    
  3. Transforma las predicciones al espacio de la respuesta
     pred <- exp(logpred)
    
Aprendizaje supervisado en R: Regresión

Predecir respuestas log-transformadas: error multiplicativo

$log(a) + log(b) = log(ab)$

$log(a) - log(b) = log(a/b)$

  • Error multiplicativo: $pred/y$
  • Error relativo: $(pred - y)/y = \frac{pred}{y} - 1$

Reducir el error multiplicativo reduce el error relativo.

Aprendizaje supervisado en R: Regresión

Raíz del error cuadrático medio relativo

Error cuadrático medio relativo (RMS) = $\sqrt{ \overline{ (\frac{pred-y}{y})^2 }}$

  • Predecir la respuesta en log reduce el RMS del error relativo
  • Pero el modelo a menudo tendrá un RMSE mayor
Aprendizaje supervisado en R: Regresión

Ejemplo: modelar ingresos directamente

modIncome <- lm(Income ~ AFQT + Educ, data = train)
  • AFQT: puntuación en una prueba de aptitud 25 años antes de la encuesta
  • Educ: años de educación hasta el momento de la encuesta
  • Income: ingresos en el momento de la encuesta
Aprendizaje supervisado en R: Regresión

Rendimiento del modelo

test %>% 
+     mutate(pred = predict(modIncome, newdata = test),
+            err = pred - Income) %>%
+     summarize(rmse = sqrt(mean(err^2)),
+               rms.relerr = sqrt(mean((err/Income)^2))) 
RMSE Error relativo RMS
36,819.39 3.295189
Aprendizaje supervisado en R: Regresión

Modelar log(Income)

modLogIncome <- lm(log(Income) ~ AFQT + Educ, data = train)
Aprendizaje supervisado en R: Regresión

Rendimiento del modelo

test %>% 
+     mutate(predlog = predict(modLogIncome, newdata = test), 
+            pred = exp(predlog), 
+            err = pred - Income) %>%
+     summarize(rmse = sqrt(mean(err^2)),
+               rms.relerr = sqrt(mean((err/Income)^2)))
RMSE Error relativo RMS
38,906.61 2.276865
Aprendizaje supervisado en R: Regresión

Comparar errores

Modelo log(Income): menor error relativo RMS, mayor RMSE

Modelo RMSE Error relativo RMS
Sobre Income 36,819.39 3.295189
Sobre log(Income) 38,906.61 2.276865
Aprendizaje supervisado en R: Regresión

¡Vamos a practicar!

Aprendizaje supervisado en R: Regresión

Preparing Video For Download...