Transformera responsvariabeln före modellering

Övervakad inlärning i R: Regression

Nina Zumel and John Mount

Win-Vector, LLC

Logaritmtransformationen för monetära data

  • Monetära värden: lognormalfördelade
  • Lång svans, brett dynamikområde (60–700K)
Övervakad inlärning i R: Regression

Lognormalfördelningar

  • medelvärde > median (~ 50K mot 39K)
  • Att prediktera medelvärdet överpredikterar typiska värden
Övervakad inlärning i R: Regression

Tillbaka till normalfördelningen

För en normalfördelning:

  • medelvärde = median (här: 4,53 mot 4,59)
  • rimligare dynamikområde (1,8 – 5,8)
Övervakad inlärning i R: Regression

Tillvägagångssättet

  1. Logaritmera utfallet och anpassa en modell
     model <- lm(log(y) ~ x, data = train)
    
Övervakad inlärning i R: Regression

Tillvägagångssättet

  1. Logaritmera utfallet och anpassa en modell
     model <- lm(log(y) ~ x, data = train)
    
  2. Gör prediktionerna i logaritmskalan
     logpred <- predict(model, data = test)
    
Övervakad inlärning i R: Regression

Tillvägagångssättet

  1. Logaritmera utfallet och anpassa en modell
     model <- lm(log(y) ~ x, data = train)
    
  2. Gör prediktionerna i logaritmskalan
     logpred <- predict(model, data = test)
    
  3. Transformera prediktionerna tillbaka till utfallsskalan
     pred <- exp(logpred)
    
Övervakad inlärning i R: Regression

Prediktion av logaritmtransformerade utfall: multiplikativt fel

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

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

  • Multiplikativt fel: $pred/y$
  • Relativt fel: $(pred - y)/y = \frac{pred}{y} - 1$

Att minska det multiplikativa felet minskar även det relativa felet.

Övervakad inlärning i R: Regression

Rotmedelkvadrat för relativt fel

RMS-relativt fel = $\sqrt{ \overline{ (\frac{pred-y}{y})^2 }}$

  • Prediktion av logaritmerat utfall minskar RMS-relativt fel
  • Men modellen får ofta ett större RMSE
Övervakad inlärning i R: Regression

Exempel: modellera inkomst direkt

modIncome <- lm(Income ~ AFQT + Educ, data = train)
  • AFQT: Resultat på kompetenstest 25 år före undersökningen
  • Educ: Antal utbildningsår fram till undersökningstillfället
  • Income: Inkomst vid undersökningstillfället
Övervakad inlärning i R: Regression

Modellens prestanda

test %>% 
+     mutate(pred = predict(modIncome, newdata = test),
+            err = pred - Income) %>%
+     summarize(rmse = sqrt(mean(err^2)),
+               rms.relerr = sqrt(mean((err/Income)^2))) 
RMSE RMS-relativt fel
36 819,39 3,295189
Övervakad inlärning i R: Regression

Modellera log(Income)

modLogIncome <- lm(log(Income) ~ AFQT + Educ, data = train)
Övervakad inlärning i R: Regression

Modellens prestanda

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 RMS-relativt fel
38 906,61 2,276865
Övervakad inlärning i R: Regression

Jämför felen

log(Income)-modellen: mindre RMS-relativt fel, större RMSE

Modell RMSE RMS-relativt fel
Income 36 819,39 3,295189
log(Income) 38 906,61 2,276865
Övervakad inlärning i R: Regression

Nu kör vi en övning!

Övervakad inlärning i R: Regression

Preparing Video For Download...