比較 RMSE 與均方根相對誤差
在這個練習中,你將示範:在建模前先對金額型的輸出做對數轉換,能改善平均相對誤差(但會增大 RMSE),相較於直接對金額輸出建模。你會把前一題得到的 model.log 與一個直接擬合收入的模型(model.abs)做比較。
income_train 和 income_test 資料集已預先載入,你的模型 model.log 也已就緒。
另提供:
model.abs:使用下列公式,直接用輸入來擬合收入的模型:Income2005 ~ Arith + Word + Parag + Math + AFQT
本練習屬於課程
R 中的監督式學習:回歸
練習說明
- 填入空格,將兩個模型的預測加入
income_test。- 別忘了對
model.log的預測先取指數,才能還原對數轉換!
- 別忘了對
- 填入空格,使用
pivot_longer()重塑預測欄位,並計算殘差與相對誤差。 - 填入空格,計算預測的 RMSE 與相對 RMSE。
- 哪個模型的絕對誤差較大?哪個模型的相對誤差較大?
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# fmla.abs is available
fmla.abs
# model.abs is available
summary(model.abs)
# Add predictions to the test set
income_test <- income_test %>%
mutate(pred.absmodel = ___(___, income_test), # predictions from model.abs
pred.logmodel = ___(___(___, income_test))) # predictions from model.log
# pivot_longer the predictions and calculate residuals and relative error
income_long <- income_test %>%
pivot_longer(names_to = 'modeltype', values_to = 'pred', cols=c('pred.absmodel', 'pred.logmodel')) %>%
mutate(residual = ___, # residuals
relerr = ___) # relative error
# Calculate RMSE and relative RMSE and compare
income_long %>%
group_by(modeltype) %>% # group by modeltype
summarize(rmse = ___, # RMSE
rmse.rel = ___) # Root mean squared relative error