Trong nhiều bài toán Machine Learning thực tế, dữ liệu hiếm khi “đẹp” như ví dụ trong sách. Một vấn đề rất phổ biến là dữ liệu mất cân bằng: lớp dương quá ít so với lớp âm. Ví dụ: phát hiện gian lận giao dịch, dự đoán khách hàng rời bỏ, nhận diện lỗi sản xuất, hay phát hiện email spam đặc biệt nguy hiểm. Nếu chỉ nhìn vào độ chính xác tổng thể, mô hình có thể trông rất tốt nhưng lại bỏ sót chính những trường hợp quan trọng nhất. Điều đầu tiên cần làm là xác định đúng mục tiêu. Với dữ liệu mất cân bằng, câu hỏi không phải “mô hình đúng bao nhiêu phần trăm?” mà là “mô hình có bắt được lớp hiếm không, và cái giá của việc bỏ sót là gì?”. Trong nhiều trường hợp, bỏ sót một giao dịch gian lận còn tệ hơn nhầm một giao dịch bình thường thành gian lận. Khi mục tiêu đã rõ, cách đánh giá và cách tối ưu cũng sẽ khác. Một số nguyên tắc thực tế bạn nên áp dụng: - Đừng chỉ dùng accuracy. Hãy nhìn thêm precision, recall, F1-score, PR curve hoặc confusion matrix. - Chia dữ liệu theo cách phản ánh đúng thực tế. Nếu bài toán có yếu tố thời gian, nên tách train/validation/test theo mốc thời gian thay vì trộn ngẫu nhiên. - So sánh với baseline đơn giản. Nhiều khi một mô hình phức tạp không tốt hơn nhiều so với quy tắc rất đơn giản. Về xử lý dữ liệu, có vài hướng thường dùng: - Over-sampling lớp thiểu số: nhân bản hoặc tạo thêm mẫu gần giống. Cách này hữu ích khi dữ liệu hiếm quá ít, nhưng dễ làm mô hình học thuộc nếu lạm dụng. - Under-sampling lớp đa số: giảm bớt mẫu của lớp lớn. Cách này giúp cân bằng nhanh hơn nhưng có thể làm mất thông tin quan trọng. - Dùng class weight: tăng “trọng số” cho lớp hiếm trong quá trình huấn luyện. Đây là lựa chọn thường đáng thử đầu tiên vì không làm thay đổi tập dữ liệu gốc quá nhiều. - Điều chỉnh ngưỡng dự đoán: thay vì mặc định ngưỡng 0.5, hãy chọn ngưỡng phù hợp với chi phí sai lầm của bài toán. Ví dụ thực tế: trong bài toán phát hiện khách hàng có nguy cơ hủy dịch vụ, tỷ lệ rời bỏ có thể rất thấp. Nếu chỉ tối ưu accuracy, mô hình có thể dự đoán tất cả là “không rời bỏ” và vẫn đạt kết quả nhìn có vẻ cao. Nhưng khi xem recall của lớp rời bỏ, bạn sẽ thấy mô hình gần như vô dụng cho đội kinh doanh. Lúc này, việc tăng trọng số cho lớp thiểu số, tối ưu theo recall hoặc PR-AUC, rồi chọn ngưỡng dự đoán theo chi phí chăm sóc khách hàng sẽ thực tế hơn nhiều. Một lời khuyên quan trọng khác: hãy đánh giá mô hình theo từng lát cắt dữ liệu. Có thể toàn bộ tập test cho kết quả ổn, nhưng nhóm khách hàng mới, khu vực mới hoặc loại giao dịch mới lại là nơi mô hình yếu nhất. Dữ liệu mất cân bằng thường che giấu vấn đề này rất tốt. Tóm lại, với dữ liệu mất cân bằng, mục tiêu không phải là làm cho các con số “trông cân đối”, mà là thiết kế lại cách đánh giá và cách huấn luyện để mô hình phục vụ đúng nhu cầu thực tế. Nếu xử lý đúng từ đầu, bạn sẽ tiết kiệm rất nhiều thời gian so với việc sửa sai ở giai đoạn cuối.