R로 하는 Supervised Learning: 회귀
Nina Zumel and John Mount
Win-Vector, LLC



정규 분포에서:
model <- lm(log(y) ~ x, data = train)
model <- lm(log(y) ~ x, data = train)
logpred <- predict(model, data = test)
model <- lm(log(y) ~ x, data = train)
logpred <- predict(model, data = test)
pred <- exp(logpred)
$log(a) + log(b) = log(ab)$
$log(a) - log(b) = log(a/b)$
곱셈 오차를 줄이면 상대 오차도 감소합니다.
RMS 상대 오차 = $\sqrt{ \overline{ (\frac{pred-y}{y})^2 }}$
modIncome <- lm(Income ~ AFQT + Educ, data = train)
AFQT: 설문 25년 전 시행된 능력 시험 점수Educ: 설문 시점까지의 교육 연수Income: 설문 시점의 소득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 상대 오차 |
|---|---|
| 36,819.39 | 3.295189 |
modLogIncome <- lm(log(Income) ~ AFQT + Educ, data = train)
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 상대 오차 |
|---|---|
| 38,906.61 | 2.276865 |
log(Income) 모델: RMS 상대 오차 작음, RMSE 큼
| 모델 | RMSE | RMS 상대 오차 |
|---|---|---|
Income |
36,819.39 | 3.295189 |
log(Income) |
38,906.61 | 2.276865 |
R로 하는 Supervised Learning: 회귀