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

Relative error

ในแบบฝึกหัดนี้ เราจะเปรียบเทียบ relative error กับ absolute error โดยนิยาม relative error ไว้ดังนี้

$$ rel = \frac{(y - pred)}{y} $$

กล่าวคือ ค่า error จะถูกวัดเทียบกับค่าผลลัพธ์จริง และวัด relative error โดยรวมของโมเดลด้วย root mean squared relative error:

$$ rmse_{rel} = \sqrt(\overline{rel^2}) $$

โดยที่ \(\overline{rel^2}\) คือค่าเฉลี่ยของ \(rel^2\)

ชุดข้อมูลตัวอย่าง fdata ถูกโหลดไว้ให้แล้ว ประกอบด้วยคอลัมน์ต่อไปนี้:

  • y: ค่าผลลัพธ์จริงที่โมเดลต้องทำนาย สมมติว่าเป็นยอดเงินที่ลูกค้าแต่ละคนจะใช้จ่ายต่อการเข้าร้านหนึ่งครั้ง
  • pred: ค่าที่โมเดลทำนายสำหรับ y
  • label: ตัวแปรประเภท categorical ระบุว่า y มาจากกลุ่มที่ซื้อสินค้าในปริมาณ small (น้อย) หรือ large (มาก)

เป้าหมายคือการหาว่าโมเดลใด "ทำได้ดีกว่า" ระหว่างโมเดลที่ทำนายการซื้อแบบ small กับแบบ large

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

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

ดูคอร์ส

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

  • เติมช่องว่างเพื่อตรวจสอบข้อมูล สังเกตว่า large purchases มีมูลค่าสูงกว่า small purchases ประมาณ 100 เท่า
  • เติมช่องว่างเพื่อสร้างคอลัมน์ error:
    • กำหนด residual เป็น y - pred
    • กำหนด relative error เป็น residual / y
  • เติมช่องว่างเพื่อคำนวณและเปรียบเทียบ RMSE กับ relative RMSE
    • absolute error และ relative error ของทั้งสองโมเดลต่างกันอย่างไร?
  • ตรวจสอบกราฟที่แสดงค่าที่ทำนายเทียบกับค่าจริง
    • คิดว่าโมเดลใด "ทำได้ดีกว่า"?

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

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

# fdata is available
summary(fdata)

# Examine the data: generate the summaries for the groups large and small:
fdata %>% 
    group_by(label) %>%     # group by small/large purchases
    summarize(min  = ___,   # min of y
              mean = ___,   # mean of y
              max  = ___)   # max of y

# Fill in the blanks to add error columns
fdata2 <- fdata %>% 
         group_by(label) %>%       # group by label
           mutate(residual = ___,  # Residual
                  relerr   = ___)  # Relative error

# Compare the rmse and rmse.rel of the large and small groups:
fdata2 %>% 
  group_by(label) %>% 
  summarize(rmse     = ___,   # RMSE
            rmse.rel = ___)   # Root mean squared relative error
            
# Plot the predictions for both groups of purchases
ggplot(fdata2, aes(x = pred, y = y, color = label)) + 
  geom_point() + 
  geom_abline() + 
  facet_wrap(~ label, ncol = 1, scales = "free") + 
  ggtitle("Outcome vs prediction")
แก้ไขและรันโค้ด