Перетворення цільової змінної перед моделюванням

Кероване навчання в R: регресія

Nina Zumel and John Mount

Win-Vector, LLC

Логперетворення для грошових даних

  • Грошові значення: логнормальний розподіл
  • Довгий хвіст, широкий діапазон (60–700K)
Кероване навчання в R: регресія

Логнормальні розподіли

  • середнє > медіани (~ 50K проти 39K)
  • Прогноз за середнім завищує типові значення
Кероване навчання в R: регресія

Повернення до нормального розподілу

Для нормального розподілу:

  • середнє = медіані (тут: 4,53 проти 4,59)
  • розумніший діапазон (1,8–5,8)
Кероване навчання в R: регресія

Процедура

  1. Прологарифмуйте ціль і навчіть модель
     model <- lm(log(y) ~ x, data = train)
    
Кероване навчання в R: регресія

Процедура

  1. Прологарифмуйте ціль і навчіть модель
     model <- lm(log(y) ~ x, data = train)
    
  2. Зробіть прогнози в лог-просторі
     logpred <- predict(model, data = test)
    
Кероване навчання в R: регресія

Процедура

  1. Прологарифмуйте ціль і навчіть модель
     model <- lm(log(y) ~ x, data = train)
    
  2. Зробіть прогнози в лог-просторі
     logpred <- predict(model, data = test)
    
  3. Перетворіть прогнози назад у вихідний простір
     pred <- exp(logpred)
    
Кероване навчання в R: регресія

Прогноз логперетвореної цілі: мультиплікативна помилка

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

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

  • Мультиплікативна помилка: $pred/y$
  • Відносна помилка: $(pred - y)/y = \frac{pred}{y} - 1$

Зменшення мультиплікативної помилки зменшує відносну помилку.

Кероване навчання в R: регресія

Корінь середньоквадратичної відносної помилки

СКВ-відносна помилка = $\sqrt{ \overline{ (\frac{pred-y}{y})^2 }}$

  • Прогноз лог-цілі зменшує СКВ-відносну помилку
  • Але RMSE моделі часто більший
Кероване навчання в R: регресія

Приклад: моделюємо дохід напряму

modIncome <- lm(Income ~ AFQT + Educ, data = train)
  • AFQT: бал за тестом на профпридатність за 25 років до опитування
  • Educ: роки освіти на момент опитування
  • Income: дохід на момент опитування
Кероване навчання в R: регресія

Якість моделі

test %>% 
+     mutate(pred = predict(modIncome, newdata = test),
+            err = pred - Income) %>%
+     summarize(rmse = sqrt(mean(err^2)),
+               rms.relerr = sqrt(mean((err/Income)^2))) 
RMSE СКВ-відносна помилка
36,819.39 3.295189
Кероване навчання в R: регресія

Модель log(Income)

modLogIncome <- lm(log(Income) ~ AFQT + Educ, data = train)
Кероване навчання в R: регресія

Якість моделі

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 СКВ-відносна помилка
38,906.61 2.276865
Кероване навчання в R: регресія

Порівняння помилок

Модель log(Income): менша СКВ-відносна помилка, більший RMSE

Модель RMSE СКВ-відносна помилка
На Income 36,819.39 3.295189
На log(Income) 38,906.61 2.276865
Кероване навчання в R: регресія

Давайте потренуємось!

Кероване навчання в R: регресія

Preparing Video For Download...