Bài tập: đọc kết quả mô hình
Bạn sẽ học được
- Chẩn đoán một mô hình có vấn đề từ bốn con số.
- Tính precision, recall, F1 và accuracy từ ma trận nhầm lẫn.
- Nhận ra overfitting và rò rỉ dữ liệu.
- Ra quyết định ngưỡng dựa trên chi phí.
- Biết cần đọc lại bài nào sau khi chấm điểm.
Tình huống
Công ty An Bình xây mô hình dự đoán khách huỷ để gửi ưu đãi giữ chân.
Dữ liệu: 5.000 khách, 400 khách huỷ thật (8%).
Kết quả huấn luyện
| Tập | ROC-AUC |
|---|---|
| Train | 0,98 |
| Validation | 0,71 |
| Test | 0,70 |
Ma trận nhầm lẫn trên validation, ngưỡng 0,5
| Dự đoán huỷ | Dự đoán không huỷ | |
|---|---|---|
| Huỷ thật | 120 | 280 |
| Không huỷ thật | 480 | 4.120 |
Chi phí
- Mỗi ưu đãi gửi đi: 150.000 đồng.
- Mỗi khách huỷ được giữ lại: giá trị 1.200.000 đồng.
Ngưỡng 0,3 cho kết quả
| Dự đoán huỷ | Dự đoán không huỷ | |
|---|---|---|
| Huỷ thật | 200 | 200 |
| Không huỷ thật | 900 | 3.700 |
Câu hỏi
Câu 1. Accuracy của baseline "đoán tất cả không huỷ" là bao nhiêu?
Câu 2. Accuracy của mô hình tại ngưỡng 0,5 là bao nhiêu?
Câu 3. Precision tại ngưỡng 0,5?
Câu 4. Recall tại ngưỡng 0,5?
Câu 5. F1 tại ngưỡng 0,5?
Câu 6. Chẩn đoán vấn đề chính của mô hình từ ba con số ROC-AUC.
Câu 7. Vì sao accuracy của mô hình thấp hơn baseline mà mô hình vẫn có thể hữu ích?
Câu 8. Với chi phí đã cho, ngưỡng 0,5 có lãi không? Tính lợi ích ròng.
Câu 9. Ngưỡng 0,3 có tốt hơn 0,5 không? Tính lợi ích ròng.
Câu 10. Chia 5.000 khách theo 60/20/20 có stratify thì mỗi tập có bao nhiêu ca huỷ?
Câu 11. Một kỹ sư thêm đặc trưng so_lan_lien_he_sau_khi_huy và validation AUC tăng từ 0,71 lên 0,94. Nên làm gì?
Câu 12. Đổi C từ 100 xuống 0,1 thì regularization mạnh lên hay yếu đi? Kỳ vọng khoảng cách train–validation thay đổi thế nào?
Đáp án
Câu 1 — Baseline accuracy 92%
4.600 / 5.000 = 92%Baseline đoán tất cả là "không huỷ" đúng 92% mà không học gì. Đây là mức sàn để so sánh.
Câu 2 — Accuracy 84,8%
(120 + 4.120) / 5.000 = 4.240 / 5.000 = 84,8%Mô hình thấp hơn baseline gần 7 điểm accuracy. Nếu chỉ nhìn accuracy, sẽ kết luận mô hình vô dụng — kết luận đó sai, vì baseline không bắt được ca huỷ nào.
Câu 3 — Precision 20%
120 / (120 + 480) = 120 / 600 = 20%Trong 600 khách bị gắn nhãn "sẽ huỷ", chỉ 120 đúng. Bốn trong năm ưu đãi gửi nhầm người.
Câu 4 — Recall 30%
120 / (120 + 280) = 120 / 400 = 30%Mô hình bắt được 30% khách huỷ, bỏ sót 280 người.
Câu 5 — F1 24%
2 × 0,20 × 0,30 / (0,20 + 0,30) = 0,12 / 0,50 = 24%F1 thấp vì cả hai phía đều yếu. Con số này phản ánh đúng hơn accuracy nhiều.
Câu 6 — Overfitting
Train 0,98 → Validation 0,71Khoảng cách 0,27 là overfit rõ rệt. Validation và test xấp xỉ nhau (0,71 và 0,70), nghĩa là mô hình không tổng quát hoá tốt, chứ không phải chia tập sai.
Hướng xử lý: giảm độ phức tạp, tăng regularization, giảm số đặc trưng, thêm dữ liệu.
Câu 7 — Baseline bắt được 0 ca
Baseline có accuracy 92% nhưng recall bằng 0: không phát hiện được khách huỷ nào. Mô hình bắt được 120 người, tạo ra giá trị thực dù accuracy thấp hơn.
Khi lớp mất cân bằng, accuracy không đo được điều quan trọng. Đây là lý do phải chọn độ đo theo mục tiêu kinh doanh trước khi huấn luyện.
Câu 8 — Ngưỡng 0,5 có lãi: 54 triệu
Số ưu đãi gửi = 120 + 480 = 600
Chi phí = 600 × 150.000 = 90.000.000
Giá trị giữ lại = 120 × 1.200.000 = 144.000.000
Lợi ích ròng = 144.000.000 − 90.000.000 = 54.000.000Có lãi, dù precision chỉ 20%. Lý do: giá trị giữ được một khách lớn gấp 8 lần chi phí một ưu đãi.
Câu 9 — Ngưỡng 0,3 tốt hơn: 75 triệu
Số ưu đãi gửi = 200 + 900 = 1.100
Chi phí = 1.100 × 150.000 = 165.000.000
Giá trị giữ lại = 200 × 1.200.000 = 240.000.000
Lợi ích ròng = 240.000.000 − 165.000.000 = 75.000.000Ngưỡng 0,3 lãi 75 triệu so với 54 triệu. Recall tăng từ 30% lên 50%, precision giảm từ 20% xuống 18,2%, nhưng tổng lợi ích tăng.
Lưu ý: ngưỡng tối ưu phụ thuộc vào chi phí. Nếu mỗi ưu đãi đắt gấp ba, kết luận có thể đảo ngược. Luôn tính lại khi chi phí thay đổi.
Câu 10 — 240 / 80 / 80
Tổng ca huỷ = 400
Train 60% = 240
Val 20% = 80
Test 20% = 80Không stratify, tập test có thể chỉ có 50–60 ca huỷ, khiến đánh giá dao động mạnh.
Câu 11 — Loại bỏ đặc trưng
so_lan_lien_he_sau_khi_huy chỉ tồn tại sau khi khách đã huỷ. Đây là rò rỉ nhãn điển hình.
Mức tăng từ 0,71 lên 0,94 không phải cải thiện mà là dấu hiệu cảnh báo. Trong production, đặc trưng này luôn bằng 0 tại thời điểm dự đoán, nên mô hình sẽ mất hoàn toàn tác dụng.
Quy trình đúng: xác định thời điểm dự đoán, loại mọi đặc trưng được tạo sau đó, rồi huấn luyện lại.
Câu 12 — Mạnh lên; khoảng cách thu hẹp
C là nghịch đảo cường độ regularization. Giảm C từ 100 xuống 0,1 là tăng regularization mạnh.
Kỳ vọng:
- Điểm train giảm.
- Điểm validation tăng hoặc giữ nguyên.
- Khoảng cách train–validation thu hẹp.
Nếu validation giảm theo, regularization đã quá mạnh — thử giá trị trung gian như 1 hoặc 0,3.
Cách chấm điểm
| Số câu đúng | Mức | Gợi ý |
|---|---|---|
| 11–12 | Vững | Thử dựng lại toàn bộ quy trình trên dữ liệu thật |
| 8–10 | Khá | Xem lại câu sai, đặc biệt phần chi phí |
| 5–7 | Trung bình | Đọc lại bài 3, 5 và 6 |
| Dưới 5 | Cần ôn | Làm lại từ bài 1, tự tính trước khi xem đáp án |
Bản đồ câu hỏi → bài học
| Câu | Bài |
|---|---|
| 1, 7 | Bài 1: Bài toán học có giám sát |
| 2–5 | Bài 5: Độ đo đánh giá phân loại |
| 6, 12 | Bài 3: Overfitting và regularization |
| 8–9 | Bài 5: Ngưỡng và chi phí |
| 10 | Bài 2: Chia tập train/validation/test |
| 11 | Bài 6: Rò rỉ dữ liệu |
Bài tập mở rộng
- Tính lợi ích ròng tại ngưỡng 0,2 nếu recall đạt 70% và precision còn 12%.
- Tính ngưỡng hoà vốn khi chi phí ưu đãi là 300.000 đồng.
- Đề xuất ba cách giảm khoảng cách train–validation.
- Viết đoạn code tính lợi ích ròng cho một dải ngưỡng.
- Giải thích trong ba câu vì sao không nên báo cáo accuracy cho mô hình này.
Tóm tắt
- Accuracy thấp hơn baseline không có nghĩa mô hình vô dụng.
- Precision và recall trả lời hai câu hỏi khác nhau.
- Khoảng cách train–validation lớn là overfitting.
- Đặc trưng chỉ có sau khi nhãn xảy ra là rò rỉ.
- Ngưỡng tối ưu là bài toán chi phí, không phải bài toán kỹ thuật.
Dùng ← → để chuyển bài