เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การแปลงอินพุต: รูปแบบ "hockey stick"

ในแบบฝึกหัดนี้ เราจะสร้างโมเดลเพื่อพยากรณ์ราคาบ้านจากขนาดพื้นที่ของบ้าน ชุดข้อมูล houseprice ที่โหลดไว้ให้แล้วมีคอลัมน์ดังนี้:

  • price: ราคาบ้านในหน่วย $1,000
  • size: พื้นที่ผิว

จากกราฟกระจายของข้อมูล จะเห็นว่าความสัมพันธ์ค่อนข้างไม่เป็นเส้นตรง มีลักษณะคล้าย "hockey stick" คือราคาค่อนข้างคงที่สำหรับบ้านขนาดเล็ก แต่จะพุ่งขึ้นสูงเมื่อบ้านมีขนาดใหญ่ขึ้น ฟังก์ชันกำลังสองและกำลังสามมักเป็นรูปแบบที่เหมาะสมในการอธิบายความสัมพันธ์แบบ hockey stick โปรดทราบว่าอาจไม่มีเหตุผลเชิงกายภาพที่ price สัมพันธ์กับกำลังสองของ size แต่ฟังก์ชันกำลังสองเป็นเพียงการประมาณค่าความสัมพันธ์ที่สังเกตได้ในรูปแบบสูตรปิด

scatterplot

จะฝึกโมเดลเพื่อพยากรณ์ราคาในฐานะฟังก์ชันของขนาดยกกำลังสอง แล้วดูว่าโมเดลพอดีกับข้อมูลชุดฝึกได้ดีเพียงใด

เนื่องจาก ^ เป็นสัญลักษณ์ที่ใช้แสดง interaction ด้วย ให้ใช้ฟังก์ชัน I() (docs) เพื่อให้นิพจน์ x^2 ถูกตีความ "ตามตัว" นั่นคือเป็นกำลังสองของ x ไม่ใช่ interaction ของ x กับตัวเอง

exampleFormula = y ~ I(x^2)

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Supervised Learning ใน R: การถดถอย

ดูคอร์ส

คำแนะนำการฝึกหัด

  • เขียนสูตร fmla_sqr เพื่อแสดงความสัมพันธ์ระหว่าง price และ size ยกกำลังสอง จากนั้นพิมพ์ผลออกมา
  • ฝึกโมเดล model_sqr บนข้อมูลโดยใช้ fmla_sqr
  • เพื่อเปรียบเทียบ ให้ฝึกโมเดลเชิงเส้น model_lin บนข้อมูลโดยใช้สูตร price ~ size
  • เติมช่องว่างเพื่อ
    • สร้างการพยากรณ์จากข้อมูลชุดฝึกด้วยโมเดลทั้งสอง
    • รวมผลการพยากรณ์ให้อยู่ในคอลัมน์เดียวชื่อ pred โดยใช้ pivot_longer()
    • เปรียบเทียบการพยากรณ์ของโมเดลทั้งสองกับข้อมูลจริงในรูปแบบกราฟ โมเดลใดให้ผลที่ดีกว่ากัน?

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# houseprice is available
summary(houseprice)

# Create the formula for price as a function of squared size
(fmla_sqr <- ___)

# Fit a model of price as a function of squared size (use fmla_sqr)
model_sqr <- ___

# Fit a model of price as a linear function of size
model_lin <- ___

# Make predictions and compare
houseprice %>% 
    mutate(pred_lin = ___(___),       # predictions from linear model
           pred_sqr = ___(___)) %>%   # predictions from quadratic model
    pivot_longer(cols = c('pred_lin', 'pred_sqr'), names_to = 'modeltype', values_to = 'pred') %>% # pivot the predictions
    ggplot(aes(x = size)) + 
       geom_point(aes(y = ___)) +                   # actual prices
       geom_line(aes(y = ___, color = modeltype)) + # the predictions
       scale_color_brewer(palette = "Dark2")
แก้ไขและรันโค้ด