Confusion Matrix / Precision / Recall / F1
Ma trận nhầm lẫn
Một bệnh viện có mô hình sàng lọc ung thư đạt 99% accuracy. Chỉ 2 trong 100 bệnh nhân thực sự mắc bệnh. Bạn có yên tâm với con số 99% đó?
Bốn loại kết quả khi mô hình phán đoán
Hãy tưởng tượng bạn là bác sĩ đang dùng một mô hình AI hỗ trợ. Với mỗi bệnh nhân, có đúng hai câu hỏi quan trọng: “mô hình dự đoán có bệnh hay không?” và “thực tế bệnh nhân có bệnh hay không?”. Hai câu hỏi × hai đáp án = bốn ô.
Đoán 'có bệnh' và thực tế có bệnh — bắt đúng ca cần chữa.
Đoán 'có bệnh' nhưng thực tế không bệnh — làm bệnh nhân lo và tốn xét nghiệm.
Đoán 'không bệnh' nhưng thực tế có bệnh — nguy hiểm, bệnh nhân về nhà không được chữa.
Đoán 'không bệnh' và thực tế không bệnh — cho bệnh nhân yên tâm ra về.
Lưu ý cách gọi tên: chữ T/Fở đầu nói về “mô hình đoán có đúng không”, chữ P/N nói về “mô hình đoán gì”. TP = đoán dương + đúng. FP = đoán dương + sai. Một mẹo ghi nhớ: chữ thứ hai (P/N) luôn là dự đoán của mô hình.
Hình minh họa
Dưới đây là 20 bệnh nhân. Mỗi người có một điểm nguy cơdo mô hình tính ra, từ 0 (chắc chắn khoẻ) đến 1 (chắc chắn bệnh). Bạn đặt một ngưỡng — ai vượt ngưỡng thì gán là “có bệnh”. Kéo thanh trượt và quan sát từng bệnh nhân nhảy qua lại giữa bốn ô.
Cân bằng — mặc định ban đầu
20 bệnh nhân — mỗi biểu tượng là một ca thật
Ma trận nhầm lẫn 2 × 2
Ma trận 2 × 2 chia lỗi thành hai loại khác nhau về chất: báo động giả (FP) và bỏ sót (FN). Hai loại này thường có chi phí không cân bằng. Biết lỗi nào đắt hơn, bạn biết phải chỉnh ngưỡng bên nào.
Khi nào ưu tiên Recall, khi nào ưu tiên Precision?
Hai bài toán dưới đây có vẻ giống nhau, nhưng chi phí lỗi hoàn toàn khác. Bấm qua lại để cảm nhận vì sao một con số metric không đủ.
Hai tình huống — hai cách cân bằng khác nhau.
Sàng lọc ung thư
Bỏ sót (FN) = bệnh nhân tin mình khoẻ, ung thư di căn, có thể tử vong. Báo động giả (FP) chỉ tốn thêm một lượt xét nghiệm xác nhận.
Chiến lược: hạ ngưỡng xuống thấp, chấp nhận nhiều FP để bảo đảm Recall cao. Mô hình sàng lọc thường chỉ là bước đầu — đội y tế sẽ kiểm tra kỹ những ca báo dương.
Bốn bài toán thực tế — cùng công cụ, bốn chiến lược khác nhau
Mỗi ngành nghề có cấu trúc chi phí FP / FN riêng. Bảng dưới đây tóm tắt cách bốn lĩnh vực quen thuộc chọn metric ưu tiên và vì sao.
Chi phí FP: Thêm một lượt xét nghiệm xác nhận
Chi phí FN: Bỏ sót bệnh nhân — có thể tử vong
Chi phí FP: Xoá nhầm email khách hàng quan trọng
Chi phí FN: Spam lọt vào hộp thư — bất tiện nhưng không nguy hiểm
Chi phí FP: Chặn giao dịch thật — khách bực, có thể đổi ngân hàng
Chi phí FN: Để lọt gian lận — thẻ bị hack, thiệt hại tiền thật
Chi phí FP: Triển khai xe cứu hoả không cần thiết (tốn nhân lực)
Chi phí FN: Bỏ sót đám cháy — thiệt hại rất lớn, bất khả hồi phục
Bốn bước đọc một ma trận nhầm lẫn lạ
Khi bạn gặp một báo cáo mô hình mới, đây là thứ tự bạn nên kiểm tra:
Có bao nhiêu ca bệnh bị bỏ sót? Đây là con số quan trọng nhất trong y tế, an ninh, phát hiện gian lận. Nếu FN quá cao, bạn biết ngay rằng mô hình đang quá dè dặt.
Với xét nghiệm nhanh HIV cho mục đích sàng lọc diện rộng ở cộng đồng, bạn nên ưu tiên metric nào?
Một nhóm phát hiện gian lận thẻ tín dụng thấy mô hình đang chặn nhầm 30% giao dịch hợp pháp (FP cao) nhưng vẫn để lọt 5% gian lận (FN thấp). Họ nên làm gì trước?
Giải thích
Bốn ô TP, FP, FN, TN sinh ra ba chỉ số thường dùng nhất. Mỗi công thức đi kèm một câu giải thích bằng tiếng Việt thường ngày — bạn không cần nhớ công thức nếu nhớ ý nghĩa.
Trong mọi lần mô hình báo có bệnh, bao nhiêu phần trăm là đúng? Precision cao = mô hình ít báo nhầm.
Trong tất cả người thực sự có bệnh, bao nhiêu phần trăm bị mô hình bắt được? Recall cao = mô hình ít bỏ sót.
Trung bình điều hoà của Precision và Recall. Nếu một trong hai rất thấp, F1 cũng sẽ thấp — khác với trung bình cộng (bị lừa khi một bên cao bù một bên thấp).
Ví dụ: Precision = 0.9, Recall = 0.1. Trung bình cộng = 0.5 (nghe tốt), nhưng F1 = 0.18 (phản ánh đúng việc mô hình bỏ sót 90% ca bệnh).
Mỗi chỉ số nhìn vào một phần khác của ma trận
Nhìn cột 'đoán dương' — cộng TP và FP, hỏi tỉ lệ đúng.
Nhìn hàng 'thực tế dương' — cộng TP và FN, hỏi bắt được bao nhiêu.
Nhìn đường chéo — tỉ lệ cả TP và TN trên tổng.
Vì Precision và Recall nhìn các phần khác nhau của ma trận, chúng có thể cùng cao, cùng thấp, hoặc ngược chiều — phụ thuộc cách mô hình phân bố lỗi. Luôn xem cả ba con số để tránh mù điểm.
Công thức ngón tay cái: khi FP và FN có chi phí khác nhau
Nếu một lỗi FN tốn chi phí CFN và một lỗi FP tốn CFP, chi phí kỳ vọng trên mỗi dự đoán là:
Khi bạn không chắc “nên ưu tiên Precision hay Recall”, hãy ước lượng hai con số CFN và CFP:
CFN: 10 000 (tổn thương sức khoẻ nặng, mất thời gian vàng)
CFP: 200 (một lượt xét nghiệm bổ sung)
C_FN / C_FP = 50 → hạ ngưỡng, ưu tiên Recall rất cao.
CFN: 1 (chỉ là cơ hội bán hàng bị bỏ qua)
CFP: 5 (slot gợi ý trên trang chủ là tài nguyên khan hiếm)
C_FN / C_FP ≈ 0.2 → nâng ngưỡng, ưu tiên Precision cao.
Ma trận nhầm lẫn là cánh cửa đầu tiên để hiểu hiệu suất phân loại. Khi bạn đã quen, hãy xem thêm hồi quy logistic — mô hình sinh ra điểm xác suất mà chúng ta đang đặt ngưỡng ở đây. Sau đó cross-validation giúp bạn ước lượng các chỉ số một cách ổn định, không bị lừa bởi một tập test may mắn.
- Mỗi dự đoán rơi vào đúng một trong bốn ô: TP, FP, FN, TN. Ma trận này là nguồn gốc của mọi chỉ số.
- Accuracy có thể lừa bạn khi dữ liệu mất cân bằng — hãy luôn nhìn Precision, Recall cùng lúc.
- Precision = 'khi tôi báo dương, tôi đúng bao nhiêu?'. Recall = 'trong các ca dương thật, tôi bắt được bao nhiêu?'.
- Ngưỡng là cái nút trực tiếp: nâng lên → Precision tăng, Recall giảm. Hạ xuống → Recall tăng, Precision giảm.
- Chọn metric khớp chi phí thật: y tế → Recall, gợi ý sản phẩm → Precision, nhiều bài toán chung → F1.
Kiểm tra hiểu biết
Một bộ lọc spam đạt 99% accuracy trên 1000 email, nhưng chỉ 12 email thực sự là spam. Nếu nó luôn đoán 'không spam', accuracy sẽ là bao nhiêu?