← Tất cả các tuần · Phase 5: Dự báo · khoảng 270 phút
Tuần 14: Dự báo chuỗi thời gian
Bản nháp, đang chờ duyệt nội dung
- Chia train/test theo thời gian: train bằng quá khứ, test bằng tương lai.
- Dựng và so sánh các baseline: naive, seasonal naive, moving average.
- Đọc kết quả exponential smoothing so với baseline.
- Trình bày dự báo kèm khoảng sai số, không chỉ một con số.
Video sắp có.
Audio tóm tắt tuần (NotebookLM) sắp có.
Dự báo doanh số, số khách, lượng hàng cần nhập là việc hằng ngày của nhiều phòng ban. Tuần này dùng AirPassengers: số hành khách đi máy bay quốc tế mỗi tháng (nghìn người) từ 1949 đến 1960, một chuỗi có cả trend và seasonality rõ.
Bài 14.1. Train bằng quá khứ, test bằng tương lai [7]
Với dữ liệu theo thời gian, không được chia train/test ngẫu nhiên. Nếu chia ngẫu nhiên, tháng 6/1960 có thể nằm trong train còn tháng 5/1960 trong test: model “nhìn thấy tương lai” để đoán quá khứ, nên điểm test đẹp hơn thực tế.
Cách đúng: chọn một mốc thời gian. Mọi thứ trước mốc là train, mọi thứ sau mốc là test. Đây cũng là cách model sẽ được dùng thật: chỉ biết quá khứ, phải đoán tương lai.
Bài 14.2. Ba baseline cho chuỗi thời gian [6]
| Phương pháp | Cách đoán | Hợp khi |
|---|---|---|
| Naive | Mọi tháng tương lai = tháng cuối cùng đã biết | Chuỗi không có mùa vụ, thay đổi chậm |
| Seasonal naive | Tháng tương lai = cùng tháng của năm gần nhất | Chuỗi có mùa vụ rõ |
| Moving average | Trung bình N tháng gần nhất | Chuỗi nhiễu, cần làm mượt |
Model phức tạp nào cũng phải thắng được ba cách này mới đáng dùng.
Seasonal naive vẫn đoán thấp vì không tính đến trend tăng: năm sau luôn đông hơn năm trước.
Bài 14.3. Exponential smoothing [5]
Exponential smoothing (làm mượt hàm mũ) dự báo bằng trung bình có trọng số của quá khứ, trong đó dữ liệu gần đây có trọng số lớn hơn. Phiên bản Holt-Winters tách riêng ba phần: mức hiện tại, trend và seasonality, nên xử lý được chuỗi như AirPassengers. Bạn chỉ cần chạy code mẫu và đọc MAE.
Bài 14.4. Dự báo luôn có sai số [6]
Dự báo “tháng sau bán 1.000 đơn” gần như chắc chắn sai: câu hỏi chỉ là sai bao nhiêu. Người dùng dự báo (mua hàng, nhân sự, tài chính) cần biết khoảng để quyết định tồn kho an toàn, ngân sách dự phòng.
Một cách đơn giản để có khoảng: backtest. Giả vờ đứng ở quá khứ, dự báo giai đoạn đã biết đáp án, đo sai số, rồi dùng phân phối sai số đó để tạo khoảng cho dự báo mới.
Luyện tập tình huống
Tình huống: chia ngẫu nhiên dữ liệu theo ngày
Bối cảnh. Một analyst xây model dự báo doanh số theo ngày từ dữ liệu 3 năm. Họ dùng train_test_split ngẫu nhiên 80/20 và báo cáo MAE test rất thấp. Model dùng các feature như doanh số của ngày hôm trước và ngày hôm sau.
Câu hỏi. Cách chia này có vấn đề gì? Nên làm lại thế nào?
Câu trả lời đã nộp sẽ được khoá lại, không sửa được.
Đáp án mẫu
- Sai: chia ngẫu nhiên làm các ngày trong test nằm xen giữa các ngày train, model dùng thông tin tương lai (ngày sau) để đoán. Feature “doanh số ngày hôm sau” còn là data leakage rõ ràng.
- Làm lại: chia theo thời gian (ví dụ train 2 năm đầu, test năm thứ 3); chỉ dùng feature có sẵn tại thời điểm dự báo; so với baseline seasonal naive.
Tình huống: 'tháng sau bán đúng 1.000 đơn'
Bối cảnh. Bộ phận kế hoạch nhận báo cáo dự báo: 'Tháng sau bán 1.000 đơn.' Bộ phận mua hàng đặt đúng 1.000 bộ nguyên liệu. Sai số dự báo trong backtest 12 tháng qua dao động từ −15% đến +15%.
Câu hỏi. Cách dùng dự báo này có vấn đề gì? Nên trình bày và dùng dự báo thế nào?
Câu trả lời đã nộp sẽ được khoá lại, không sửa được.
Đáp án mẫu
- Thiếu khoảng sai số. Với sai số lịch sử ±15%, thực tế có thể từ khoảng 850 đến 1.150 đơn. Đặt đúng 1.000 thì dễ thiếu hàng khi bán tốt, hoặc tồn kho khi bán kém.
- Nên trình bày: “dự kiến 1.000 đơn, 80% khả năng trong 850–1.150”, kèm phương pháp và sai số backtest.
- Nên dùng: mua hàng quyết định mức đặt dựa trên chi phí thiếu hàng so với chi phí tồn kho (ví dụ đặt 1.100 nếu thiếu hàng tốn kém hơn).
Tóm tắt tuần và chuẩn bị Checkpoint 5
- Chuỗi thời gian: chia theo thời gian, không chia ngẫu nhiên.
- Baseline: naive, seasonal naive, moving average. Model phải thắng chúng.
- Exponential smoothing (Holt-Winters) tách mức, trend, mùa vụ.
- Dự báo luôn kèm khoảng; khoảng lấy từ sai số backtest.