ประเมินโมเดลด้วยการแบ่งข้อมูล test/train
ตอนนี้จะทดสอบโมเดล mpg_model กับข้อมูล test ที่ชื่อ mpg_test
มีฟังก์ชัน rmse() และ r_squared() เตรียมไว้ให้สำหรับคำนวณ RMSE และ R-squared:
rmse(predcol, ycol)
r_squared(predcol, ycol)
โดยที่:
- predcol: ค่าที่โมเดลทำนาย
- ycol: ค่าผลลัพธ์จริง
นอกจากนี้ยังจะพล็อตกราฟเปรียบเทียบค่าทำนายกับค่าจริงด้วย
โดยทั่วไป ประสิทธิภาพของโมเดลบนข้อมูล training มักดีกว่าบนข้อมูล test (แม้บางครั้งข้อมูล test อาจให้ผลดีเป็นพิเศษ) หากความแตกต่างมีเพียงเล็กน้อยถือว่าปกติ แต่ถ้าผลบนข้อมูล training ดีกว่ามาก แสดงว่ามีปัญหาเกิดขึ้น
ชุดข้อมูล mpg_train และ mpg_test รวมถึงโมเดล mpg_model และฟังก์ชัน rmse() กับ r_squared() ถูกโหลดไว้ให้เรียบร้อยแล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Supervised Learning ใน R: การถดถอย
คำแนะนำการฝึกหัด
- ทำนายประสิทธิภาพการใช้น้ำมันในเมืองจาก
hwyโดยใช้ข้อมูลmpg_trainแล้วกำหนดค่าทำนายไว้ในคอลัมน์pred - ทำนายประสิทธิภาพการใช้น้ำมันในเมืองจาก
hwyโดยใช้ข้อมูลmpg_testแล้วกำหนดค่าทำนายไว้ในคอลัมน์pred - ใช้
rmse()ประเมิน RMSE ของทั้งชุด test และ training แล้วเปรียบเทียบกัน ประสิทธิภาพใกล้เคียงกันหรือไม่? - ทำเช่นเดียวกันกับ
r_squared()ประสิทธิภาพใกล้เคียงกันหรือไม่? - ใช้
ggplot2พล็อตกราฟค่าทำนายเทียบกับctyจากข้อมูลtest
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Examine the objects that have been loaded
ls.str()
# predict cty from hwy for the training set
mpg_train$pred <- ___
# predict cty from hwy for the test set
mpg_test$pred <- ___
# Evaluate the rmse on both training and test data and print them
(rmse_train <- ___)
(rmse_test <- ___)
# Evaluate the r-squared on both training and test data.and print them
(rsq_train <- ___)
(rsq_test <- ___)
# Plot the predictions (on the x-axis) against the outcome (cty) on the test data
ggplot(___, aes(x = ___, y = ___)) +
geom_point() +
geom_abline()