Trong các bài toán phân loại, confusion matrix là một bảng đặc biệt được dùng để minh họa hiệu quả của các thuật toán. Bài viết này sẽ cố gắng hiểu hơn về confusion matrix.
Bạn đang xem: Confusion matrix là gì
Xây Dựng NND ưu tiên giữ lại thuật ngữ trong tiếng Anh để bạn đọc dễ dàng tìm kiếm tài liệu tham khảo mà không dịch ra tiếng Việt.
Confusion matrix (CM) là gì?
Để dễ dàng trong việc hiểu hơn về CM, chúng ta hãy xem xét một ví dụ đơn giản. Giả sử ta cần dự đoán kết quả xét nghiệm của 1005 bệnh nhân xem họ có bị ung thư hay không. Dưới đây là những gì mô hình của chúng ta dự đoán:
90 bệnh nhân bị ung thư và tất cả dự đoán này của chúng ta đều đúng.915 bệnh nhân không bị ung thư nhưng thật ra có tới 910 người lại bị trong thực tế.
Để dễ dàng minh họa các kết quả ở trên, chúng ta sử dụng confusion matrix như dưới đây (Câu hỏi: Bệnh nhân này có bị bệnh ung thư không?):
Thực tế (có) | Thực tế (không) | |
Dự đoán (có) | 90 (True Positive) | 0 (False Positive) |
Dự đoán (không) | 910 (False Negative) | 5 (True Negative) |
Có lẽ nó có tên gọi là “confusion matrix” vì khi đọc thông tin và hiểu thông tin mà nó truyền tải, chúng ta có hơi bối rối (confused) một chut, tôi đùa đấy!
Trong bảng trên, có 4 thuật ngữ ta cần để ý đến:
True Positive (TP): những bệnh nhân ta đoán là có bệnh đúng là đang mang bệnh.True Negative (TN): những bệnh nhân ta đoán là không có bệnh đúng là đang khỏe mạnh.False Positive (FP): những bệnh nhân ta đoán là có bệnh thật ra đang khỏe mạnh.False Negative (FN): những bệnh nhân ta đoán là không có bệnh thật ra đang mang bệnh.
FP và FN đôi khi còn được gọi dưới những cái tên khác trong thống kê là Sai lầm loại I (Type I error) và Sai lầm loại II (Type II error).
Bên dưới là một hình minh họa vui cho chúng ta thêm một ví dụ nữa của CM trong việc dự đoán có thai hay không (nguồn).
Câu hỏi: Người này có đang mang thai không?
Giải thích hình ví dụ vui ở trên
True Postive: Rõ ràng trong hình là một phụ nữ có thai vá bác sĩ nói cho cô ấy biết là cô ấy đang có thai. Điều này chứng tỏ dự đoán của bác sĩ là chính xác so với thực tế. Nói cách khác: dự đoán “có” của bác sĩ (Positive) là “đúng” (True).False Negative: Bác sĩ dự đoán chị kia không có thai nhưng thực tế lại có. Đây là một ví dụ của Sai lầm loại II. Nói cách khác: dự đoán “không” của bác sĩ (Negative) là “sai” (False).False Positive: Đàn ông không thể có thai được trong khi bác sĩ lại bảo anh ta có. Đây là Sai lầm loại I. Nói cách khác: dự đoán “có” của bác sĩ (Positive) là “sai” (False).True Negative: Bác sĩ bảo anh kia không có thai, điều này hiển nhiên đúng. Nói cách khác: dự đoán “không” của bác sĩ (False) là “đúng” (True).
Xem thêm: Operation Là Gì – định Nghĩa, Ví Dụ, Giải Thích
Cách nhớ confusion matrix
Trong bảng trên, lúc thì True, lúc thì False, lúc thì Positive, lúc thì Negative. Vậy làm sao chúng ta có thể nhớ được chính xác cái nào là cái nào và ở vị trí nào trong ma trân trên? Dưới đây là một mánh nhỏ để nhớ dựa vào tên gọi của các thuật ngữ.
True/False ý chỉ những gì chúng ta dự đoán đã đúng hay chưa (true or false).Positive/Negative ý chỉ những gì chúng ta dự đoán (có hoặc không).
Nói khác đi, nếu chúng ta thấy chữ “True”, điều đó nghĩa là tất cả những gì chúng ta dự đoán đều đúng hết cả. Nếu chúng ta dự đoán 90 bệnh nhân có bệnh (TP) thì đúng là trong thực tế 90 bệnh nhân đó đang mang bệnh. Còn nếu chúng ta dự đoán có 5 bệnh nhân không mang bệnh (TN) thì trong thực tế đúng là họ đang rất khỏe mạnh.
Ngược lại, nếu ta thấy chữ “False” có nghĩa là những gì chúng ta dự đoán trật hết. Những bệnh nhân ta đoán là có bệnh thì lại không trong thực tế và ngược lại.
Precision / Recall
Với CM, chúng ta sẽ tính được hai đại lượng quan trọng là Precision và Recall.
Precision: đây là tỷ lệ giữa những người thật sự có bệnh so với tất cả các ca được dự đoán là có bệnh. Nói cách khác, có bao nhiêu dự đoán “positive” là thật sự “true” trong thực tế?
$$begin{align}mathrm {precision} = dfrac{mathrm{TP}}{mathrm{TP} + mathrm{FP}} = dfrac{90}{90+0} = 100%.end{align}$$
Rõ ràng, ta chỉ dự đoán 90 người có bệnh và trong thực tế những người này đúng là đang bị bệnh thât. Vậy ra, 100% số người ta dự đoán có bệnh là chính xác!
Recall (đôi khi còn được gọi là Sensitivity): trong những người thực sự có bệnh, bao nhiêu trong số họ được dự đoán đúng bởi mô hình của chúng ta? Nói cách khác, có bao nhiêu dự đoán “positive” đúng là do mô hình của chúng ta đưa ra?
$$begin{align}mathrm {recall} = dfrac{mathrm{TP}}{mathrm{TP} + mathrm{FN}} = dfrac{90}{90+910} = 9%.end{align}$$
Rõ ràng, ta chỉ dự đoán 90 người có bệnh trong khi có tới 1000 người trong thực tế mắc bệnh. Vậy ra, mô hình của chúng ta chỉ có thể dự đoán được 9% số lượng người có bệnh trong thực tế.
Bên dưới là confusion matrix sau khi đã thêm vào precision và recall.
Thực tế (có) | Thực tế (không) | ||
Dự đoán (có) | 90 | 0 | Precision = 100% |
Dự đoán (không) | 910 | 5 | |
Recall = 9% |
Chúng ta có thể hiểu gì về Precision và Recall? Nếu một trong hai cái này có giá trị cao còn cái kia có giá trị thấp (hoặc ngược lại) thì sao? Ý nghĩa của chúng như thế nào?
Precision cao / Recall thấp
Nhìn lại ví dụ ở bảng trên, nếu chúng ta chỉ dựa vào Precision, mô hình của chúng ta thật sự rất tốt (Precision = 100%). Tất cả các ca có bệnh mà chúng ta dự đoán đều chính xác.
Tuy nhiên ngó lại Recall (9%), có tới 910 bệnh nhân bị dự đoán sai và họ không được điều trị. 91% số ca bị nhiễm bệnh sẽ cầm chắc cái chết. Mô hình của chúng ta hoàn toàn rất tệ trong trường hợp này!
Precision thấp / Recall cao
Nếu ngược lại thì sao? Giả sử confusion matrix là bảng dưới đây (câu hỏi: Bệnh nhân có mắc ung thư không?).
Thực tế (có) | Thực tế (không) | ||
Dự đoán (có) | 90 | 910 | Precision = 9% |
Dự đoán (không) | 10 | 5 | |
Recall = 90% |
Trong trường hợp này Precision rất nhỏ nếu đem so với Recall (9% so với 90%). Chúng ta đã dự đoán sai quá nhiều người lành thành người bệnh. Tuy nhiên có vẻ như dự đoán sai này “ít tác hại” hơn là trường hợp trước đó. 90% trường hợp này có thể “bị” hóa trị nhầm nhưng ít ra là có thể họ vẫn sống, trong khi ở trường hợp precision cao/recall thấp, số lượng người không được điều trị quá cao và cầm chắc cái chết sớm!
Tại sao cả Precision và Recall đều quan trọng?
Precision cho chúng ta biết những “dự đoán có” của chúng ta chính xác bao nhiêu (Liệu trong 1000 người ta dự đoán mắc bệnh thì có mấy người thật sự bị?). Tuy nhiên sẽ có một câu hỏi nảy ra trong đầu chúng ta là “Liệu chúng ta có dự đoán thiếu kết quả nào không?” (Ta có bỏ sót bệnh nhân nào đang mắc bệnh mà không dự đoán không?). Recall sẽ cung cấp câu trả lời cho câu hỏi này!
Nếu bạn muốn sửa đổi thuật toán để tăng một trong hai precison và recall, cái còn lại sẽ bị giảm đi.
Xem thêm: Digital Marketing Specialist Là Gì ? 6 Yếu Tố Bạn Nên Biết
Một ví dụ khác. Bạn muốn xây dựng một hệ thống gợi ý sản phẩm trực tuyến. Dự đoán “Positive” trong trường hợp này chính là “Những sản phẩm thật sự thu hút khách hàng“. Mô hình của bạn sẽ hiển thị những sản phẩm liên quan đến sản phẩm mà họ đang xem để họ có thể mua thêm nhiều sản phẩm khác trên trang web bán hàng của bạn (Amazon, Tiki, Lazada,… chẳng hạn).
Nếu precision quá cao trong khi recall lại thấp, những gợi ý của bạn đúng là thu hút được khách hàng nhưng bạn lại bỏ qua quá nhiều sản phẩm tiềm năng khác cũng có khả năng thu hút họ không kém.Ngược lại, nếu precision thấp trong khi recall cao thì bạn sẽ chắc chắn tất cả các sản phẩm tiềm năng sẽ được giới thiệu đến khách hàng. Tuy nhiên, những sản phẩm thừa mứa và vô vị khác cũng sẽ chen chân vào đây và khiến cho khách hàng của bạn không mấy mặn mà, họ có thể đổi sang trang khác để mua!
Chuyên mục: Hỏi Đáp