Ba nhóm nguyên nhân, phân biệt bằng cái gì đã thay đổi:
1. Data drift (covariate shift) — phân phối đầu vào P(X) đổi, quan hệ P(y|X) giữ nguyên. Ví dụ tệp khách hàng mở rộng sang tỉnh khác, app đổi luồng đăng ký khiến một feature luôn rỗng.
2. Concept drift — quan hệ P(y|X) đổi. Hành vi gian lận thay đổi để né mô hình, chính sách khuyến mãi mới làm định nghĩa "khách sắp rời bỏ" khác đi. Đây là loại nguy hiểm nhất vì đầu vào trông vẫn bình thường.
3. Lỗi kỹ thuật, không phải drift — thường gặp hơn cả hai loại trên:
- Training-serving skew: code tính feature lúc train (batch, pandas) khác code lúc serve (realtime).
- Upstream đổi đơn vị/định dạng, cột thành null sau một lần deploy.
- Vòng phản hồi: mô hình chặn giao dịch nghi ngờ → không còn nhãn cho nhóm bị chặn → dữ liệu huấn luyện kỳ sau bị thiên lệch.
Quy trình điều tra:
1. So phân phối từng feature giữa dữ liệu train và dữ liệu production gần đây (PSI, KS test, hoặc chỉ cần so histogram và tỷ lệ null). Feature nào lệch mạnh thì đọc log deploy của hệ thống sinh feature quanh mốc đó.
2. Chạy lại cùng một bản ghi qua pipeline train và pipeline serve, so kết quả từng feature — bắt training-serving skew.
3. Khi nhãn về, tính lại metric theo lát cắt (thời gian, kênh, phân khúc) để xem sụt giảm là toàn cục hay chỉ ở một nhóm.
4. So mô hình hiện tại với mô hình huấn luyện lại trên dữ liệu mới: nếu bản mới tốt hơn hẳn thì là drift, nếu cũng kém thì nghi lỗi dữ liệu.
Biện pháp thường trực: theo dõi phân phối đầu vào và phân phối điểm dự đoán hằng ngày, đặt cảnh báo, và có lịch huấn luyện lại thay vì đợi đến lúc có người phàn nàn.