Ở 2 bài trước, bạn đã học cách xây mô hình phân loại và hồi quy sao cho khớp với dữ liệu. Nhưng có 1 nghịch lý: 1 mô hình khớp quá hoàn hảo với dữ liệu huấn luyện thường lại là dấu hiệu XẤU, không phải tốt. Đây gọi là overfitting.
Vì sao “khớp hoàn hảo” lại là dấu hiệu xấu?
Dữ liệu thực tế luôn có nhiễu — sai số đo đạc, ngoại lệ ngẫu nhiên, yếu tố không kiểm soát được. Nếu 1 mô hình đủ phức tạp, nó có thể “vẽ” 1 đường ngoằn ngoèo đi qua chính xác từng điểm dữ liệu huấn luyện — kể cả những điểm nhiễu. Nhưng đường ngoằn ngoèo đó không phản ánh xu hướng thật, nên khi gặp dữ liệu mới, nó dự đoán sai nghiêm trọng.
Cách phát hiện: chia dữ liệu ra làm 2 phần
Cách đơn giản và phổ biến nhất để phát hiện overfitting là holdout: chia dữ liệu thành phần “huấn luyện” (để mô hình học) và phần “kiểm tra” (giữ riêng, mô hình không được nhìn thấy khi học). Nếu độ chính xác trên phần huấn luyện rất cao nhưng trên phần kiểm tra lại thấp hẳn — đó là dấu hiệu rõ ràng của overfitting.
Kỹ thuật nâng cao hơn gọi là cross-validation (kiểm định chéo): lặp lại việc chia-huấn luyện-kiểm tra nhiều lần với các phần dữ liệu khác nhau, để có đánh giá đáng tin cậy hơn là chỉ chia 1 lần duy nhất.
Xem thêm
Video này (tiếng Anh) giải thích khái niệm bias/variance — 2 loại lỗi đối nghịch mà overfitting và underfitting gây ra, giúp bạn hiểu sâu hơn vì sao cần tìm điểm “vừa đủ”.
- Bạn giải thích được vì sao 1 mô hình “khớp hoàn hảo” với dữ liệu cũ có thể là dấu hiệu xấu.
- Bạn biết cách dùng holdout (chia train/test) để phát hiện overfitting.
- Bạn nghe qua và hiểu sơ về cross-validation, sẽ dùng thực hành ở Module 4.
Câu hỏi quan trọng nhất khi đánh giá 1 mô hình không phải là “nó đúng bao nhiêu % với dữ liệu đã có” mà là “nó sẽ đúng bao nhiêu % với dữ liệu nó CHƯA từng thấy”. Luôn dành riêng 1 phần dữ liệu để kiểm tra độc lập, đừng đánh giá mô hình chỉ dựa trên dữ liệu nó đã học.
Câu hỏi thường gặp
Mô hình đơn giản luôn tốt hơn mô hình phức tạp để tránh overfitting?
Không hẳn — mô hình quá đơn giản lại mắc lỗi ngược lại gọi là underfitting (không đủ khả năng nắm bắt xu hướng thật). Mục tiêu là tìm độ phức tạp “vừa đủ”, không phải càng đơn giản càng tốt.
Chia dữ liệu train/test theo tỷ lệ nào là hợp lý?
Phổ biến là 70-80% cho huấn luyện, 20-30% cho kiểm tra, nhưng tỷ lệ cụ thể phụ thuộc vào lượng dữ liệu bạn có. Sẽ thực hành cụ thể bằng Python ở Module 4.
Overfitting có liên quan gì đến việc phân tích báo cáo tài chính để đầu tư?
Rất liên quan: nếu bạn xây 1 quy tắc đầu tư khớp hoàn hảo với dữ liệu lịch sử của vài công ty, quy tắc đó có thể chỉ đang “học vẹt” các trường hợp cũ, không áp dụng được cho công ty mới.
