Confusion Matrix (Ma trận nhầm lẫn) là một công cụ cực kỳ quan trọng trong Machine Learning, đặc biệt trong các bài toán phân loại (classification). Nó giúp đánh giá hiệu suất của một mô hình phân loại bằng cách so sánh giá trị dự đoán (predicted) với giá trị thực tế (actual/true label).


📊 1. Cấu Trúc Của Confusion Matrix

Với một bài toán phân loại nhị phân (binary classification), confusion matrix có dạng 2x2 như sau:

Dự đoán: PositiveDự đoán: Negative
Thực tế: Positive✅ TP (True Positive)❌ FN (False Negative)
Thực tế: Negative❌ FP (False Positive)✅ TN (True Negative)

Ý nghĩa:

  • TP (True Positive): Dự đoán đúng là Positive.
  • TN (True Negative): Dự đoán đúng là Negative.
  • FP (False Positive): Dự đoán sai là Positive (thực tế là Negative).
  • FN (False Negative): Dự đoán sai là Negative (thực tế là Positive).

⚙️ 2. Các Chỉ Số Đánh Giá Dựa Trên Confusion Matrix

Từ ma trận này, bạn có thể tính ra nhiều chỉ số đánh giá quan trọng:

✔️ Accuracy (Độ chính xác)

Tỉ lệ dự đoán đúng trên tổng số mẫu

Accuracy=TP+TNTP+TN+FP+FNtext{Accuracy} = frac{TP + TN}{TP + TN + FP + FN}Accuracy=TP+TN+FP+FNTP+TN​


✔️ Precision (Độ chính xác của Positive)

Trong tất cả những mẫu được dự đoán là Positive, có bao nhiêu là đúng?

Precision=TPTP+FPtext{Precision} = frac{TP}{TP + FP}Precision=TP+FPTP​


✔️ Recall (Sensitivity - Độ nhạy)

Trong tất cả các mẫu thực sự là Positive, mô hình phát hiện được bao nhiêu?

Recall=TPTP+FNtext{Recall} = frac{TP}{TP + FN}Recall=TP+FNTP​


✔️ F1 Score

Trung bình điều hòa giữa Precision và Recall

F1 Score=2×Precision×RecallPrecision+Recalltext{F1 Score} = 2 times frac{text{Precision} times text{Recall}}{text{Precision} + text{Recall}}F1 Score=2×Precision+RecallPrecision×Recall​


🧠 3. Tại Sao Nên Dùng Confusion Matrix?

  • Không bị đánh lừa bởi Accuracy: Nếu dữ liệu bị mất cân bằng (ví dụ 90% Negative, 10% Positive), mô hình đoán toàn bộ là Negative vẫn có 90% accuracy!
  • Cho cái nhìn chi tiết hơn: Biết mô hình đang nhầm lẫn ở đâu – Positive thành Negative hay ngược lại.
  • Cơ sở để tối ưu mô hình: Điều chỉnh threshold, xử lý mất cân bằng, chọn thuật toán phù hợp.

📌 4. Mở Rộng Cho Nhiều Lớp (Multiclass Classification)

Khi số lớp > 2 (ví dụ 3 lớp: A, B, C), confusion matrix sẽ là ma trận NxN, với:

  • Hàng: giá trị thực tế (actual)
  • Cột: giá trị dự đoán (predicted)

Ví dụ:

Pred APred BPred C
Actual A5023
Actual B4451
Actual C1349

🛠 5. Cách Tạo Confusion Matrix Trong Python (Scikit-learn)

from sklearn.metrics import confusion_matrix

y_true = [0, 1, 0, 1, 0, 1, 1]
y_pred = [0, 0, 0, 1, 1, 1, 1]

cm = confusion_matrix(y_true, y_pred)
print(cm)

✅ Kết Luận

  • Confusion Matrix là công cụ phân tích lỗi dự đoán rất hữu ích trong phân loại.
  • Không nên chỉ dựa vào accuracy để đánh giá mô hình.
  • Nên kết hợp các chỉ số như Precision, Recall, và F1 để có đánh giá toàn diện.