Transformando a variável resposta antes de modelar

Aprendizado Supervisionado em R: Regressão

Nina Zumel and John Mount

Win-Vector, LLC

A transformação log para dados monetários

  • Valores monetários: distribuição lognormal
  • Cauda longa, grande faixa dinâmica (60-700K)
Aprendizado Supervisionado em R: Regressão

Distribuições lognormais

  • média > mediana (~ 50K vs 39K)
  • Prever a média superestima valores típicos
Aprendizado Supervisionado em R: Regressão

De volta à distribuição Normal

Para uma distribuição Normal:

  • média = mediana (aqui: 4,53 vs 4,59)
  • faixa dinâmica mais razoável (1,8 - 5,8)
Aprendizado Supervisionado em R: Regressão

O procedimento

  1. Aplique log na resposta e ajuste um modelo
     model <- lm(log(y) ~ x, data = train)
    
Aprendizado Supervisionado em R: Regressão

O procedimento

  1. Aplique log na resposta e ajuste um modelo
     model <- lm(log(y) ~ x, data = train)
    
  2. Faça previsões no espaço log
     logpred <- predict(model, data = test)
    
Aprendizado Supervisionado em R: Regressão

O procedimento

  1. Aplique log na resposta e ajuste um modelo
     model <- lm(log(y) ~ x, data = train)
    
  2. Faça previsões no espaço log
     logpred <- predict(model, data = test)
    
  3. Transforme as previsões de volta ao espaço da resposta
     pred <- exp(logpred)
    
Aprendizado Supervisionado em R: Regressão

Prevendo respostas com log: erro multiplicativo

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

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

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

Reduzir o erro multiplicativo reduz o erro relativo.

Aprendizado Supervisionado em R: Regressão

Raiz do erro quadrático médio relativo

Erro quadrático médio relativo (RMS) = $\sqrt{ \overline{ (\frac{pred-y}{y})^2 }}$

  • Prever o log da resposta reduz o RMS relativo
  • Mas o modelo costuma ter RMSE maior
Aprendizado Supervisionado em R: Regressão

Exemplo: modelar a renda diretamente

modIncome <- lm(Income ~ AFQT + Educ, data = train)
  • AFQT: Pontuação em teste de proficiência 25 anos antes da pesquisa
  • Educ: Anos de estudo até a data da pesquisa
  • Income: Renda na data da pesquisa
Aprendizado Supervisionado em R: Regressão

Desempenho do 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 erro relativo RMS
36.819,39 3.295189
Aprendizado Supervisionado em R: Regressão

Modelar log(Income)

modLogIncome <- lm(log(Income) ~ AFQT + Educ, data = train)
Aprendizado Supervisionado em R: Regressão

Desempenho do 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 erro relativo RMS
38.906,61 2.276865
Aprendizado Supervisionado em R: Regressão

Comparar erros

Modelo log(Income): erro relativo RMS menor, RMSE maior

Modelo RMSE erro relativo RMS
Em Income 36.819,39 3.295189
Em log(Income) 38.906,61 2.276865
Aprendizado Supervisionado em R: Regressão

Vamos praticar!

Aprendizado Supervisionado em R: Regressão

Preparing Video For Download...