मॉडलिंग से पहले प्रतिक्रिया को ट्रांसफॉर्म करना

R में Supervised Learning: Regression

Nina Zumel and John Mount

Win-Vector, LLC

Monetary Data के लिए Log Transform

  • मौद्रिक मान: लॉगनॉर्मल वितरण
  • लंबी टेल, बड़ा डायनेमिक रेंज (60-700K)
R में Supervised Learning: Regression

Lognormal Distributions

  • mean > median (~ 50K बनाम 39K)
  • mean की भविष्यवाणी करने से सामान्य मान overpredict होंगे
R में Supervised Learning: Regression

वापस Normal वितरण पर

Normal वितरण के लिए:

  • mean = median (यहाँ: 4.53 बनाम 4.59)
  • अधिक उचित डायनेमिक रेंज (1.8 - 5.8)
R में Supervised Learning: Regression

प्रक्रिया

  1. outcome को log करें और मॉडल फिट करें
     model <- lm(log(y) ~ x, data = train)
    
R में Supervised Learning: Regression

प्रक्रिया

  1. outcome को log करें और मॉडल फिट करें
     model <- lm(log(y) ~ x, data = train)
    
  2. भविष्यवाणियाँ log space में करें
     logpred <- predict(model, data = test)
    
R में Supervised Learning: Regression

प्रक्रिया

  1. outcome को log करें और मॉडल फिट करें
     model <- lm(log(y) ~ x, data = train)
    
  2. भविष्यवाणियाँ log space में करें
     logpred <- predict(model, data = test)
    
  3. भविष्यवाणियों को outcome space में ट्रांसफॉर्म करें
     pred <- exp(logpred)
    
R में Supervised Learning: Regression

Log-परिवर्तित Outcomes की भविष्यवाणी: Multiplicative Error

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

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

  • Multiplicative error: $pred/y$
  • Relative error: $(pred - y)/y = \frac{pred}{y} - 1$

Multiplicative error घटाने से relative error घटता है.

R में Supervised Learning: Regression

Root Mean Squared Relative Error

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

  • log-outcome की भविष्यवाणी RMS-relative error घटाती है
  • लेकिन मॉडल का RMSE अक्सर बड़ा होगा
R में Supervised Learning: Regression

उदाहरण: Income को सीधे मॉडल करें

modIncome <- lm(Income ~ AFQT + Educ, data = train)
  • AFQT: सर्वे से 25 साल पहले की प्रोफिशियेंसी टेस्ट स्कोर
  • Educ: सर्वे के समय तक शिक्षा के वर्ष
  • Income: सर्वे के समय की आय
R में Supervised Learning: Regression

मॉडल प्रदर्शन

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-relative error
36,819.39 3.295189
R में Supervised Learning: Regression

Model log(Income)

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

मॉडल प्रदर्शन

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-relative error
38,906.61 2.276865
R में Supervised Learning: Regression

त्रुटियों की तुलना

log(Income) मॉडल: RMS-relative error छोटा, RMSE बड़ा

Model RMSE RMS-relative error
Income पर 36,819.39 3.295189
log(Income) पर 38,906.61 2.276865
R में Supervised Learning: Regression

अभ्यास करते हैं!

R में Supervised Learning: Regression

Preparing Video For Download...