Ma trận nhầm lẫn trong học máy với VÍ DỤ

⚡ Tóm tắt thông minh

Ma trận nhầm lẫn là một bảng đo lường hiệu suất cho các mô hình phân loại, so sánh các nhãn dự đoán với các nhãn thực tế đã biết, cho thấy chính xác những lớp nào mà bộ phân loại nhận diện đúng và những lớp nào bị sai.

  • 🔘 Bốn kết quả: Kết quả dương tính thật, âm tính thật, dương tính giả và âm tính giả đều nằm trong mỗi ô của ma trận nhị phân.
  • ☑️ Các loại lỗi: Kết quả dương tính giả là lỗi loại I, trong khi kết quả âm tính giả là lỗi loại II.
  • Các chỉ số dẫn xuất: Độ chính xác, độ lặp lại, độ đặc hiệu và điểm F1 đều được tính từ bốn chỉ số giống nhau.
  • 🧪 Vượt xa độ chính xác: Trên dữ liệu không cân bằng, độ chính xác làm tăng giá trị của mô hình, trong khi ma trận cho thấy mô hình thực sự thất bại ở lớp nào.
  • 🛠️ Chế độ xem đa lớp: N lớp tạo ra một lưới N×N, trong đó đường chéo chứa tất cả các dự đoán chính xác.
  • ⚙️ Python tuyến đường: scikit-learn xây dựng cùng một bảng chỉ trong hai dòng lệnh bằng cách sử dụng confusion_matrix() và classification_report().

Ma trận nhầm lẫn trong học máy kèm ví dụ

Ma trận nhầm lẫn là gì?

A ma trận hỗn loạn là một kỹ thuật đo lường hiệu suất cho học máy Phân loại. Đó là một bảng thể hiện hiệu suất của mô hình phân loại trên một tập dữ liệu thử nghiệm mà giá trị thực đã được biết trước. Thuật ngữ ma trận nhầm lẫn khá đơn giản, nhưng các thuật ngữ được xây dựng dựa trên nó có thể gây nhầm lẫn, vì vậy mỗi phần được giải thích bên dưới bằng ngôn ngữ dễ hiểu.

Ma trận này áp dụng cho bất kỳ bộ phân loại có giám sát — hồi quy logistic, cây quyết định, một Mô hình Naive Bayes hoặc một mạng lưới thần kinh sâu — bởi vì nó chỉ so sánh hai cột nhãn: những gì mô hình dự đoán và những gì thực sự đúng.

Bốn kết quả của ma trận nhầm lẫn

Ma trận nhầm lẫn trực quan hóa độ chính xác của bộ phân loại bằng cách so sánh các lớp thực tế và lớp dự đoán. Ma trận nhầm lẫn nhị phân bao gồm các hình vuông:

Bảng nhầm lẫn nhị phân hiển thị các góc phần tư TP, FP, FN và TN.
Bảng nhầm lẫn

Bảng trên thể hiện bốn ô vuông mà mọi ma trận nhầm lẫn nhị phân đều chứa:

  • TP: Đúng dương tính: Các giá trị dự đoán được dự đoán chính xác là giá trị dương thực tế
  • FP: Kết quả dương tính giả: Các giá trị dự đoán không chính xác được dự đoán thành giá trị dương thực tế, tức là các giá trị âm được dự đoán thành dương.
  • FN: Kết quả âm tính giả: Các giá trị dương được dự đoán là âm.
  • TN: Âm tính thật: Các giá trị dự đoán chính xác được dự đoán là giá trị âm thực tế.

Thống kê đặt tên riêng cho hai ô lỗi. Kết quả dương tính giả là... Lỗi loại I — Mô hình đã đưa ra cảnh báo lẽ ra không bao giờ nên được đưa ra. Kết quả âm tính giả là một lỗi loại II — Mô hình im lặng khi đáng lẽ ra nó phải báo động. Việc biết yếu tố nào tốn kém hơn đối với vấn đề của bạn sẽ quyết định chỉ số nào bạn cần điều chỉnh sau này.

Bạn có thể tính toán độ chính xác của bài kiểm tra từ ma trận nhầm lẫn, như công thức dưới đây cho thấy:

Công thức tính độ chính xác được suy ra từ bốn kết quả ma trận nhầm lẫn.

Ví dụ về Ma trận nhầm lẫn

Ma trận nhầm lẫn (Confusion Matrix) là một phương pháp học máy hữu ích cho phép bạn đo lường Độ thu hồi (Recall), Độ chính xác (Precision), Độ đúng (Accuracy) và đường cong AUC-ROC. Ví dụ về quả bóng đá bên dưới minh họa ý nghĩa của các thuật ngữ Dương tính thật (True Positive), Âm tính thật (True Negative), Dương tính giả (False Positive) và Âm tính giả (False Negative) trong ngôn ngữ thường ngày.

Tích cực thực sự:

Bạn đã dự đoán những điều tích cực và dự đoán đó đã trở thành sự thật. Ví dụ, bạn đã dự đoán rằng Pháp sẽ vô địch World Cup, và họ đã thắng.

Tiêu cực thực sự:

Bạn đã dự đoán điều tiêu cực, và điều đó cũng đúng. Bạn đã dự đoán rằng Anh sẽ không thắng, và họ đã thua.

Dương tính giả:

Dự đoán của bạn là tích cực và nó sai.

Bạn đã dự đoán rằng Anh sẽ thắng, nhưng họ đã thua.

Âm tính giả:

Dự đoán của bạn là tiêu cực, và kết quả chứng minh điều đó là sai.

Bạn đã dự đoán rằng Pháp sẽ không thắng, nhưng họ đã thắng.

Bạn nên nhớ rằng từ đầu tiên mô tả liệu dự đoán đúng hay sai (Đúng hoặc Sai) và từ thứ hai mô tả điều mà mô hình dự đoán (Tích cực hoặc Tiêu cực).

Cách tính ma trận nhầm lẫn

Dưới đây là quy trình từng bước để tính ma trận nhầm lẫn trong khai thác dữ liệu:

  • Bước 1) Đầu tiên, bạn cần một tập dữ liệu thử nghiệm cùng với các giá trị kết quả mong đợi.
  • Bước 2) Dự đoán tất cả các hàng trong tập dữ liệu thử nghiệm.
  • Bước 3) So sánh kết quả mong đợi với dự đoán và thống kê:
    1. Tổng số dự đoán đúng của mỗi lớp.
    2. Tổng số dự đoán sai của mỗi lớp.

Sau đó, những con số này được sắp xếp theo các phương pháp dưới đây:

  • Mỗi hàng trong ma trận tương ứng với một lớp học thực tế.
  • Mỗi cột trong ma trận tương ứng với một lớp dự đoán.
  • Tổng số lần phân loại đúng và sai được nhập vào bảng.
  • Tổng số dự đoán chính xác cho một lớp sẽ được điền vào ô nằm giữa hàng thực tế của lớp đó và cột dự đoán của chính lớp đó — tức là đường chéo.
  • Tổng số dự đoán sai cho một lớp sẽ được ghi vào hàng thực tế tương ứng với giá trị của lớp đó và cột dự đoán của lớp mà mô hình đã chọn thay thế.

Vai trò của hàng và cột chỉ là quy ước chứ không phải là quy luật, và một số công cụ vẽ đồ thị sẽ đảo ngược bố cục, vì vậy hãy luôn đọc nhãn trục trước khi diễn giải ma trận. Hướng được sử dụng ở đây — thực tế trên hàng, dự đoán trên cột — là hướng mà scikit-learn tạo ra.

Các thuật ngữ quan trọng khác sử dụng ma trận nhầm lẫn

Khi bốn yếu tố chính đã được xác định, một nhóm các thuật ngữ phụ sẽ mô tả các phần khác nhau của cùng một bảng:

  • Giá trị tiên đoán dương (PPV): Điều này rất gần với độ chính xác. Một điểm khác biệt đáng kể giữa hai thuật ngữ là PPV tính đến tỷ lệ hiện mắc. Trong trường hợp các nhóm hoàn toàn cân bằng, giá trị dự đoán dương tính (PPV) cũng giống như độ chính xác.
  • Tỷ lệ lỗi không: Thuật ngữ này xác định tần suất dự đoán sai của bạn nếu bạn luôn dự đoán đúng lớp đa số. Bạn có thể coi đây là một chỉ số cơ bản để so sánh với bộ phân loại của mình.
  • Điểm F: Điểm F1 là điểm trung bình có trọng số của tỷ lệ dương tính thực (độ thu hồi) và độ chính xác.
  • Đường cong ROC: Đường cong ROC biểu thị tỷ lệ dương tính thực sự so với tỷ lệ dương tính giả ở các điểm cắt khác nhau. Nó cũng thể hiện sự đánh đổi giữa độ nhạy (tỷ lệ thu hồi) và độ đặc hiệu, tức là tỷ lệ âm tính thực sự.
  • Độ chính xác: Số liệu chính xác cho thấy độ chính xác của lớp tích cực. Nó đo lường khả năng dự đoán của lớp tích cực là chính xác.

Công thức tính độ chính xác: số ca dương tính thật chia cho tổng số ca dương tính thật cộng với số ca dương tính giả.

Điểm số tối đa là 1 khi bộ phân loại phân loại hoàn hảo tất cả các giá trị dương. Chỉ số Precision thôi thì không hữu ích lắm vì nó bỏ qua lớp âm. Chỉ số này thường được kết hợp với chỉ số Recall. Recall còn được gọi là độ nhạy hoặc tỷ lệ dương tính thực, và được viết như hình bên dưới.

  • Nhạy cảm: Độ nhạy tính toán tỷ lệ các lớp tích cực được phát hiện chính xác. Chỉ số này cho thấy mô hình nhận diện lớp tích cực tốt đến mức nào.

Công thức tính độ nhạy: số ca dương tính thật chia cho tổng số ca dương tính thật cộng với số ca âm tính giả.

Các chỉ số và công thức ma trận nhầm lẫn

Mỗi chỉ số trên đều được tính toán dựa trên bốn tiêu chí giống nhau, vì vậy việc xem xét chúng cùng với câu hỏi mà mỗi chỉ số trả lời sẽ rất hữu ích.

metric Công thức Câu hỏi nó trả lời Sử dụng nó khi
tính chính xác (TP + TN) / (TP + TN + FP + FN) Tổng cộng có bao nhiêu dự đoán chính xác? Các lớp học tương đối cân bằng.
Độ chính xác TP / (TP + FP) Khi mô hình đưa ra kết quả tích cực, tần suất chính xác là bao nhiêu? Báo động giả rất tốn kém.
Nhớ lại (Độ nhạy) TP / (TP + FN) Trong số tất cả các trường hợp dương tính thực sự, có bao nhiêu trường hợp đã bị phát hiện? Việc bỏ sót kết quả dương tính rất tốn kém.
Tính đặc hiệu TN / (TN + FP) Trong tất cả các trường hợp tiêu cực thực tế, có bao nhiêu trường hợp đã được xóa bỏ? Lớp tiêu cực cũng quan trọng.
Điểm F1 2 × (Độ chính xác × Thu hồi) / (Độ chính xác + Thu hồi) Vậy đâu là sự cân bằng giữa hai yếu tố này? Bạn cần một số cho cả hai

Giả sử bộ lọc thư rác được kiểm tra trên 100 email và cho kết quả TP = 45, FN = 5, FP = 10 và TN = 40. Độ chính xác là (45 + 40) / 100 = 0.85. Độ chính xác lặp lại là 45 / (45 + 10) = 0.82, độ nhạy là 45 / (45 + 5) = 0.90 và độ đặc hiệu là 40 / (40 + 10) = 0.80. Điểm F1 là 0.86.

Những con số đó kể một câu chuyện mà chỉ một chỉ số chính xác duy nhất không thể che giấu: bộ lọc bắt được 90% thư rác thực sự nhưng lại cách ly sai một trong năm email hợp lệ bị gắn cờ. Liệu sự đánh đổi đó có thể chấp nhận được hay không phụ thuộc vào chi phí của mỗi lỗi, đó chính là lý do tại sao ma trận được báo cáo thay vì chỉ riêng độ chính xác.

Ma trận nhầm lẫn để phân loại nhiều lớp

Các bài toán phân loại hiếm khi chỉ dừng lại ở hai nhãn, và ma trận có thể mở rộng mà không thay đổi hình dạng. Đối với N lớp, bảng trở thành một lưới N×N: đường chéo chứa mọi dự đoán chính xác, và mỗi ô ngoài đường chéo ghi lại chính xác lớp nào bị nhầm lẫn với lớp nào khác.

Một mô hình ba lớp phân loại hình ảnh thành mèo, chó và thỏ tạo ra một lưới 3×3. Nếu ô ở hàng “mèo”, cột “chó” chứa giá trị 12, thì có nghĩa là mười hai hình ảnh mèo đã được dán nhãn là chó. Mức độ chi tiết đó là lý do tại sao ma trận hữu ích hơn điểm số: nó chỉ rõ cặp lớp cụ thể mà mô hình không thể phân tách.

Độ chính xác, độ thu hồi và F1 được định nghĩa cho mỗi lớp bằng cách sử dụng quan điểm "một so với phần còn lại", trong đó lớp đang xét là lớp tích cực và tất cả các lớp khác là tiêu cực. Sau đó, các số liệu cho mỗi lớp được kết hợp theo một trong ba cách sau:

  • Trung bình vĩ mô: Tính toán chỉ số cho từng lớp một cách độc lập, sau đó lấy giá trị trung bình không trọng số. Mỗi lớp đều được tính điểm như nhau, vì vậy các lớp hiếm không bị bỏ qua.
  • Trung bình vi mô: Tổng hợp số lượng TP, FP và FN trên tất cả các lớp trước khi tính toán chỉ số. Các lớp lớn chiếm ưu thế, và đối với các bài toán nhãn đơn, độ chính xác vi mô, độ thu hồi vi mô và độ chính xác tổng thể là như nhau.
  • Trung bình có trọng số: Tính điểm trung bình cho mỗi lớp bằng cách sử dụng số lượng trường hợp thực sự của mỗi lớp làm trọng số, điều này giúp duy trì sự mất cân bằng giữa các lớp.

Chọn chế độ macro khi mọi lớp đều quan trọng như nhau, và chọn chế độ weighted khi sự phân bổ lớp phản ánh lưu lượng truy cập thực tế.

Cách tạo ma trận nhầm lẫn trong Python

Thư viện scikit-learn xây dựng toàn bộ bảng từ hai mảng nhãn, vì vậy không cần phải đếm thủ công. Ví dụ dưới đây so sánh mười nhãn thực với mười dự đoán.

from sklearn.metrics import confusion_matrix

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

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

Lệnh gọi trả về một mảng NumPy 2×2, trong đó hàng 0 là lớp âm tính thực tế và hàng 1 là lớp dương tính thực tế:

[[4 1]
 [1 4]]

Đọc mảng theo quy ước của scikit-learn ta được TN = 4 (góc trên bên trái), FP = 1 (góc trên bên phải), FN = 1 (góc dưới bên trái) và TP = 4 (góc dưới bên phải). Giải nén bốn giá trị này trên cùng một dòng sẽ tạo ra bản đồ.ping rõ ràng:

tn, fp, fn, tp = confusion_matrix(y_true, y_pred).ravel()

Để có được độ chính xác, độ thu hồi và F1 cho mọi lớp cùng một lúc, bao gồm cả macro và các giá trị trung bình có trọng số được mô tả ở trên, hãy gọi hàm sau: classification_report() thay vì tính toán từng chỉ số bằng tay:

from sklearn.metrics import classification_report

print(classification_report(y_true, y_pred))

Đối với phiên bản có đồ thị, ConfusionMatrixDisplay.from_predictions(y_true, y_pred) Hiển thị cùng một bảng dưới dạng bản đồ nhiệt có nhãn. Danh sách đầy đủ các tham số, bao gồm labelsnormalize các tùy chọn được ghi lại trong Tài liệu tham khảo về ma trận nhầm lẫn của scikit-learnBước đánh giá tương tự cũng áp dụng cho các mô hình được xây dựng bằng... TensorFlow, bởi vì chỉ số này chỉ phụ thuộc vào các nhãn được dự đoán.

Tại sao bạn cần ma trận nhầm lẫn?

Dưới đây là những ưu điểm và lợi ích của việc sử dụng ma trận nhầm lẫn.

  • Nó cho thấy mô hình phân loại bị nhầm lẫn như thế nào khi đưa ra dự đoán.
  • Ma trận nhầm lẫn không chỉ giúp bạn hiểu rõ các lỗi mà bộ phân loại mắc phải, mà còn cho biết cả các loại lỗi mà nó gây ra.
  • Phân tích chi tiết này giúp bạn khắc phục hạn chế của việc chỉ sử dụng độ chính xác phân loại.
  • Mỗi cột của ma trận nhầm lẫn biểu thị các thể hiện của lớp được dự đoán đó.
  • Mỗi hàng của ma trận nhầm lẫn đại diện cho các thể hiện của lớp thực tế.
  • Nó biến việc đánh giá mô hình thành một quá trình chẩn đoán, chỉ ra cặp lớp cụ thể cần thêm dữ liệu hoặc một đặc trưng tốt hơn.

Giá trị chẩn đoán đó là lý do tại sao ma trận nhầm lẫn lại nằm ở vị trí trung tâm của giai đoạn đánh giá trong bất kỳ quy trình nào. khoa học dữ liệu quy trình làm việc, và tại sao đây thường là bảng đầu tiên được xem xét trước khi một bộ phân loại được đưa vào sản xuất.

Câu Hỏi Thường Gặp

Nếu chỉ có 2% hồ sơ là gian lận, một mô hình dự đoán "không gian lận" mọi lúc sẽ đạt độ chính xác 98% mà không phát hiện ra gì. Ma trận này ngay lập tức cho thấy ô dương tính thật trống rỗng, đó là lý do tại sao độ nhạy (recall) quan trọng hơn độ chính xác (accuracy) trên dữ liệu bị lệch.

Ma trận chuẩn hóa hiển thị tỷ lệ thay vì số liệu thô, thường bằng cách chia mỗi ô cho tổng của hàng đó. Nó giúp so sánh các lớp có kích thước rất khác nhau một cách nhanh chóng, mặc dù nó che giấu kích thước mẫu — vì vậy hãy báo cáo cả hai phiên bản khi các lớp không cân bằng.

Xây dựng lại ma trận ở một số ngưỡng xác suất khác nhau và quan sát sự thay đổi. Hạ thấp ngưỡng sẽ chuyển các bản ghi từ ô âm tính giả sang ô dương tính thật, làm tăng độ thu hồi nhưng cũng làm tăng tỷ lệ dương tính giả. Chọn ngưỡng mà tại đó hỗn hợp lỗi còn lại gây ra chi phí thấp nhất.

Không. Ma trận đếm các kết quả khớp nhãn rời rạc, vì vậy nó cần các danh mục. Kết quả hồi quy là liên tục và được đánh giá bằng các thước đo lỗi như sai số tuyệt đối trung bình hoặc R bình phương. Phân loại mục tiêu liên tục vào các dải là cách duy nhất để làm cho ma trận có ý nghĩa.

Việc triệu hồi thường hiệu quả hơn, bởi vì bỏ sót chẩn đoán sẽ tốn kém hơn nhiều so với một xét nghiệm theo dõi không cần thiết. Do đó, các công cụ sàng lọc được điều chỉnh để giữ tỷ lệ âm tính giả ở mức gần bằng không và chấp nhận một số dương tính giả, mà xét nghiệm xác nhận sẽ loại bỏ sau đó.

Các công cụ đánh giá mô hình tự động hiện nay quét mọi ô ngoài đường chéo, xếp hạng các lỗi nhầm lẫn tốn kém nhất và đề xuất lớp nào cần thêm dữ liệu huấn luyện hoặc nhãn hợp nhất. Chúng cũng tự động quét các ngưỡng, biến việc so sánh ma trận thủ công thành một danh sách rút gọn được xếp hạng.

Trợ lý GitHub Bản nháp này tạo ra lệnh nhập dữ liệu, lệnh gọi chỉ số và biểu đồ bản đồ nhiệt từ một bình luận ngắn. Hãy coi bản nháp này như một điểm khởi đầu — luôn tự mình xác nhận thứ tự trục và đối số nhãn dương, vì ma trận chuyển vị sẽ đảo ngược mọi kết luận.

Đủ lớn để lớp hiếm nhất vẫn lấp đầy hàng của nó với số lượng có thể sử dụng được — một số ít mẫu tạo ra các chỉ số dao động mạnh giữa các lần chạy. Kiểm định chéo, cộng tổng các ma trận trên các fold, cho kết quả ổn định hơn so với việc chỉ chia nhỏ dữ liệu để giữ lại.

Tóm tắt bài viết này với: