Transformace odezvy před modelováním

Supervised Learning in R: Regression

Nina Zumel and John Mount

Win-Vector, LLC

Logaritmická transformace peněžních dat

  • Peněžní hodnoty: lognormální rozdělení
  • Dlouhý ocas, široký dynamický rozsah (60–700 tis.)
Supervised Learning in R: Regression

Lognormální rozdělení

  • průměr > medián (cca 50 tis. vs 39 tis.)
  • Predikce průměru bude nadhodnocovat typické hodnoty
Supervised Learning in R: Regression

Zpět k normálnímu rozdělení

Pro normální rozdělení:

  • průměr = medián (zde: 4,53 vs 4,59)
  • rozumnější dynamický rozsah (1,8 – 5,8)
Supervised Learning in R: Regression

Postup

  1. Zlogaritmujte výsledek a natrénujte model
     model <- lm(log(y) ~ x, data = train)
    
Supervised Learning in R: Regression

Postup

  1. Zlogaritmujte výsledek a natrénujte model
     model <- lm(log(y) ~ x, data = train)
    
  2. Vytvořte predikce v logaritmickém prostoru
     logpred <- predict(model, data = test)
    
Supervised Learning in R: Regression

Postup

  1. Zlogaritmujte výsledek a natrénujte model
     model <- lm(log(y) ~ x, data = train)
    
  2. Vytvořte predikce v logaritmickém prostoru
     logpred <- predict(model, data = test)
    
  3. Transformujte predikce zpět do prostoru výsledků
     pred <- exp(logpred)
    
Supervised Learning in R: Regression

Predikce logaritmicky transformovaných výsledků: multiplikativní chyba

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

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

  • Multiplikativní chyba: $pred/y$
  • Relativní chyba: $(pred - y)/y = \frac{pred}{y} - 1$

Snížení multiplikativní chyby snižuje i relativní chybu.

Supervised Learning in R: Regression

Střední kvadratická relativní chyba (RMS)

RMS-relativní chyba = $\sqrt{ \overline{ (\frac{pred-y}{y})^2 }}$

  • Predikce log-výsledku snižuje RMS-relativní chybu
  • Model však bude mít často větší RMSE
Supervised Learning in R: Regression

Příklad: Přímý model příjmu

modIncome <- lm(Income ~ AFQT + Educ, data = train)
  • AFQT: Výsledek testu způsobilosti 25 let před průzkumem
  • Educ: Roky vzdělání do doby průzkumu
  • Income: Příjem v době průzkumu
Supervised Learning in R: Regression

Výkon modelu

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-relativní chyba
36 819,39 3,295189
Supervised Learning in R: Regression

Model log(Income)

modLogIncome <- lm(log(Income) ~ AFQT + Educ, data = train)
Supervised Learning in R: Regression

Výkon modelu

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-relativní chyba
38 906,61 2,276865
Supervised Learning in R: Regression

Porovnání chyb

Model log(Income): menší RMS-relativní chyba, větší RMSE

Model RMSE RMS-relativní chyba
Na Income 36 819,39 3,295189
Na log(Income) 38 906,61 2,276865
Supervised Learning in R: Regression

Pojďme procvičovat!

Supervised Learning in R: Regression

Preparing Video For Download...