Học máy - Ma trận nhầm lẫn
Trên trang này, W3schools.com hợp tác với Học viện Khoa học Dữ liệu NYC để cung cấp nội dung đào tạo kỹ thuật số cho sinh viên của chúng tôi.
Ma trận nhầm lẫn là gì?
Đây là một bảng được sử dụng trong các bài toán phân loại để đánh giá lỗi được tạo ra ở đâu trong mô hình.
Các hàng đại diện cho các lớp thực tế mà kết quả lẽ ra phải có. Trong khi các cột thể hiện những dự đoán mà chúng tôi đã đưa ra. Sử dụng bảng này có thể dễ dàng nhận ra dự đoán nào sai.
Tạo ma trận nhầm lẫn
Ma trận nhầm lẫn có thể được tạo ra bằng các dự đoán được thực hiện từ hồi quy logistic.
Hiện tại, chúng tôi sẽ tạo các giá trị thực tế và dự đoán bằng cách sử dụng NumPy:
import numpy
Tiếp theo, chúng ta sẽ cần tạo các số cho giá trị "thực tế" và "dự đoán".
actual = numpy.random.binomial(1, 0.9, size = 1000)
predicted = numpy.random.binomial(1, 0.9, size = 1000)
Để tạo ma trận nhầm lẫn, chúng ta cần nhập số liệu từ mô-đun sklearn.
from sklearn import metrics
Sau khi nhập số liệu, chúng tôi có thể sử dụng hàm ma trận nhầm lẫn trên các giá trị thực tế và dự đoán của mình.
confusion_matrix = metrics.confusion_matrix(actual, predicted)
Để tạo một màn hình hiển thị trực quan dễ hiểu hơn, chúng ta cần chuyển đổi bảng thành màn hình ma trận nhầm lẫn.
cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = [0, 1])
Hiển thị trực quan màn hình yêu cầu chúng tôi nhập pyplot từ matplotlib.
import matplotlib.pyplot as plt
Cuối cùng để hiển thị đồ thị chúng ta có thể sử dụng các hàmplot() và show() từ pyplot.
cm_display.plot()
plt.show()
Xem toàn bộ ví dụ thực tế:
Ví dụ
import matplotlib.pyplot as plt
import numpy
from sklearn import metrics
actual = numpy.random.binomial(1,.9,size = 1000)
predicted =
numpy.random.binomial(1,.9,size = 1000)
confusion_matrix =
metrics.confusion_matrix(actual, predicted)
cm_display =
metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix,
display_labels = [0, 1])
cm_display.plot()
plt.show()
Kết quả
Chạy ví dụ »Kết quả được giải thích
Ma trận nhầm lẫn được tạo có bốn góc phần tư khác nhau:
Âm tính thực sự (Góc phần tư trên cùng bên trái)
Dương tính giả (Góc phần tư trên cùng bên phải)
Âm tính giả (Góc phần tư dưới cùng bên trái)
Tích cực thực sự (Góc phần tư dưới cùng bên phải)
Đúng có nghĩa là các giá trị đã được dự đoán chính xác, Sai có nghĩa là đã xảy ra lỗi hoặc dự đoán sai.
Bây giờ chúng ta đã tạo xong Ma trận nhầm lẫn, chúng ta có thể tính toán các thước đo khác nhau để định lượng chất lượng của mô hình. Đầu tiên, hãy nhìn vào Độ chính xác.
QUẢNG CÁO
Số liệu đã tạo
Ma trận cung cấp cho chúng ta nhiều số liệu hữu ích giúp chúng ta đánh giá mô hình phân loại.
Các thước đo khác nhau bao gồm: Độ chính xác, Độ chính xác, Độ nhạy (Thu hồi), Độ đặc hiệu và điểm F, được giải thích bên dưới.
Sự chính xác
Độ chính xác đo lường tần suất mô hình đúng.
Làm thế nào để tính toán
(Dương thực + Âm tính thực) / Tổng số dự đoán
Độ chính xác
Trong số những điều tích cực được dự đoán, bao nhiêu phần trăm là thực sự tích cực?
Làm thế nào để tính toán
Dương tính thật / (Dương tính thật + Dương tính giả)
Độ chính xác không đánh giá các trường hợp tiêu cực được dự đoán chính xác:
Độ nhạy (Thu hồi)
Trong số tất cả các trường hợp dương tính, bao nhiêu phần trăm được dự đoán là dương tính?
Độ nhạy (đôi khi được gọi là Thu hồi) đo lường mức độ dự đoán tích cực của mô hình.
Điều này có nghĩa là nó xem xét kết quả dương tính thực và âm tính giả (là những kết quả tích cực đã được dự đoán sai là âm tính).
Làm thế nào để tính toán
Dương tính thật / (Dương tính thật + Âm tính giả)
Độ nhạy rất tốt trong việc hiểu mô hình dự đoán điều gì đó là tích cực tốt như thế nào:
Tính đặc hiệu
Mô hình dự đoán kết quả tiêu cực tốt đến mức nào?
Độ đặc hiệu tương tự như độ nhạy, nhưng nhìn nó từ góc độ kết quả âm tính.
Làm thế nào để tính toán
Âm tính thật / (Âm tính thật + Dương tính giả)
Vì nó hoàn toàn trái ngược với Recall nên chúng tôi sử dụng hàm recall_score, lấy nhãn vị trí ngược lại:
điểm F
Điểm F là "trung bình hài hòa" của độ chính xác và độ nhạy.
Nó xem xét cả trường hợp dương tính giả và âm tính giả và phù hợp với các tập dữ liệu mất cân bằng.
Làm thế nào để tính toán
2 * ((Độ chính xác * Độ nhạy) / (Độ chính xác + Độ nhạy))
Điểm này không tính đến các giá trị Âm tính Thực sự:
Tất cả các tính toán trong một:
Ví dụ
#metrics
print({"Accuracy":Accuracy,"Precision":Precision,"Sensitivity_recall":Sensitivity_recall,"Specificity":Specificity,"F1_score":F1_score})
Chạy ví dụ »