Sai số tương đối
Trong bài tập này, bạn sẽ so sánh sai số tương đối với sai số tuyệt đối. Cho mục đích mô hình hóa, ta định nghĩa sai số tương đối là
$$ rel = \frac{(y - pred)}{y} $$
nghĩa là sai số được đo tương đối so với giá trị thực. Bạn sẽ đo lường sai số tương đối tổng thể của một mô hình bằng chỉ số sai số tương đối bình phương trung bình căn bậc hai:
$$ rmse_{rel} = \sqrt(\overline{rel^2}) $$
với \(\overline{rel^2}\) là trung bình của \(rel^2\).
Bộ dữ liệu ví dụ (đồ chơi) fdata đã được nạp sẵn. Nó gồm các cột:
y: đầu ra thực mà một số mô hình cần dự đoán; hãy hình dung đó là số tiền một khách hàng sẽ chi tiêu trong một lần ghé cửa hàng của bạn.pred: các dự đoán của một mô hình dự đoány.label: dạng phân loại: cho biếtyđến từ nhóm có mức chi tiêusmallhaylarge.
Bạn muốn biết mô hình nào làm "tốt" hơn: mô hình dự đoán các khoản mua small, hay mô hình dự đoán các khoản mua large.
Bài tập này là một phần của khóa học
Học có giám sát với R: Hồi quy
Hướng dẫn bài tập
- Điền vào chỗ trống để khám phá dữ liệu. Lưu ý rằng các khoản mua lớn thường lớn hơn khoảng 100 lần so với các khoản mua nhỏ.
- Điền vào chỗ trống để tạo các cột sai số:
- Định nghĩa phần dư là
y - pred. - Định nghĩa sai số tương đối là
residual / y.
- Định nghĩa phần dư là
- Điền vào chỗ trống để tính và so sánh RMSE và RMSE tương đối.
- Các sai số tuyệt đối so sánh ra sao? Còn các sai số tương đối thì thế nào?
- Xem đồ thị dự đoán so với giá trị thực.
- Theo bạn, mô hình nào làm "tốt" hơn?
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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")