Trong nhiều dự án Machine Learning, có một vấn đề rất dễ bị bỏ qua nhưng có thể làm sai lệch toàn bộ kết quả: data leakage, hay rò rỉ dữ liệu. Đây là tình huống mô hình vô tình được nhìn thấy thông tin mà trong thực tế nó không thể có tại thời điểm dự đoán. Kết quả là mô hình đạt điểm rất cao khi kiểm thử, nhưng khi đưa vào sử dụng thật thì hiệu năng giảm mạnh. Ví dụ đơn giản: bạn xây dựng mô hình dự đoán khách hàng có hủy dịch vụ trong tháng tới hay không. Trong bộ dữ liệu có cột “ngày đóng tài khoản” hoặc “lý do hủy”. Nếu các cột này được dùng để huấn luyện, mô hình gần như biết trước đáp án. Điểm accuracy có thể rất đẹp, nhưng mô hình đó vô dụng vì tại thời điểm cần dự đoán, các thông tin này chưa tồn tại. Một dạng leakage phổ biến khác là xử lý dữ liệu trước khi chia train/test. Chẳng hạn bạn chuẩn hóa dữ liệu bằng trung bình và độ lệch chuẩn của toàn bộ dataset, rồi mới tách tập kiểm thử. Khi đó thông tin từ tập test đã gián tiếp ảnh hưởng đến tập train. Cách đúng là chia dữ liệu trước, sau đó fit scaler trên tập train và chỉ transform tập validation/test. Một số dấu hiệu nên nghi ngờ data leakage: - Kết quả validation cao bất thường so với kỳ vọng thực tế. - Mô hình đơn giản nhưng đạt hiệu năng gần như hoàn hảo. - Khi chạy trên dữ liệu mới, chất lượng giảm đột ngột. - Một vài feature có khả năng dự đoán quá mạnh nhưng khó giải thích về mặt nghiệp vụ. Để hạn chế rò rỉ dữ liệu, nên áp dụng các nguyên tắc sau: 1. Chia dữ liệu đúng theo bối cảnh thời gian Với bài toán dự đoán tương lai, không nên chia ngẫu nhiên một cách máy móc. Ví dụ dự đoán doanh thu tháng sau thì tập train nên là dữ liệu quá khứ, tập test là giai đoạn sau đó. Điều này mô phỏng sát tình huống triển khai thật. 2. Đóng gói pipeline tiền xử lý Các bước như điền giá trị thiếu, chuẩn hóa, mã hóa categorical feature, chọn feature nên được fit chỉ trên tập train. Trong Python, có thể dùng Pipeline của scikit-learn để tránh thao tác thủ công sai thứ tự. 3. Kiểm tra ý nghĩa nghiệp vụ của từng feature Trước khi đưa feature vào mô hình, hãy hỏi: “Tại thời điểm dự đoán, thông tin này đã có chưa?” Nếu câu trả lời là chưa, feature đó không nên được dùng dù nó làm điểm số tăng mạnh. 4. Cẩn thận với dữ liệu trùng lặp hoặc gần trùng Trong bài toán văn bản, ảnh, log người dùng, có thể một bản ghi gần giống xuất hiện ở cả train và test. Khi đó mô hình không thật sự tổng quát hóa mà chỉ ghi nhớ. Cần kiểm tra duplicate, nhóm dữ liệu theo người dùng, thiết bị, phiên giao dịch hoặc tài liệu gốc trước khi chia tập. 5. Dùng baseline thực tế Đừng chỉ nhìn vào metric. Hãy so sánh với baseline đơn giản như dự đoán theo trung bình, mô hình logistic regression, hoặc luật nghiệp vụ cơ bản. Nếu mô hình phức tạp vượt baseline quá xa, cần kiểm tra xem có leakage hay không. Data leakage không phải lỗi cú pháp, nên chương trình vẫn chạy bình thường và kết quả thậm chí còn rất đẹp. Chính vì vậy nó nguy hiểm. Một mô hình đáng tin cậy không chỉ cần thuật toán tốt, mà còn cần quy trình đánh giá đúng. Trước khi tối ưu tham số hoặc đổi sang mô hình lớn hơn, hãy chắc chắn rằng dữ liệu kiểm thử thật sự độc lập và phản ánh đúng điều kiện triển khai.