Hướng dẫn how do you find the accuracy of a confusion matrix in python? - làm thế nào để bạn tìm thấy độ chính xác của một ma trận nhầm lẫn trong python?

Ma trận nhầm lẫn - không quá khó hiểu!

Bạn đã từng ở trong một tình huống mà bạn mong đợi mô hình học máy của bạn hoạt động thực sự tốt nhưng nó đã tạo ra một độ chính xác kém? Bạn đã thực hiện tất cả các công việc khó khăn - vậy mô hình phân loại đã sai ở đâu? Làm thế nào bạn có thể sửa cái này?

Có rất nhiều cách để đánh giá hiệu suất của mô hình phân loại của bạn nhưng không có cách nào đứng trước thử nghiệm của thời gian như ma trận nhầm lẫn. Nó giúp chúng tôi đánh giá cách mô hình của chúng tôi thực hiện, nơi nó đã sai và cung cấp cho chúng tôi hướng dẫn để điều chỉnh con đường của chúng tôi.

Hướng dẫn how do you find the accuracy of a confusion matrix in python? - làm thế nào để bạn tìm thấy độ chính xác của một ma trận nhầm lẫn trong python?

Trong bài viết này, chúng tôi sẽ khám phá cách một ma trận nhầm lẫn đưa ra một cái nhìn toàn diện về hiệu suất của mô hình của bạn. Và không giống như tên của nó, bạn sẽ nhận ra rằng một ma trận nhầm lẫn là một khái niệm khá đơn giản nhưng mạnh mẽ. Vì vậy, hãy để Lừa làm sáng tỏ bí ẩn xung quanh ma trận nhầm lẫn!

Hướng dẫn how do you find the accuracy of a confusion matrix in python? - làm thế nào để bạn tìm thấy độ chính xác của một ma trận nhầm lẫn trong python?

Học các sợi dây trong lĩnh vực học máy? Các khóa học này sẽ đưa bạn lên con đường của bạn:

  • Python cho khoa học dữ liệu (Khóa học miễn phí!)
  • Chương trình khởi động máy học

Ở đây, những gì chúng tôi bao gồm:

  • Ma trận nhầm lẫn là gì?
    • Tích cực thực sự
    • Đúng là tiêu cực
    • Sai dương - Lỗi loại 1
    • Sai âm - Lỗi loại 2
  • Tại sao cần một ma trận nhầm lẫn?
  • Chính xác so với nhớ lại
  • F1-score
  • Ma trận nhầm lẫn trong scikit-learn
  • Ma trận nhầm lẫn để phân loại nhiều lớp

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

Câu hỏi triệu đô-sau tất cả, là một ma trận nhầm lẫn?

Một ma trận nhầm lẫn là ma trận N X N được sử dụng để đánh giá hiệu suất của mô hình phân loại, trong đó N là số lượng các lớp đích. Ma trận so sánh các giá trị mục tiêu thực tế với các giá trị được dự đoán bởi mô hình học máy. Điều này cho chúng ta một cái nhìn toàn diện về việc mô hình phân loại của chúng ta hoạt động tốt như thế nào và loại lỗi nào của nó.

Đối với vấn đề phân loại nhị phân, chúng ta sẽ có ma trận 2 x 2 như được hiển thị bên dưới với 4 giá trị:

Hướng dẫn how do you find the accuracy of a confusion matrix in python? - làm thế nào để bạn tìm thấy độ chính xác của một ma trận nhầm lẫn trong python?

Hãy để giải mã Ma trận:

  • Biến đích có hai giá trị: dương hoặc âmPositive or Negative
  • Các cột biểu thị các giá trị thực của biến mục tiêucolumns represent the actual values of the target variable
  • Các hàng biểu thị các giá trị dự đoán của biến mục tiêurows represent the predicted values of the target variable

Nhưng chờ đã - những gì mà TP TP, FP, FN và TN ở đây? Đó là phần quan trọng của một ma trận nhầm lẫn. Hãy để hiểu từng thuật ngữ dưới đây.

Hiểu được sự tích cực thực sự, tiêu cực thực sự, dương tính giả và âm tính giả trong ma trận nhầm lẫn

Tích cực thực sự (TP) & NBSP;

  • Giá trị dự đoán phù hợp với giá trị thực
  • Giá trị thực tế là dương và mô hình dự đoán giá trị dương

Đúng là âm (TN) & NBSP;

  • Giá trị dự đoán phù hợp với giá trị thực
  • Giá trị thực tế là dương và mô hình dự đoán giá trị dương

Đúng là âm (TN) & NBSP;

  • Giá trị thực tế là âm và mô hình dự đoán giá trị âm
  • Sai dương (FP) - Lỗi loại 1
  • Giá trị dự đoán đã được dự đoán saiType 1 error

Giá trị thực tế là âm nhưng mô hình dự đoán giá trị dương

  • Giá trị thực tế là âm và mô hình dự đoán giá trị âm
  • Sai dương (FP) - Lỗi loại 1
  • Giá trị dự đoán đã được dự đoán saiType 2 error

Giá trị thực tế là âm nhưng mô hình dự đoán giá trị dương

Hướng dẫn how do you find the accuracy of a confusion matrix in python? - làm thế nào để bạn tìm thấy độ chính xác của một ma trận nhầm lẫn trong python?

Còn được gọi là lỗi loại 1

  • Sai âm (FN) - Lỗi loại 2
  • Giá trị thực tế là dương nhưng mô hình dự đoán giá trị âm
  • Còn được gọi là lỗi loại 2
  • Hãy để tôi cho bạn một ví dụ để hiểu rõ hơn điều này. Giả sử chúng tôi đã có một bộ dữ liệu phân loại với 1000 điểm dữ liệu. Chúng tôi phù hợp với một trình phân loại trên nó và nhận ma trận nhầm lẫn dưới đây:

Các giá trị khác nhau của ma trận nhầm lẫn sẽ như sau:

Tích cực thực (TP) = 560; có nghĩa là 560 điểm dữ liệu lớp dương được phân loại chính xác theo mô hình

Đúng là âm (TN) = 330; có nghĩa là 330 điểm dữ liệu lớp âm được phân loại chính xác theo mô hình

Sai dương (FP) = 60; Có nghĩa là 60 điểm dữ liệu lớp tiêu cực được phân loại không chính xác là thuộc lớp dương tính bởi mô hình

Sai âm (FN) = 50; Có nghĩa là 50 điểm dữ liệu lớp dương được phân loại không chính xác là thuộc lớp âm của mô hình

Điều này hóa ra là một trình phân loại khá tốt cho bộ dữ liệu của chúng tôi xem xét số lượng các giá trị âm tích cực và đúng tương đối lớn hơn.

Hãy nhớ các lỗi loại 1 và loại 2. Người phỏng vấn thích hỏi sự khác biệt giữa hai người này! Bạn có thể chuẩn bị cho tất cả điều này tốt hơn từ khóa học máy học của chúng tôi trực tuyếnimbalanced dataset. There are 947 data points for the negative class and 3 data points for the positive class. This is how we’ll calculate the accuracy:

Hướng dẫn how do you find the accuracy of a confusion matrix in python? - làm thế nào để bạn tìm thấy độ chính xác của một ma trận nhầm lẫn trong python?

Hãy cùng xem cách thức thực hiện mô hình của chúng tôi:

Hướng dẫn how do you find the accuracy of a confusion matrix in python? - làm thế nào để bạn tìm thấy độ chính xác của một ma trận nhầm lẫn trong python?

Tổng giá trị kết quả là:

TP = 30, TN = 930, FP = 30, FN = 10

Vì vậy, độ chính xác cho mô hình của chúng tôi hóa ra là:

Hướng dẫn how do you find the accuracy of a confusion matrix in python? - làm thế nào để bạn tìm thấy độ chính xác của một ma trận nhầm lẫn trong python?

96%! Không tệ!

Nhưng nó đang cho ý tưởng sai về kết quả. Nghĩ về nó.

Mô hình của chúng tôi đang nói rằng tôi có thể dự đoán người bệnh 96% thời gian. Tuy nhiên, nó đang làm ngược lại. Đó là dự đoán những người sẽ không bị bệnh với độ chính xác 96% trong khi người bệnh đang lây lan virus!

Bạn có nghĩ rằng đây là một số liệu chính xác cho mô hình của chúng tôi với mức độ nghiêm trọng của vấn đề? Chúng ta có nên đo lường có bao nhiêu trường hợp tích cực mà chúng ta có thể dự đoán chính xác để bắt giữ sự lây lan của virus truyền nhiễm? Hoặc có thể, trong số các trường hợp dự đoán chính xác, có bao nhiêu trường hợp tích cực để kiểm tra độ tin cậy của mô hình của chúng tôi?

Đây là nơi chúng ta bắt gặp khái niệm kép về độ chính xác và thu hồi.

Độ chính xác so với thu hồi

Độ chính xác cho chúng ta biết có bao nhiêu trường hợp dự đoán chính xác thực sự hóa ra là tích cực.

Đây là cách tính toán độ chính xác:

Hướng dẫn how do you find the accuracy of a confusion matrix in python? - làm thế nào để bạn tìm thấy độ chính xác của một ma trận nhầm lẫn trong python?

Điều này sẽ xác định liệu mô hình của chúng tôi có đáng tin cậy hay không.

Nhớ lại cho chúng tôi biết có bao nhiêu trường hợp tích cực thực tế mà chúng tôi có thể dự đoán chính xác với mô hình của chúng tôi.

Và đây là cách mà chúng ta có thể tính toán thu hồi:

Hướng dẫn how do you find the accuracy of a confusion matrix in python? - làm thế nào để bạn tìm thấy độ chính xác của một ma trận nhầm lẫn trong python?

Hướng dẫn how do you find the accuracy of a confusion matrix in python? - làm thế nào để bạn tìm thấy độ chính xác của một ma trận nhầm lẫn trong python?

Chúng tôi có thể dễ dàng tính toán độ chính xác và nhớ lại cho mô hình của mình bằng cách cắm các giá trị vào các câu hỏi trên:

Hướng dẫn how do you find the accuracy of a confusion matrix in python? - làm thế nào để bạn tìm thấy độ chính xác của một ma trận nhầm lẫn trong python?

50% phần trăm của các trường hợp dự đoán chính xác hóa ra là các trường hợp tích cực. Trong khi 75% các tích cực được dự đoán thành công bởi mô hình của chúng tôi. Đáng kinh ngạc!

Độ chính xác là một số liệu hữu ích trong trường hợp dương tính giả là mối quan tâm cao hơn so với âm tính giả.

Độ chính xác rất quan trọng trong các hệ thống khuyến nghị âm nhạc hoặc video, các trang web thương mại điện tử, v.v ... Kết quả sai có thể dẫn đến sự khuấy động của khách hàng và có hại cho doanh nghiệp.

Nhớ lại là một số liệu hữu ích trong các trường hợp âm tính giả v chí dương tính giả.

Nhớ lại rất quan trọng trong các trường hợp y tế khi không quan trọng liệu chúng ta có đưa ra báo động sai nhưng các trường hợp tích cực thực tế không nên không bị phát hiện!

Trong ví dụ của chúng tôi, việc thu hồi sẽ là một số liệu tốt hơn vì chúng tôi không muốn vô tình xuất viện một người bị nhiễm bệnh và để họ trộn lẫn với dân số khỏe mạnh do đó lây lan virus truyền nhiễm. Bây giờ bạn có thể hiểu tại sao độ chính xác là một số liệu xấu cho mô hình của chúng tôi.

Nhưng sẽ có những trường hợp không có sự khác biệt rõ ràng giữa việc chính xác là quan trọng hơn hay nhớ lại. Chúng ta nên làm gì trong những trường hợp đó? Chúng tôi kết hợp chúng!

F1-score

Trong thực tế, khi chúng tôi cố gắng tăng độ chính xác của mô hình của chúng tôi, việc thu hồi sẽ giảm và ngược lại. Điểm số F1 nắm bắt cả hai xu hướng trong một giá trị duy nhất:

Hướng dẫn how do you find the accuracy of a confusion matrix in python? - làm thế nào để bạn tìm thấy độ chính xác của một ma trận nhầm lẫn trong python?

Điểm số F1 là một phương tiện hài hòa của độ chính xác và thu hồi, và vì vậy nó đưa ra một ý tưởng kết hợp về hai số liệu này. Đó là tối đa khi độ chính xác bằng với thu hồi., and so it gives a combined idea about these two metrics. It is maximum when Precision is equal to Recall.

Nhưng có một cái bắt ở đây. Khả năng diễn giải của điểm F1 là kém. Điều này có nghĩa là chúng tôi không biết những gì phân loại của chúng tôi đang tối đa hóa - độ chính xác hoặc thu hồi? Vì vậy, chúng tôi sử dụng nó kết hợp với các số liệu đánh giá khác cho chúng tôi một bức tranh hoàn chỉnh về kết quả.

Ma trận nhầm lẫn bằng cách sử dụng Scikit-learn trong Python

Bạn biết lý thuyết - bây giờ hãy để Lừa đưa nó vào thực tế. Hãy để mã hóa một ma trận nhầm lẫn với thư viện scikit-learn (sklearn) trong mã python.python:
Python Code:

Sklearn có hai chức năng lớn: FIGHSION_MATRIX () và phân loại_report ().confusion_matrix() and classification_report().

  • Sklearn confusion_matrix () trả về các giá trị của ma trận nhầm lẫn. Đầu ra, tuy nhiên, hơi khác so với những gì chúng tôi đã nghiên cứu cho đến nay. Nó lấy các hàng làm giá trị thực và các cột là giá trị dự đoán. Phần còn lại của khái niệm vẫn giữ nguyên.confusion_matrix() returns the values of the Confusion matrix. The output is, however, slightly different from what we have studied so far. It takes the rows as Actual values and the columns as Predicted values. The rest of the concept remains the same.
  • Sklearn phân loại_report () đầu ra độ chính xác, thu hồi và điểm F1 cho mỗi lớp mục tiêu. Ngoài ra, nó cũng có một số giá trị bổ sung: Micro AVG, Macro AVG và AVG có trọng sốclassification_report() outputs precision, recall and f1-score for each target class. In addition to this, it also has some extra values: micro avg, macro avg, and weighted avg

Trung bình Mirco là điểm chính xác/thu hồi/điểm F1 được tính toán cho tất cả các lớp. is the precision/recall/f1-score calculated for all the classes.

Hướng dẫn how do you find the accuracy of a confusion matrix in python? - làm thế nào để bạn tìm thấy độ chính xác của một ma trận nhầm lẫn trong python?

Trung bình vĩ mô là trung bình của chính xác/thu hồi/điểm F1. is the average of precision/recall/f1-score.

Hướng dẫn how do you find the accuracy of a confusion matrix in python? - làm thế nào để bạn tìm thấy độ chính xác của một ma trận nhầm lẫn trong python?

Trung bình có trọng số chỉ là trung bình có trọng số của chính xác/thu hồi/điểm F1. is just the weighted average of precision/recall/f1-score.

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

Làm thế nào một ma trận nhầm lẫn sẽ hoạt động cho một vấn đề phân loại đa lớp? Chà, đừng gãi đầu! Chúng tôi sẽ có một cái nhìn về điều đó ở đây.

Hãy cùng rút ra một ma trận nhầm lẫn cho một vấn đề đa dạng, nơi chúng ta phải dự đoán liệu một người yêu thích Facebook, Instagram hay Snapchat. Ma trận nhầm lẫn sẽ là ma trận 3 x 3 như thế này:

Hướng dẫn how do you find the accuracy of a confusion matrix in python? - làm thế nào để bạn tìm thấy độ chính xác của một ma trận nhầm lẫn trong python?

Tích cực thực sự, âm tính đúng, dương tính giả và âm tính giả cho mỗi lớp sẽ được tính toán bằng cách thêm các giá trị ô như sau:

Hướng dẫn how do you find the accuracy of a confusion matrix in python? - làm thế nào để bạn tìm thấy độ chính xác của một ma trận nhầm lẫn trong python?

Đó là nó! Bạn đã sẵn sàng để giải mã bất kỳ ma trận nhầm lẫn n x n nào!

Ghi chú kết thúc

Và đột nhiên ma trận nhầm lẫn không còn khó hiểu nữa! Bài viết này sẽ cung cấp cho bạn một cơ sở vững chắc về cách Intepret và sử dụng ma trận nhầm lẫn cho các thuật toán phân loại trong học máy.

Chúng tôi sẽ sớm đưa ra một bài viết về đường cong AUC-ROC và tiếp tục thảo luận ở đó. Cho đến lần tiếp theo, don lồng mất hy vọng trong mô hình phân loại của bạn, bạn có thể đang sử dụng số liệu đánh giá sai!

Làm thế nào để bạn tìm thấy độ chính xác từ ma trận nhầm lẫn trong mã Python?

Bây giờ chúng tôi sẽ tạo ra các giá trị thực tế và dự đoán bằng cách sử dụng Numpy:..
nhập khẩu numpy ..
thực tế = numpy.random.binomial (1, 0,9, kích thước = 1000) ....
từ các số liệu nhập khẩu sklearn ..
cm_display = metrics.confusionmatrixdisplay (confusion_matrix = confusion_matrix, display_labels = [false, true]).
Nhập matplotlib.pyplot như plt ..

Làm thế nào để bạn tìm thấy độ chính xác của một ma trận nhầm lẫn?

Độ chính xác được tính bằng tổng số của hai dự đoán chính xác (TP + TN) chia cho tổng số dữ liệu (p + n).

Làm thế nào để python tính toán độ chính xác?

Cách tính độ chính xác cân bằng trong Python bằng Sklearn..
Độ chính xác cân bằng = (độ nhạy + độ đặc hiệu) / 2 ..
Độ chính xác cân bằng = (0,75 + 9868) / 2 ..
Độ chính xác cân bằng = 0,8684 ..

Độ chính xác trong ma trận nhầm lẫn là gì?

Độ chính xác phân loại là tỷ lệ của các dự đoán chính xác cho tổng dự đoán được thực hiện.Phân loại độ chính xác = dự đoán chính xác / tổng dự đoán.1. Phân loại độ chính xác = dự đoán chính xác / tổng dự đoán.Nó thường được trình bày dưới dạng phần trăm bằng cách nhân kết quả với 100.the ratio of correct predictions to total predictions made. classification accuracy = correct predictions / total predictions. 1. classification accuracy = correct predictions / total predictions. It is often presented as a percentage by multiplying the result by 100.