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).
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: Positive | Dự đoán: Negative | |
---|---|---|
Thực tế: Positive | ✅ TP (True Positive) | ❌ FN (False Negative) |
Thực tế: Negative | ❌ FP (False Positive) | ✅ TN (True Negative) |
Từ ma trận này, bạn có thể tính ra nhiều chỉ số đánh giá quan trọng:
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
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
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
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
Khi số lớp > 2 (ví dụ 3 lớp: A, B, C), confusion matrix sẽ là ma trận NxN, với:
Ví dụ:
Pred A | Pred B | Pred C | |
---|---|---|---|
Actual A | 50 | 2 | 3 |
Actual B | 4 | 45 | 1 |
Actual C | 1 | 3 | 49 |
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)