Transformacja zmiennej odpowiedzi przed modelowaniem

Nadzorowane uczenie maszynowe w R: regresja

Nina Zumel and John Mount

Win-Vector, LLC

Transformacja logarytmiczna dla danych finansowych

  • Wartości pieniężne: rozkład lognormalny
  • Długi ogon, szeroki zakres dynamiczny (60–700 tys.)
Nadzorowane uczenie maszynowe w R: regresja

Rozkłady lognormalne

  • średnia > mediana (ok. 50 tys. vs 39 tys.)
  • Przewidywanie średniej zawyża typowe wartości
Nadzorowane uczenie maszynowe w R: regresja

Powrót do rozkładu normalnego

Dla rozkładu normalnego:

  • średnia = mediana (tu: 4,53 vs 4,59)
  • rozsądniejszy zakres dynamiczny (1,8–5,8)
Nadzorowane uczenie maszynowe w R: regresja

Procedura

  1. Zlogarytmuj wynik i dopasuj model
     model <- lm(log(y) ~ x, data = train)
    
Nadzorowane uczenie maszynowe w R: regresja

Procedura

  1. Zlogarytmuj wynik i dopasuj model
     model <- lm(log(y) ~ x, data = train)
    
  2. Wyznacz predykcje w przestrzeni logarytmicznej
     logpred <- predict(model, data = test)
    
Nadzorowane uczenie maszynowe w R: regresja

Procedura

  1. Zlogarytmuj wynik i dopasuj model
     model <- lm(log(y) ~ x, data = train)
    
  2. Wyznacz predykcje w przestrzeni logarytmicznej
     logpred <- predict(model, data = test)
    
  3. Przekształć predykcje do przestrzeni wynikowej
     pred <- exp(logpred)
    
Nadzorowane uczenie maszynowe w R: regresja

Predykcja logarytmowanych wyników: błąd multiplikatywny

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

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

  • Błąd multiplikatywny: $pred/y$
  • Błąd względny: $(pred - y)/y = \frac{pred}{y} - 1$

Zmniejszenie błędu multiplikatywnego zmniejsza błąd względny.

Nadzorowane uczenie maszynowe w R: regresja

Pierwiastek średniego kwadratu błędu względnego

Pierwiastek średniego kwadratu błędu względnego = $\sqrt{ \overline{ (\frac{pred-y}{y})^2 }}$

  • Modelowanie log-wyników redukuje ten błąd
  • Jednak model często ma większy RMSE
Nadzorowane uczenie maszynowe w R: regresja

Przykład: bezpośrednie modelowanie dochodu

modIncome <- lm(Income ~ AFQT + Educ, data = train)
  • AFQT: Wynik testu sprawności 25 lat przed badaniem
  • Educ: Lata edukacji do momentu badania
  • Income: Dochód w momencie badania
Nadzorowane uczenie maszynowe w R: regresja

Wydajność 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 Pierwiastek średniego kwadratu błędu względnego
36 819,39 3,295189
Nadzorowane uczenie maszynowe w R: regresja

Modelowanie `log(Income)`

modLogIncome <- lm(log(Income) ~ AFQT + Educ, data = train)
Nadzorowane uczenie maszynowe w R: regresja

Wydajność 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 Pierwiastek średniego kwadratu błędu względnego
38 906,61 2,276865
Nadzorowane uczenie maszynowe w R: regresja

Porównanie błędów

Model log(Income): mniejszy błąd względny RMS, większy RMSE

Model RMSE Pierwiastek średniego kwadratu błędu względnego
Na Income 36 819,39 3,295189
Na log(Income) 38 906,61 2,276865
Nadzorowane uczenie maszynowe w R: regresja

Czas na ćwiczenia!

Nadzorowane uczenie maszynowe w R: regresja

Preparing Video For Download...