← Tất cả các tuần · Phase 5: Dự báo · khoảng 240 phút
Tuần 12: Nguyên lý machine learning
Bản nháp, đang chờ duyệt nội dung
- Giải thích vì sao phải chia train/test, và chia đúng cách.
- Nhận ra overfitting qua chênh lệch điểm train và test.
- Luôn so model với một baseline ngây thơ.
- Phát hiện data leakage: feature chứa thông tin chưa thể có tại thời điểm dự báo.
- Phân biệt supervised và unsupervised learning.
Video sắp có.
Audio tóm tắt tuần (NotebookLM) sắp có.
Phase 5 là dự báo. Mục tiêu không phải để bạn tự xây model phức tạp, mà để bạn đánh giá được một model người khác đưa ra: nó có thật sự tốt không, có đáng tin không, có bị “ăn gian” không. Code model ở phase này phần lớn là code mẫu; phần quan trọng là cách đọc kết quả.
Bài 12.1. Supervised và unsupervised [5]
- Supervised learning (học có giám sát): dữ liệu có sẵn đáp án (nhãn). Model học từ ví dụ có đáp án để đoán đáp án cho ví dụ mới. Ví dụ: đoán khách có rời bỏ không (phân loại), đoán doanh số tháng sau (hồi quy).
- Unsupervised learning (học không giám sát): không có đáp án; model tự tìm cấu trúc. Ví dụ: chia khách hàng thành các nhóm có hành vi giống nhau (clustering).
Bài 12.2. Train/test và baseline [7]
Model nào cũng đoán tốt trên dữ liệu nó đã thấy. Câu hỏi thật là: nó đoán tốt trên dữ liệu mới không? Vì vậy ta chia dữ liệu:
- Train: phần để model học (thường 70–80%).
- Test: phần giấu đi, chỉ dùng một lần ở cuối để chấm điểm. Điểm test là ước lượng cho hiệu quả thật.
Baseline là cách đoán ngây thơ nhất: luôn đoán lớp phổ biến nhất, luôn đoán giá trị trung bình, luôn đoán “tháng sau bằng tháng này”. Model chỉ có giá trị khi thắng được baseline, và thắng đủ nhiều để đáng chi phí xây dựng và vận hành.
Dữ liệu Iris (có sẵn trong scikit-learn): 150 bông hoa thuộc 3 loài, mỗi bông đo 4 chỉ số (dài và rộng của đài hoa, cánh hoa). Bài toán: từ 4 chỉ số, đoán loài.
Bài 12.3. Overfitting [7]
Overfitting (quá khớp): model học thuộc dữ liệu train, kể cả phần nhiễu ngẫu nhiên, nên đoán train rất giỏi nhưng đoán dữ liệu mới kém. Giống học sinh học thuộc đáp án đề cũ: đề cũ được 10 điểm, đề mới thì không.
Dấu hiệu: điểm train rất cao, điểm test thấp hơn hẳn. Cách giảm: model đơn giản hơn (ví dụ giới hạn độ sâu của cây), nhiều dữ liệu hơn, ít feature hơn.
Dữ liệu Wine Quality (rượu vang đỏ, 1.599 mẫu): 11 chỉ số hoá học và điểm chất lượng từ chuyên gia (thang 0–10). Bài toán: đoán điểm chất lượng. Đo sai số bằng MAE (mean absolute error: trung bình độ lệch tuyệt đối giữa dự đoán và thực tế).
Lưu ý: cây không giới hạn ở đây vẫn có MAE test hơi thấp hơn cây độ sâu 3. Overfitting không có nghĩa model vô dụng, mà nghĩa là điểm train đánh lừa: nếu chỉ báo điểm train (MAE ≈ 0), bạn sẽ hứa hẹn một model hoàn hảo, trong khi thực tế sai khoảng 0,5 điểm.
Bài 12.4. Data leakage [6]
Data leakage (rò rỉ dữ liệu): model dùng một feature chứa thông tin mà tại thời điểm cần dự báo chưa thể có. Kết quả test đẹp bất thường, nhưng khi đưa vào dùng thật thì sụp đổ.
Ví dụ: dự đoán khách sẽ huỷ hợp đồng (churn) với feature “ngày huỷ hợp đồng”. Chỉ khách đã huỷ mới có ngày huỷ, nên model đoán đúng gần 100%. Nhưng lúc cần dự đoán (trước khi khách huỷ), feature này chưa tồn tại.
Dấu hiệu nghi ngờ: kết quả tốt bất thường; một feature quá quan trọng; feature được ghi nhận sau sự kiện cần dự đoán. Hỏi với mỗi feature: “lúc ra quyết định, mình đã biết giá trị này chưa?”
Luyện tập tình huống
Tình huống: model churn đạt 98%
Bối cảnh. Một vendor trình bày model dự đoán khách huỷ hợp đồng, đạt accuracy 98% trên dữ liệu test. Khi hỏi, bạn biết model dùng 15 feature, trong đó feature quan trọng nhất là 'ngày huỷ hợp đồng'. Tỷ lệ khách huỷ thực tế khoảng 25%.
Câu hỏi. Bạn có đồng ý mua model này không? Vì sao, và bạn yêu cầu vendor làm gì?
Câu trả lời đã nộp sẽ được khoá lại, không sửa được.
Đáp án mẫu
- Data leakage: tại thời điểm cần dự báo (trước khi khách huỷ), chưa thể biết ngày huỷ hợp đồng. Accuracy 98% là ảo.
- So với baseline “luôn đoán không huỷ” đã đạt 75%, cần biết model sạch thắng baseline bao nhiêu.
- Yêu cầu: bỏ mọi feature ghi nhận sau thời điểm dự báo; chia train/test theo thời gian (train bằng quá khứ, test bằng giai đoạn sau); báo precision/recall cho lớp “huỷ”, không chỉ accuracy.
Tóm tắt tuần
- Chấm điểm model trên test, không phải train. Test chỉ dùng một lần.
- Luôn có baseline. Model phải thắng baseline đủ nhiều.
- Train cao, test thấp → overfitting. Dùng model đơn giản hơn.
- Kết quả đẹp bất thường → nghi leakage. Hỏi: lúc dự báo đã biết feature này chưa?