06

Nhà khoa học dữ liệu · Bước 6/8 · 11 phút

Đánh giá mô hình một cách trung thực

Chọn đúng chỉ số, dùng cross-validation, và kiểm tra rò rỉ dữ liệu cũng như lỗi thiếu công bằng.

Accuracy thường là con số sai

Accuracy (độ chính xác) là tỷ lệ dự đoán đúng. Nó dễ hiểu và cũng dễ đánh lừa. Khi một lớp rất hiếm, như gian lận hay một căn bệnh, mô hình có thể đạt độ chính xác rất cao chỉ bằng cách luôn đoán “không”, mà vẫn vô dụng.

Precision (độ chuẩn xác) hỏi: trong những trường hợp mô hình gắn cờ, bao nhiêu là thật? Recall (độ bao phủ) hỏi: trong những trường hợp thật, mô hình bắt được bao nhiêu? Ma trận nhầm lẫn (confusion matrix) hiện cả bốn con số cùng lúc, và đáng in ra mỗi lần.

Lỗi nào đắt hơn?

Chỉ số đúng phụ thuộc vào cái giá của từng loại lỗi. Bỏ sót một vụ gian lận có thể tốn hơn nhiều so với kiểm tra nhầm một giao dịch bình thường, nên bạn ưu tiên recall. Nhưng gắn cờ gian lận cho một khách trung thành thì mất lòng tin, nên bạn cũng phải để mắt đến precision.

Phần lớn bộ phân loại cho ra một xác suất, và bạn chọn ngưỡng để nói “có”. Dịch ngưỡng là đánh đổi giữa precision và recall. Hãy chọn ngưỡng cùng những người sẽ phải sống chung với các lỗi đó, đừng chọn một mình trong notebook.

Cross-validation và rò rỉ dữ liệu

Một lần chia train/test có thể may hoặc rủi. Cross-validation (kiểm định chéo) chia dữ liệu theo nhiều cách, huấn luyện và kiểm thử mỗi lần, rồi báo cáo trung bình và độ dao động. Trong scikit-learn, cross_val_score làm việc này giúp bạn. Nếu điểm giữa các lần chia chênh nhau nhiều, kết quả của bạn kém chắc chắn hơn một con số duy nhất cho thấy.

Rò rỉ cũng có thể nấp trong quy trình. Chuẩn hóa hoặc điền giá trị thiếu dựa trên toàn bộ dữ liệu trước khi chia sẽ để thông tin của tập test lọt vào huấn luyện. Hãy đặt các bước đó trong một Pipeline của scikit-learn để chúng chỉ học từ dữ liệu train.

Xem lỗi rơi vào ai

Một mô hình có số liệu tổng thể tốt vẫn có thể thất bại nặng với một nhóm. Hãy tách chỉ số theo các nhóm có ý nghĩa, như vùng miền, độ tuổi hay thiết bị, và so sánh tỷ lệ lỗi. Nếu một mô hình tuyển dụng hay cho vay mắc lỗi với một nhóm nhiều hơn hẳn, đó là vấn đề công bằng và thường cả vấn đề pháp lý.

Chỉ bỏ cột nhạy cảm đi thì chưa giải quyết được, vì các cột khác có thể đóng vai thay thế. Hãy đo, báo cáo những gì tìm thấy, và mời những người hiểu bối cảnh cùng xem xét.

Thử ngay

Tự lừa mình bằng accuracy, rồi sửa lại

  1. 1.Mở bộ dữ liệu miễn phí “Credit Card Fraud Detection” trên Kaggle notebook, hoặc bất kỳ bộ dữ liệu nào có lớp dương hiếm.
  2. 2.Huấn luyện một DummyClassifier luôn đoán lớp chiếm đa số và in ra accuracy.
  3. 3.Huấn luyện LogisticRegression và in classification_report cùng confusion_matrix.
  4. 4.Viết hai câu về ngưỡng bạn sẽ chọn và lý do.
Trong bộ dữ liệu có 1% giao dịch gian lận, một mô hình đạt accuracy 99%. Bạn nên kiểm tra gì trước tiên?

Tự kiểm tra

Trong bộ dữ liệu có 1% giao dịch gian lận, một mô hình đạt accuracy 99%. Bạn nên kiểm tra gì trước tiên?

Đọc thêm